Merge branch 'Z3' into Z3_rabbit_partial
Conflicts: server/modules/routing/readwritesplit/readwritesplit.c
This commit is contained in:
@ -1054,6 +1054,39 @@ char* skygw_get_created_table_name(GWBUF* querybuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the query is a "real" query ie. SELECT,UPDATE,INSERT,DELETE or any variation of these.
|
||||||
|
* Queries that affect the underlying database are not considered as real queries and the queries that target
|
||||||
|
* specific row or variable data are regarded as the real queries.
|
||||||
|
* @param GWBUF to analyze
|
||||||
|
* @return true if the query is a real query, otherwise false
|
||||||
|
*/
|
||||||
|
bool skygw_is_real_query(GWBUF* querybuf)
|
||||||
|
{
|
||||||
|
LEX* lex = get_lex(querybuf);
|
||||||
|
if(lex){
|
||||||
|
switch(lex->sql_command){
|
||||||
|
case SQLCOM_SELECT:
|
||||||
|
return lex->all_selects_list->table_list.elements > 0;
|
||||||
|
case SQLCOM_UPDATE:
|
||||||
|
case SQLCOM_INSERT:
|
||||||
|
case SQLCOM_INSERT_SELECT:
|
||||||
|
case SQLCOM_DELETE:
|
||||||
|
case SQLCOM_TRUNCATE:
|
||||||
|
case SQLCOM_REPLACE:
|
||||||
|
case SQLCOM_REPLACE_SELECT:
|
||||||
|
case SQLCOM_PREPARE:
|
||||||
|
case SQLCOM_EXECUTE:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether the buffer contains a DROP TABLE... query.
|
* Checks whether the buffer contains a DROP TABLE... query.
|
||||||
* @param querybuf Buffer to inspect
|
* @param querybuf Buffer to inspect
|
||||||
|
@ -45,7 +45,7 @@ typedef enum {
|
|||||||
QUERY_TYPE_PREPARE_NAMED_STMT = 0x0400, /*< Prepared stmt with name from user */
|
QUERY_TYPE_PREPARE_NAMED_STMT = 0x0400, /*< Prepared stmt with name from user */
|
||||||
QUERY_TYPE_PREPARE_STMT = 0x0800, /*< Prepared stmt with id provided by server */
|
QUERY_TYPE_PREPARE_STMT = 0x0800, /*< Prepared stmt with id provided by server */
|
||||||
QUERY_TYPE_EXEC_STMT = 0x1000, /*< Execute prepared statement */
|
QUERY_TYPE_EXEC_STMT = 0x1000, /*< Execute prepared statement */
|
||||||
QUERY_TYPE_SESSION_READ = 0x2000, /*< Read session data (from master 31.8.14) */
|
QUERY_TYPE_SESSION_READ = 0x2000, /*< Read session data (from master 31.8.14) */
|
||||||
QUERY_TYPE_CREATE_TMP_TABLE = 0x4000, /*< Create temporary table */
|
QUERY_TYPE_CREATE_TMP_TABLE = 0x4000, /*< Create temporary table */
|
||||||
QUERY_TYPE_READ_TMP_TABLE = 0x8000 /*< Read temporary table */
|
QUERY_TYPE_READ_TMP_TABLE = 0x8000 /*< Read temporary table */
|
||||||
} skygw_query_type_t;
|
} skygw_query_type_t;
|
||||||
@ -55,9 +55,9 @@ typedef struct parsing_info_st {
|
|||||||
#if defined(SS_DEBUG)
|
#if defined(SS_DEBUG)
|
||||||
skygw_chk_t pi_chk_top;
|
skygw_chk_t pi_chk_top;
|
||||||
#endif
|
#endif
|
||||||
void* pi_handle; /*< parsing info object pointer */
|
void* pi_handle; /*< parsing info object pointer */
|
||||||
char* pi_query_plain_str; /*< query as plain string */
|
char* pi_query_plain_str; /*< query as plain string */
|
||||||
void (*pi_done_fp)(void *); /*< clean-up function for parsing info */
|
void (*pi_done_fp)(void *); /*< clean-up function for parsing info */
|
||||||
#if defined(SS_DEBUG)
|
#if defined(SS_DEBUG)
|
||||||
skygw_chk_t pi_chk_tail;
|
skygw_chk_t pi_chk_tail;
|
||||||
#endif
|
#endif
|
||||||
|
@ -100,7 +100,7 @@ poll_add_dcb(DCB *dcb)
|
|||||||
|
|
||||||
CHK_DCB(dcb);
|
CHK_DCB(dcb);
|
||||||
|
|
||||||
ev.events = EPOLLIN | EPOLLOUT | EPOLLET;
|
ev.events = EPOLLIN | EPOLLOUT | EPOLLET | EPOLLHUP;
|
||||||
ev.data.ptr = dcb;
|
ev.data.ptr = dcb;
|
||||||
|
|
||||||
/*<
|
/*<
|
||||||
@ -480,7 +480,7 @@ poll_waitevents(void *arg)
|
|||||||
} /*< for */
|
} /*< for */
|
||||||
no_op = FALSE;
|
no_op = FALSE;
|
||||||
}
|
}
|
||||||
process_zombies:
|
process_zombies:
|
||||||
zombies = dcb_process_zombies(thread_id);
|
zombies = dcb_process_zombies(thread_id);
|
||||||
|
|
||||||
if (zombies == NULL) {
|
if (zombies == NULL) {
|
||||||
|
@ -97,14 +97,14 @@ typedef struct server {
|
|||||||
*
|
*
|
||||||
* These are a bitmap of attributes that may be applied to a server
|
* These are a bitmap of attributes that may be applied to a server
|
||||||
*/
|
*/
|
||||||
#define SERVER_RUNNING 0x0001 /**<< The server is up and running */
|
#define SERVER_RUNNING 0x0001 /**<< The server is up and running */
|
||||||
#define SERVER_MASTER 0x0002 /**<< The server is a master, i.e. can handle writes */
|
#define SERVER_MASTER 0x0002 /**<< The server is a master, i.e. can handle writes */
|
||||||
#define SERVER_SLAVE 0x0004 /**<< The server is a slave, i.e. can handle reads */
|
#define SERVER_SLAVE 0x0004 /**<< The server is a slave, i.e. can handle reads */
|
||||||
#define SERVER_JOINED 0x0008 /**<< The server is joined in a Galera cluster */
|
#define SERVER_JOINED 0x0008 /**<< The server is joined in a Galera cluster */
|
||||||
#define SERVER_NDB 0x0010 /**<< The server is part of a MySQL cluster setup */
|
#define SERVER_NDB 0x0010 /**<< The server is part of a MySQL cluster setup */
|
||||||
#define SERVER_MAINT 0x1000 /**<< Server is in maintenance mode */
|
#define SERVER_MAINT 0x0020 /**<< Server is in maintenance mode */
|
||||||
#define SERVER_SLAVE_OF_EXTERNAL_MASTER 0x0080 /**<< Server is slave of a Master outside the provided replication topology */
|
#define SERVER_SLAVE_OF_EXTERNAL_MASTER 0x0040 /**<< Server is slave of a Master outside the provided replication topology */
|
||||||
#define SERVER_STALE_STATUS 0x2000 /**<< Server stale status, monitor didn't update it */
|
#define SERVER_STALE_STATUS 0x0080 /**<< Server stale status, monitor didn't update it */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is the server running - the macro returns true if the server is marked as running
|
* Is the server running - the macro returns true if the server is marked as running
|
||||||
|
@ -219,7 +219,7 @@ typedef enum mysql_server_cmd {
|
|||||||
MYSQL_COM_QUERY,
|
MYSQL_COM_QUERY,
|
||||||
MYSQL_COM_FIELD_LIST,
|
MYSQL_COM_FIELD_LIST,
|
||||||
MYSQL_COM_CREATE_DB,
|
MYSQL_COM_CREATE_DB,
|
||||||
MYSQL_COM_DROP_DB,
|
MYSQL_COM_DROP_DB,
|
||||||
MYSQL_COM_REFRESH,
|
MYSQL_COM_REFRESH,
|
||||||
MYSQL_COM_SHUTDOWN,
|
MYSQL_COM_SHUTDOWN,
|
||||||
MYSQL_COM_STATISTICS,
|
MYSQL_COM_STATISTICS,
|
||||||
|
@ -1607,10 +1607,10 @@ static int routeQuery(
|
|||||||
check_drop_tmp_table(instance,router_session,querybuf,qtype);
|
check_drop_tmp_table(instance,router_session,querybuf,qtype);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If autocommit is disabled or transaction is explicitly started
|
* If autocommit is disabled or transaction is explicitly started
|
||||||
* transaction becomes active and master gets all statements until
|
* transaction becomes active and master gets all statements until
|
||||||
* transaction is committed and autocommit is enabled again.
|
* transaction is committed and autocommit is enabled again.
|
||||||
*/
|
*/
|
||||||
if (router_cli_ses->rses_autocommit_enabled &&
|
if (router_cli_ses->rses_autocommit_enabled &&
|
||||||
QUERY_IS_TYPE(qtype, QUERY_TYPE_DISABLE_AUTOCOMMIT))
|
QUERY_IS_TYPE(qtype, QUERY_TYPE_DISABLE_AUTOCOMMIT))
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user