Fix to bug http://bugs.skysql.com/show_bug.cgi?id=488. SHOW VARIABLES was treated as if it was session write command. Instead it is a read-only query. Changed to route that to master.
This commit is contained in:
parent
40416d424e
commit
40f85f9cad
@ -512,7 +512,15 @@ static skygw_query_type_t resolve_query_type(
|
||||
}
|
||||
else if (lex->option_type == OPT_SESSION)
|
||||
{
|
||||
type |= QUERY_TYPE_SESSION_WRITE;
|
||||
/** SHOW commands are all reads to one backend */
|
||||
if (lex->sql_command == SQLCOM_SHOW_VARIABLES)
|
||||
{
|
||||
type |= QUERY_TYPE_SESSION_READ;
|
||||
}
|
||||
else
|
||||
{
|
||||
type |= QUERY_TYPE_SESSION_WRITE;
|
||||
}
|
||||
goto return_qtype;
|
||||
}
|
||||
/**
|
||||
@ -531,10 +539,11 @@ static skygw_query_type_t resolve_query_type(
|
||||
force_data_modify_op_replication)
|
||||
{
|
||||
type |= QUERY_TYPE_SESSION_WRITE;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
type |= QUERY_TYPE_WRITE;
|
||||
}
|
||||
|
||||
goto return_qtype;
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,8 @@ typedef enum {
|
||||
QUERY_TYPE_COMMIT = 0x0200, /*< COMMIT */
|
||||
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_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) */
|
||||
} skygw_query_type_t;
|
||||
|
||||
|
||||
|
@ -1451,7 +1451,7 @@ static int routeQuery(
|
||||
|
||||
if (succp) /*< Have DCB of the target backend */
|
||||
{
|
||||
if ((ret = target_dcb->func.write(target_dcb, querybuf)) == 1)
|
||||
if ((ret = target_dcb->func.write(target_dcb, gwbuf_clone(querybuf))) == 1)
|
||||
{
|
||||
backend_ref_t* bref;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user