Merge branch '2.2' into develop

This commit is contained in:
Markus Mäkelä
2018-05-18 12:45:15 +03:00
6 changed files with 28 additions and 1 deletions

View File

@ -307,6 +307,7 @@ typedef enum
MXS_COM_STMT_RESET = 26, MXS_COM_STMT_RESET = 26,
MXS_COM_SET_OPTION = 27, MXS_COM_SET_OPTION = 27,
MXS_COM_STMT_FETCH = 28, MXS_COM_STMT_FETCH = 28,
MXS_COM_STMT_BULK_EXECUTE = 0xfa,
MXS_COM_DAEMON, MXS_COM_DAEMON,
MXS_COM_END MXS_COM_END
} mxs_mysql_cmd_t; } mxs_mysql_cmd_t;

View File

@ -703,6 +703,10 @@ add_test_executable(mxs1828_double_local_infile.cpp mxs1828_double_local_infile
# https://jira.mariadb.org/browse/MXS-1831 # https://jira.mariadb.org/browse/MXS-1831
add_test_executable(mxs1831_unknown_param.cpp mxs1831_unknown_param replication LABELS REPL_BACKEND) add_test_executable(mxs1831_unknown_param.cpp mxs1831_unknown_param replication LABELS REPL_BACKEND)
# MXS-1873: Large session commands cause errors
# https://jira.mariadb.org/browse/MXS-1873
add_test_executable(mxs1873_large_sescmd.cpp mxs1873_large_sescmd replication LABELS readwritesplit REPL_BACKEND)
# 'namedserverfilter' test # 'namedserverfilter' test
add_test_executable(namedserverfilter.cpp namedserverfilter namedserverfilter LABELS namedserverfilter LIGHT REPL_BACKEND) add_test_executable(namedserverfilter.cpp namedserverfilter namedserverfilter LABELS namedserverfilter LIGHT REPL_BACKEND)

View File

@ -0,0 +1,20 @@
/**
* MXS-1873: Large session commands cause errors
*
* https://jira.mariadb.org/browse/MXS-1873
*/
#include "testconnections.h"
int main(int argc, char** argv)
{
TestConnections test(argc, argv);
test.maxscales->connect();
test.try_query(test.maxscales->conn_rwsplit[0],
"SET STATEMENT max_statement_time=30 FOR SELECT seq FROM seq_0_to_100000");
test.try_query(test.maxscales->conn_rwsplit[0], "SELECT 1");
test.maxscales->disconnect();
return test.global_result;
}

View File

@ -38,6 +38,7 @@ const char* qc_mysql_get_current_db(MXS_SESSION* session)
bool qc_mysql_is_ps_command(uint8_t cmd) bool qc_mysql_is_ps_command(uint8_t cmd)
{ {
return cmd == MXS_COM_STMT_EXECUTE || return cmd == MXS_COM_STMT_EXECUTE ||
cmd == MXS_COM_STMT_BULK_EXECUTE ||
cmd == MXS_COM_STMT_SEND_LONG_DATA || cmd == MXS_COM_STMT_SEND_LONG_DATA ||
cmd == MXS_COM_STMT_CLOSE || cmd == MXS_COM_STMT_CLOSE ||
cmd == MXS_COM_STMT_FETCH || cmd == MXS_COM_STMT_FETCH ||

View File

@ -1606,6 +1606,7 @@ bool mxs_mysql_is_prep_stmt_ok(GWBUF *buffer)
bool mxs_mysql_is_ps_command(uint8_t cmd) bool mxs_mysql_is_ps_command(uint8_t cmd)
{ {
return cmd == MXS_COM_STMT_EXECUTE || return cmd == MXS_COM_STMT_EXECUTE ||
cmd == MXS_COM_STMT_BULK_EXECUTE ||
cmd == MXS_COM_STMT_SEND_LONG_DATA || cmd == MXS_COM_STMT_SEND_LONG_DATA ||
cmd == MXS_COM_STMT_CLOSE || cmd == MXS_COM_STMT_CLOSE ||
cmd == MXS_COM_STMT_FETCH || cmd == MXS_COM_STMT_FETCH ||

View File

@ -349,11 +349,11 @@ bool RWSplitSession::route_session_write(GWBUF *querybuf, uint8_t command, uint3
bool expecting_response = mxs_mysql_command_will_respond(command); bool expecting_response = mxs_mysql_command_will_respond(command);
int nsucc = 0; int nsucc = 0;
uint64_t lowest_pos = id; uint64_t lowest_pos = id;
gwbuf_set_type(querybuf, GWBUF_TYPE_COLLECT_RESULT);
if (qc_query_is_type(type, QUERY_TYPE_PREPARE_NAMED_STMT) || if (qc_query_is_type(type, QUERY_TYPE_PREPARE_NAMED_STMT) ||
qc_query_is_type(type, QUERY_TYPE_PREPARE_STMT)) qc_query_is_type(type, QUERY_TYPE_PREPARE_STMT))
{ {
gwbuf_set_type(querybuf, GWBUF_TYPE_COLLECT_RESULT);
m_qc.ps_store(querybuf, id); m_qc.ps_store(querybuf, id);
} }