Merge branch '2.2' of github.com:mariadb-corporation/MaxScale into 2.2
This commit is contained in:
commit
9d10642cd7
@ -293,6 +293,7 @@ typedef enum
|
||||
MXS_COM_STMT_RESET = 26,
|
||||
MXS_COM_SET_OPTION = 27,
|
||||
MXS_COM_STMT_FETCH = 28,
|
||||
MXS_COM_STMT_BULK_EXECUTE = 0xfa,
|
||||
MXS_COM_DAEMON,
|
||||
MXS_COM_END
|
||||
} mxs_mysql_cmd_t;
|
||||
|
@ -654,6 +654,10 @@ add_test_executable(mxs1824_double_cursor.cpp mxs1824_double_cursor replication
|
||||
# https://jira.mariadb.org/browse/MXS-1831
|
||||
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
|
||||
add_test_executable(namedserverfilter.cpp namedserverfilter namedserverfilter LABELS namedserverfilter LIGHT REPL_BACKEND)
|
||||
|
||||
|
20
maxscale-system-test/mxs1873_large_sescmd.cpp
Normal file
20
maxscale-system-test/mxs1873_large_sescmd.cpp
Normal 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;
|
||||
}
|
@ -1793,6 +1793,7 @@ static void parsing_info_done(void* ptr)
|
||||
free(field.table);
|
||||
free(field.column);
|
||||
}
|
||||
free(fi.fields);
|
||||
}
|
||||
free(pi->function_infos);
|
||||
|
||||
|
@ -629,7 +629,7 @@ columnid(A) ::= nm(X). {
|
||||
PREVIOUS
|
||||
QUICK
|
||||
RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESTRICT ROLLBACK ROLLUP ROW
|
||||
SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SLAVE /*START*/ STATUS
|
||||
SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SLAVE /*START*/ STATEMENT STATUS
|
||||
TABLES TEMP TEMPTABLE /*TRIGGER*/
|
||||
/*TRUNCATE*/
|
||||
// TODO: UNSIGNED is a reserved word and should not automatically convert into an identifer.
|
||||
@ -3157,6 +3157,14 @@ cmd ::= SET set_scope(X) TRANSACTION transaction_characteristics. {
|
||||
maxscaleSet(pParse, X, MXS_SET_TRANSACTION, 0);
|
||||
}
|
||||
|
||||
cmd ::= SET STATEMENT variable_assignments(X) FOR cmd. {
|
||||
// The parsing of cmd will cause the relevant maxscale-callback to
|
||||
// be called, so we neither need to call it here, nor free cmd (as
|
||||
// it will be freed by that callback). The variable definitions we
|
||||
// just throw away, as they are of no interest.
|
||||
sqlite3ExprListDelete(pParse->db, X);
|
||||
}
|
||||
|
||||
//////////////////////// The USE statement ////////////////////////////////////
|
||||
//
|
||||
cmd ::= use(X). {
|
||||
|
@ -442,6 +442,7 @@ static Keyword aKeywordTable[] = {
|
||||
{ "SET", "TK_SET", ALWAYS },
|
||||
#ifdef MAXSCALE
|
||||
{ "START", "TK_START", ALWAYS },
|
||||
{ "STATEMENT", "TK_STATEMENT", ALWAYS },
|
||||
{ "STATUS", "TK_STATUS", ALWAYS },
|
||||
{ "STRAIGHT_JOIN", "TK_STRAIGHT_JOIN",ALWAYS },
|
||||
#endif
|
||||
|
@ -106,3 +106,6 @@ CALL p1((SELECT f1()), ?);
|
||||
|
||||
# MXS-1829
|
||||
SELECT PREVIOUS VALUE FOR SEQ;
|
||||
|
||||
# MXS-1874
|
||||
SET STATEMENT max_statement_time=30 FOR SELECT seq FROM seq_0_to_100000;
|
@ -34,6 +34,7 @@ do{ \
|
||||
static inline bool is_ps_command(uint8_t cmd)
|
||||
{
|
||||
return cmd == MXS_COM_STMT_EXECUTE ||
|
||||
cmd == MXS_COM_STMT_BULK_EXECUTE ||
|
||||
cmd == MXS_COM_STMT_SEND_LONG_DATA ||
|
||||
cmd == MXS_COM_STMT_CLOSE ||
|
||||
cmd == MXS_COM_STMT_FETCH ||
|
||||
|
@ -337,11 +337,11 @@ bool route_session_write(RWSplitSession *rses, GWBUF *querybuf,
|
||||
bool expecting_response = mxs_mysql_command_will_respond(command);
|
||||
int nsucc = 0;
|
||||
uint64_t lowest_pos = id;
|
||||
gwbuf_set_type(querybuf, GWBUF_TYPE_COLLECT_RESULT);
|
||||
|
||||
if (qc_query_is_type(type, QUERY_TYPE_PREPARE_NAMED_STMT) ||
|
||||
qc_query_is_type(type, QUERY_TYPE_PREPARE_STMT))
|
||||
{
|
||||
gwbuf_set_type(querybuf, GWBUF_TYPE_COLLECT_RESULT);
|
||||
rses->ps_manager.store(querybuf, id);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user