diff --git a/include/PgSQL_Variables.h b/include/PgSQL_Variables.h index 7e2daec8c..04768bfa0 100644 --- a/include/PgSQL_Variables.h +++ b/include/PgSQL_Variables.h @@ -31,15 +31,15 @@ public: bool client_set_value(PgSQL_Session* session, int idx, const std::string& value, bool reorder_dynamic_variables_idx); bool client_set_hash_and_value(PgSQL_Session* session, int idx, const std::string& value, uint32_t hash); - void client_reset_value(PgSQL_Session* session, int idx); + void client_reset_value(PgSQL_Session* session, int idx, bool reorder_dynamic_variables_idx); const char* client_get_value(PgSQL_Session* session, int idx) const; uint32_t client_get_hash(PgSQL_Session* session, int idx) const; void server_set_value(PgSQL_Session* session, int idx, const char* value, bool reorder_dynamic_variables_idx); void server_set_hash_and_value(PgSQL_Session* session, int idx, const char* value, uint32_t hash); - void server_reset_value(PgSQL_Session* session, int idx); + void server_reset_value(PgSQL_Session* session, int idx, bool reorder_dynamic_variables_idx); const char* server_get_value(PgSQL_Session* session, int idx) const; - inline uint32_t server_get_hash(PgSQL_Session* session, int idx) const; + uint32_t server_get_hash(PgSQL_Session* session, int idx) const; bool verify_variable(PgSQL_Session* session, int idx) const; bool update_variable(PgSQL_Session* session, session_status status, int &_rc); diff --git a/lib/PgSQL_Variables.cpp b/lib/PgSQL_Variables.cpp index 7285436c6..801add653 100644 --- a/lib/PgSQL_Variables.cpp +++ b/lib/PgSQL_Variables.cpp @@ -85,7 +85,7 @@ bool PgSQL_Variables::client_set_hash_and_value(PgSQL_Session* session, int idx, return true; } -void PgSQL_Variables::client_reset_value(PgSQL_Session* session, int idx) { +void PgSQL_Variables::client_reset_value(PgSQL_Session* session, int idx, bool reorder_dynamic_variables_idx) { if (!session || !session->client_myds || !session->client_myds->myconn) { proxy_warning("Session validation failed\n"); return; @@ -99,7 +99,7 @@ void PgSQL_Variables::client_reset_value(PgSQL_Session* session, int idx) { free(client_conn->variables[idx].value); client_conn->variables[idx].value = NULL; } - if (idx > PGSQL_NAME_LAST_LOW_WM) { + if (reorder_dynamic_variables_idx && idx > PGSQL_NAME_LAST_LOW_WM) { // we now regererate dynamic_variables_idx client_conn->reorder_dynamic_variables_idx(); } @@ -170,7 +170,7 @@ void PgSQL_Variables::server_set_value(PgSQL_Session* session, int idx, const ch } } -void PgSQL_Variables::server_reset_value(PgSQL_Session* session, int idx) { +void PgSQL_Variables::server_reset_value(PgSQL_Session* session, int idx, bool reorder_dynamic_variables_idx) { assert(session); assert(session->mybe); assert(session->mybe->server_myds); @@ -184,7 +184,7 @@ void PgSQL_Variables::server_reset_value(PgSQL_Session* session, int idx) { free(backend_conn->variables[idx].value); backend_conn->variables[idx].value = NULL; } - if (idx > PGSQL_NAME_LAST_LOW_WM) { + if (reorder_dynamic_variables_idx && idx > PGSQL_NAME_LAST_LOW_WM) { // we now regererate dynamic_variables_idx backend_conn->reorder_dynamic_variables_idx(); }