polardbxengine/plugin/polarx_rpc/protocol/polarx_notice.proto

157 lines
4.7 KiB
Protocol Buffer

/*
* Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of the
* License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
// tell protobuf 3.0 to use protobuf 2.x rules
syntax = "proto2";
// ifdef PROTOBUF_LITE: option optimize_for = LITE_RUNTIME;
// Notices
//
// A notice
//
// * is sent from the server to the client
// * may be global or relate to the current message sequence
package Polarx.Notice;
option java_package = "com.mysql.cj.polarx.protobuf";
import "polarx_datatypes.proto";
// Common Frame for all Notices
//
// ===================================================== =====
// .type value
// ===================================================== =====
// :protobuf:msg:`Polarx.Notice::Warning` 1
// :protobuf:msg:`Polarx.Notice::SessionVariableChanged` 2
// :protobuf:msg:`Polarx.Notice::SessionStateChanged` 3
// ===================================================== =====
//
// :param type: the type of the payload
// :param payload: the payload of the notification
// :param scope: global or local notification
//
message Frame {
enum Scope {
GLOBAL = 1;
LOCAL = 2;
};
enum Type {
WARNING = 1;
SESSION_VARIABLE_CHANGED = 2;
SESSION_STATE_CHANGED = 3;
GROUP_REPLICATION_STATE_CHANGED = 4;
SERVER_HELLO = 5;
};
required uint32 type = 1;
optional Scope scope = 2 [ default = GLOBAL ];
optional bytes payload = 3;
}
// Server-side warnings and notes
//
// ``.scope`` == ``local``
// ``.level``, ``.code`` and ``.msg`` map the content of
//
// .. code-block:: sql
//
// SHOW WARNINGS
//
// ``.scope`` == ``global``
// (undefined) will be used for global, unstructured messages like:
//
// * server is shutting down
// * a node disconnected from group
// * schema or table dropped
//
// ========================================== =======================
// :protobuf:msg:`Polarx.Notice::Frame` field value
// ========================================== =======================
// ``.type`` 1
// ``.scope`` ``local`` or ``global``
// ========================================== =======================
//
// :param level: warning level: Note or Warning
// :param code: warning code
// :param msg: warning message
message Warning {
enum Level {
NOTE = 1;
WARNING = 2;
ERROR = 3;
};
optional Level level = 1 [ default = WARNING ];
required uint32 code = 2;
required string msg = 3;
}
// Notify clients about changes to the current session variables
//
// Every change to a variable that is accessable through:
//
// .. code-block:: sql
//
// SHOW SESSION VARIABLES
//
// ========================================== =========
// :protobuf:msg:`Polarx.Notice::Frame` field value
// ========================================== =========
// ``.type`` 2
// ``.scope`` ``local``
// ========================================== =========
//
// :param namespace: namespace that param belongs to
// :param param: name of the variable
// :param value: the changed value of param
message SessionVariableChanged {
required string param = 1;
optional Polarx.Datatypes.Scalar value = 2;
}
// Notify clients about changes to the internal session state
//
// ========================================== =========
// :protobuf:msg:`Polarx.Notice::Frame` field value
// ========================================== =========
// ``.type`` 3
// ``.scope`` ``local``
// ========================================== =========
//
// :param param: parameter key
// :param value: updated value
message SessionStateChanged {
enum Parameter {
CURRENT_SCHEMA = 1;
ACCOUNT_EXPIRED = 2;
GENERATED_INSERT_ID = 3;
ROWS_AFFECTED = 4;
ROWS_FOUND = 5;
ROWS_MATCHED = 6;
TRX_COMMITTED = 7;
TRX_ROLLEDBACK = 9;
PRODUCED_MESSAGE = 10;
CLIENT_ID_ASSIGNED = 11;
// .. more to be added
}
required Parameter param = 1;
optional Polarx.Datatypes.Scalar value = 2;
}