From 9e70e3918b0e757bb73081d924b0d0b62b835ca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jaramago=20Fern=C3=A1ndez?= Date: Wed, 26 May 2021 22:00:24 +0200 Subject: [PATCH] Reversed adding 'first_comment' to 'compute_hash' #3427 Information from 'first_comment' is redundant since the comment itself is already contained in 'query' when reaching 'compute_hash'. --- include/MySQL_PreparedStatement.h | 2 +- lib/MySQL_PreparedStatement.cpp | 21 +++++---------------- lib/MySQL_Session.cpp | 3 +-- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/include/MySQL_PreparedStatement.h b/include/MySQL_PreparedStatement.h index 4973ab6be..709f41dd8 100644 --- a/include/MySQL_PreparedStatement.h +++ b/include/MySQL_PreparedStatement.h @@ -218,7 +218,7 @@ class MySQL_STMTs_local_v14 { return is_client_; } void backend_insert(uint64_t global_statement_id, MYSQL_STMT *stmt); - uint64_t compute_hash(char *user, char *schema, char *query, unsigned int query_length, char *first_comment); + uint64_t compute_hash(char *user, char *schema, char *query, unsigned int query_length); unsigned int get_num_backend_stmts() { return backend_stmt_to_global_ids.size(); } uint32_t generate_new_client_stmt_id(uint64_t global_statement_id); uint64_t find_global_stmt_id_from_client(uint32_t client_stmt_id); diff --git a/lib/MySQL_PreparedStatement.cpp b/lib/MySQL_PreparedStatement.cpp index c944f00d4..c8616e457 100644 --- a/lib/MySQL_PreparedStatement.cpp +++ b/lib/MySQL_PreparedStatement.cpp @@ -14,8 +14,7 @@ extern MySQL_STMT_Manager_v14 *GloMyStmt; static uint64_t stmt_compute_hash(char *user, char *schema, char *query, - unsigned int query_length, - char* first_comment) { + unsigned int query_length) { int l = 0; l += strlen(user); l += strlen(schema); @@ -25,9 +24,6 @@ static uint64_t stmt_compute_hash(char *user, l += strlen(_COMPUTE_HASH_DEL1_); l += strlen(_COMPUTE_HASH_DEL2_); l += query_length; - if (first_comment) { - l += strlen(first_comment); - } char *buf = (char *)malloc(l); l = 0; @@ -47,12 +43,6 @@ static uint64_t stmt_compute_hash(char *user, strcpy(buf + l, _COMPUTE_HASH_DEL2_); l += strlen(_COMPUTE_HASH_DEL2_); - // write first comment - if (first_comment) { - strcpy(buf + l, first_comment); - l += strlen(first_comment); - } - // write query memcpy(buf + l, query, query_length); l += query_length; @@ -64,7 +54,7 @@ static uint64_t stmt_compute_hash(char *user, void MySQL_STMT_Global_info::compute_hash() { hash = stmt_compute_hash(username, schemaname, query, - query_length, first_comment); + query_length); } StmtLongDataHandler::StmtLongDataHandler() { long_datas = new PtrArray(); } @@ -561,10 +551,9 @@ void MySQL_STMTs_local_v14::backend_insert(uint64_t global_statement_id, MYSQL_S uint64_t MySQL_STMTs_local_v14::compute_hash(char *user, char *schema, char *query, - unsigned int query_length, - char *first_comment) { + unsigned int query_length) { uint64_t hash; - hash = stmt_compute_hash(user, schema, query, query_length, first_comment); + hash = stmt_compute_hash(user, schema, query, query_length); return hash; } @@ -835,7 +824,7 @@ MySQL_STMT_Global_info *MySQL_STMT_Manager_v14::add_prepared_statement( char *fc, MYSQL_STMT *stmt, bool lock) { MySQL_STMT_Global_info *ret = NULL; uint64_t hash = stmt_compute_hash( - u, s, q, ql, fc); // this identifies the prepared statement + u, s, q, ql); // this identifies the prepared statement if (lock) { pthread_rwlock_wrlock(&rwlock_); } diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 1f3f6ce09..ce9cb9bd7 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -3041,8 +3041,7 @@ void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C (char *)client_myds->myconn->userinfo->username, (char *)client_myds->myconn->userinfo->schemaname, (char *)CurrentQuery.QueryPointer, - CurrentQuery.QueryLength, - (char *)CurrentQuery.QueryParserArgs.first_comment + CurrentQuery.QueryLength ); MySQL_STMT_Global_info *stmt_info=NULL; // we first lock GloStmt