From 4954c7f6b74f44fd3208541358b04c62c0cfbd43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 1 Jul 2019 10:25:41 +0300 Subject: [PATCH] Fix sending of unknown PS error The error was only generated for COM_STMT_EXECUTE commands when all PS commands should trigger it. In addition, large packets would get sent two errors upon the arrival of the trailing end. --- .../routing/readwritesplit/rwsplit_route_stmt.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc b/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc index d88ae1ca7..4a62c693e 100644 --- a/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc +++ b/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc @@ -202,12 +202,7 @@ bool RWSplitSession::route_single_stmt(GWBUF* querybuf) SRWBackend target; - if (command == MXS_COM_STMT_EXECUTE && stmt_id == 0) - { - // Unknown prepared statement ID - succp = send_unknown_ps_error(extract_binary_ps_id(querybuf)); - } - else if (TARGET_IS_ALL(route_target)) + if (TARGET_IS_ALL(route_target)) { succp = handle_target_is_all(route_target, querybuf, command, qtype); } @@ -249,6 +244,11 @@ bool RWSplitSession::route_single_stmt(GWBUF* querybuf) target = m_prev_target; succp = true; } + else if (mxs_mysql_is_ps_command(command) && stmt_id == 0) + { + // Unknown prepared statement ID + succp = send_unknown_ps_error(extract_binary_ps_id(querybuf)); + } else if (TARGET_IS_NAMED_SERVER(route_target) || TARGET_IS_RLAG_MAX(route_target)) { if ((target = handle_hinted_target(querybuf, route_target)))