summaryrefslogtreecommitdiff
path: root/sql/protocol.cc
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-10-28 08:48:36 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-10-28 08:48:36 +0300
commita8ded395578ccab9c256b9beee7e62d4ada08522 (patch)
tree3560bcda4fc05f41dd8a96df37152802d928a423 /sql/protocol.cc
parentf7bd369973ae56fe068302f0ff1c4e84d01bff75 (diff)
parent3a79e5fd317316c293baa459e8296fdb0744c280 (diff)
downloadmariadb-git-a8ded395578ccab9c256b9beee7e62d4ada08522.tar.gz
Merge 10.4 into 10.5
Diffstat (limited to 'sql/protocol.cc')
-rw-r--r--sql/protocol.cc19
1 files changed, 8 insertions, 11 deletions
diff --git a/sql/protocol.cc b/sql/protocol.cc
index eb50b02cf3c..18b41363a96 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -217,8 +217,6 @@ Protocol::net_send_ok(THD *thd,
NET *net= &thd->net;
StringBuffer<MYSQL_ERRMSG_SIZE + 10> store;
- bool state_changed= false;
-
bool error= FALSE;
DBUG_ENTER("Protocol::net_send_ok");
@@ -245,6 +243,11 @@ Protocol::net_send_ok(THD *thd,
/* last insert id */
store.q_net_store_length(id);
+ /* if client has not session tracking capability, don't send state change flag*/
+ if (!(thd->client_capabilities & CLIENT_SESSION_TRACK)) {
+ server_status &= ~SERVER_SESSION_STATE_CHANGED;
+ }
+
if (thd->client_capabilities & CLIENT_PROTOCOL_41)
{
DBUG_PRINT("info",
@@ -265,21 +268,17 @@ Protocol::net_send_ok(THD *thd,
}
thd->get_stmt_da()->set_overwrite_status(true);
- state_changed=
- (thd->client_capabilities & CLIENT_SESSION_TRACK) &&
- (server_status & SERVER_SESSION_STATE_CHANGED);
-
- if (state_changed || (message && message[0]))
+ if ((server_status & SERVER_SESSION_STATE_CHANGED) || (message && message[0]))
{
DBUG_ASSERT(safe_strlen(message) <= MYSQL_ERRMSG_SIZE);
store.q_net_store_data((uchar*) safe_str(message), safe_strlen(message));
}
- if (unlikely(state_changed))
+ if (unlikely(server_status & SERVER_SESSION_STATE_CHANGED))
{
store.set_charset(thd->variables.collation_database);
-
thd->session_tracker.store(thd, &store);
+ thd->server_status&= ~SERVER_SESSION_STATE_CHANGED;
}
DBUG_ASSERT(store.length() <= MAX_PACKET_LENGTH);
@@ -288,8 +287,6 @@ Protocol::net_send_ok(THD *thd,
if (likely(!error) && (!skip_flush || is_eof))
error= net_flush(net);
- thd->server_status&= ~SERVER_SESSION_STATE_CHANGED;
-
thd->get_stmt_da()->set_overwrite_status(false);
DBUG_PRINT("info", ("OK sent, so no more error sending allowed"));