MXS-2688 Add QC operator QUERY_OP_SET

Allows RWS to unconditionally send all SET-statements to
all servers.
This commit is contained in:
Johan Wikman 2019-09-19 12:15:04 +03:00
parent f46f873dc1
commit f587ec191d
5 changed files with 13 additions and 0 deletions

View File

@ -121,6 +121,7 @@ typedef enum qc_query_op
QUERY_OP_LOAD,
QUERY_OP_REVOKE,
QUERY_OP_SELECT,
QUERY_OP_SET,
QUERY_OP_SHOW,
QUERY_OP_TRUNCATE,
QUERY_OP_UPDATE,

View File

@ -2065,6 +2065,10 @@ int32_t qc_mysql_get_operation(GWBUF* querybuf, int32_t* operation)
*operation = QUERY_OP_REVOKE;
break;
case SQLCOM_SET_OPTION:
*operation = QUERY_OP_SET;
break;
case SQLCOM_SHOW_CREATE:
case SQLCOM_SHOW_CREATE_DB:
case SQLCOM_SHOW_CREATE_FUNC:

View File

@ -2651,6 +2651,7 @@ public:
case TK_SET:
m_status = QC_QUERY_TOKENIZED;
m_type_mask = QUERY_TYPE_GSYSVAR_WRITE;
m_operation = QUERY_OP_SET;
break;
case TK_SHOW:
@ -2883,6 +2884,7 @@ public:
mxb_assert(this_thread.initialized);
m_status = QC_QUERY_PARSED;
m_operation = QUERY_OP_SET; // There will be no SET in case of Oracle's "var := 1".
m_type_mask = 0; // Reset what was set in maxscaleKeyword
switch (kind)

View File

@ -129,3 +129,6 @@ XA PREPARE 'xid';
XA COMMIT 'xid';
XA ROLLBACK 'xid'
XA RECOVER 'xid';
# MXS-2688
SET @saved_cs_client= @@character_set_client;

View File

@ -855,6 +855,9 @@ const char* qc_op_to_string(qc_query_op_t op)
case QUERY_OP_SELECT:
return "QUERY_OP_SELECT";
case QUERY_OP_SET:
return "QUERY_OP_SET";
case QUERY_OP_SHOW:
return "QUERY_OP_SHOW";