Skip to content

Commit 82f3cee

Browse files
committed
MDEV-16470: switch off user variables (and fixes of its support)
1 parent 8ec21af commit 82f3cee

13 files changed

+89
-73
lines changed

client/mysqltest.cc

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7711,6 +7711,28 @@ void append_info(DYNAMIC_STRING *ds, ulonglong affected_rows,
77117711
}
77127712

77137713

7714+
#ifndef EMBEDDED_LIBRARY
7715+
static const char *trking_info_desc[SESSION_TRACK_END + 1]=
7716+
{
7717+
"Tracker : SESSION_TRACK_SYSTEM_VARIABLES\n",
7718+
"Tracker : SESSION_TRACK_SCHEMA\n",
7719+
"Tracker : SESSION_TRACK_STATE_CHANGE\n",
7720+
"Tracker : SESSION_TRACK_GTIDS\n",
7721+
"Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS\n",
7722+
"Tracker : SESSION_TRACK_TRANSACTION_TYPE\n"
7723+
#ifdef USER_VAR_TRACKING
7724+
,
7725+
"Tracker : SESSION_TRACK_MYSQL_RESERVED1\n",
7726+
"Tracker : SESSION_TRACK_MYSQL_RESERVED2\n",
7727+
"Tracker : SESSION_TRACK_MYSQL_RESERVED3\n",
7728+
"Tracker : SESSION_TRACK_MYSQL_RESERVED4\n",
7729+
"Tracker : SESSION_TRACK_MYSQL_RESERVED5\n",
7730+
"Tracker : SESSION_TRACK_MYSQL_RESERVED6\n",
7731+
"Tracker : SESSION_TRACK_USER_VARIABLES\n"
7732+
#endif // USER_VAR_TRACKING
7733+
};
7734+
#endif // EMBEDDED_LIBRARY
7735+
77147736
/**
77157737
@brief Append state change information (received through Ok packet) to the output.
77167738
@@ -7731,31 +7753,15 @@ static void append_session_track_info(DYNAMIC_STRING *ds, MYSQL *mysql)
77317753
&data, &data_length))
77327754
{
77337755
dynstr_append(ds, "-- ");
7734-
switch (type)
7756+
if (type <= SESSION_TRACK_END)
77357757
{
7736-
case SESSION_TRACK_SYSTEM_VARIABLES:
7737-
dynstr_append(ds, "Tracker : SESSION_TRACK_SYSTEM_VARIABLES\n");
7738-
break;
7739-
case SESSION_TRACK_SCHEMA:
7740-
dynstr_append(ds, "Tracker : SESSION_TRACK_SCHEMA\n");
7741-
break;
7742-
case SESSION_TRACK_STATE_CHANGE:
7743-
dynstr_append(ds, "Tracker : SESSION_TRACK_STATE_CHANGE\n");
7744-
break;
7745-
case SESSION_TRACK_GTIDS:
7746-
dynstr_append(ds, "Tracker : SESSION_TRACK_GTIDS\n");
7747-
break;
7748-
case SESSION_TRACK_TRANSACTION_CHARACTERISTICS:
7749-
dynstr_append(ds, "Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS\n");
7750-
break;
7751-
case SESSION_TRACK_TRANSACTION_TYPE:
7752-
dynstr_append(ds, "Tracker : SESSION_TRACK_TRANSACTION_TYPE\n");
7753-
break;
7754-
default:
7755-
DBUG_ASSERT(0);
7756-
dynstr_append(ds, "\n");
7758+
dynstr_append(ds, trking_info_desc[type]);
7759+
}
7760+
else
7761+
{
7762+
DBUG_ASSERT(0);
7763+
dynstr_append(ds, "Tracker???\n");
77577764
}
7758-
77597765

77607766
dynstr_append(ds, "-- ");
77617767
dynstr_append_mem(ds, data, data_length);
@@ -7767,7 +7773,13 @@ static void append_session_track_info(DYNAMIC_STRING *ds, MYSQL *mysql)
77677773
&data, &data_length))
77687774
{
77697775
dynstr_append(ds, "\n-- ");
7770-
dynstr_append_mem(ds, data, data_length);
7776+
if (data == NULL)
7777+
{
7778+
DBUG_ASSERT(data_length == 0);
7779+
dynstr_append_mem(ds, "<NULL>", sizeof("<NULL>") - 1);
7780+
}
7781+
else
7782+
dynstr_append_mem(ds, data, data_length);
77717783
}
77727784
dynstr_append(ds, "\n\n");
77737785
}

include/mysql.h.pp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@
113113
SESSION_TRACK_GTIDS,
114114
SESSION_TRACK_TRANSACTION_CHARACTERISTICS,
115115
SESSION_TRACK_TRANSACTION_STATE,
116-
SESSION_TRACK_USER_VARIABLES,
117116
SESSION_TRACK_always_at_the_end
118117
};
119118
extern "C" {

include/mysql_com.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,15 @@ enum enum_session_state_type
617617
SESSION_TRACK_GTIDS,
618618
SESSION_TRACK_TRANSACTION_CHARACTERISTICS, /* Transaction chistics */
619619
SESSION_TRACK_TRANSACTION_STATE, /* Transaction state */
620+
#ifdef USER_VAR_TRACKING
621+
SESSION_TRACK_MYSQL_RESERVED1,
622+
SESSION_TRACK_MYSQL_RESERVED2,
623+
SESSION_TRACK_MYSQL_RESERVED3,
624+
SESSION_TRACK_MYSQL_RESERVED4,
625+
SESSION_TRACK_MYSQL_RESERVED5,
626+
SESSION_TRACK_MYSQL_RESERVED6,
620627
SESSION_TRACK_USER_VARIABLES,
628+
#endif // USER_VAR_TRACKING
621629
SESSION_TRACK_always_at_the_end /* must be last */
622630
};
623631

mysql-test/main/mysqld--help.result

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,8 +1151,6 @@ The following specify which files/extra groups are read (specified before remain
11511151
characteristics (isolation level, read only/read
11521152
write,snapshot - but not any work done / data modified
11531153
within the transaction).
1154-
--session-track-user-variables
1155-
Track changes to user variables.
11561154
--show-slave-auth-info
11571155
Show user and password in SHOW SLAVE HOSTS on this
11581156
master.
@@ -1758,7 +1756,6 @@ session-track-schema TRUE
17581756
session-track-state-change FALSE
17591757
session-track-system-variables autocommit,character_set_client,character_set_connection,character_set_results,time_zone
17601758
session-track-transaction-info OFF
1761-
session-track-user-variables FALSE
17621759
show-slave-auth-info FALSE
17631760
silent-startup FALSE
17641761
skip-grant-tables TRUE

mysql-test/main/mysqltest_tracking_info.result

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,4 @@ SET @@session.session_track_system_variables= @save_session_track_system_variabl
4848
#
4949
# MDEV-16470 - Session user variables tracker
5050
#
51-
SET @@session.session_track_user_variables=1;
52-
SET @a=1;
53-
SET @b=NULL;
54-
SELECT @c:=10;
55-
@c:=10
56-
10
57-
SET @@session.session_track_user_variables=0;
58-
#
59-
# mdev-22337 Assertion `Alloced_length >= (str_length + length +
60-
net_length_size(length))' failed in Binary_string::q_net_store_data
61-
on long MULTIPOLYGON query with session_track_user_variables=1
62-
(optimized builds)
63-
#
64-
set @@session.session_track_user_variables=1;
65-
set @a=repeat('X', 1029);
66-
set @@session.session_track_user_variables=0;
6751
# End of 10.5 tests

mysql-test/main/mysqltest_tracking_info.test

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,24 +49,24 @@ SET @@session.session_track_system_variables= @save_session_track_system_variabl
4949
--echo #
5050
--echo # MDEV-16470 - Session user variables tracker
5151
--echo #
52-
SET @@session.session_track_user_variables=1;
53-
--enable_session_track_info
54-
SET @a=1;
55-
SET @b=NULL;
56-
SELECT @c:=10;
57-
--disable_session_track_info
58-
SET @@session.session_track_user_variables=0;
59-
60-
--echo #
61-
--echo # mdev-22337 Assertion `Alloced_length >= (str_length + length +
62-
--echo net_length_size(length))' failed in Binary_string::q_net_store_data
63-
--echo on long MULTIPOLYGON query with session_track_user_variables=1
64-
--echo (optimized builds)
65-
--echo #
66-
set @@session.session_track_user_variables=1;
67-
--enable_session_track_info
68-
set @a=repeat('X', 1029);
69-
--disable_session_track_info
70-
set @@session.session_track_user_variables=0;
52+
#SET @@session.session_track_user_variables=1;
53+
#--enable_session_track_info
54+
#SET @a=1;
55+
#SET @b=NULL;
56+
#SELECT @c:=10;
57+
#--disable_session_track_info
58+
#SET @@session.session_track_user_variables=0;
59+
60+
#--echo #
61+
#--echo # mdev-22337 Assertion `Alloced_length >= (str_length + length +
62+
#--echo net_length_size(length))' failed in Binary_string::q_net_store_data
63+
#--echo on long MULTIPOLYGON query with session_track_user_variables=1
64+
#--echo (optimized builds)
65+
#--echo #
66+
#set @@session.session_track_user_variables=1;
67+
#--enable_session_track_info
68+
#set @a=repeat('X', 1029);
69+
#--disable_session_track_info
70+
#set @@session.session_track_user_variables=0;
7171

7272
--echo # End of 10.5 tests

mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3543,16 +3543,6 @@ NUMERIC_BLOCK_SIZE NULL
35433543
ENUM_VALUE_LIST OFF,STATE,CHARACTERISTICS
35443544
READ_ONLY NO
35453545
COMMAND_LINE_ARGUMENT REQUIRED
3546-
VARIABLE_NAME SESSION_TRACK_USER_VARIABLES
3547-
VARIABLE_SCOPE SESSION
3548-
VARIABLE_TYPE BOOLEAN
3549-
VARIABLE_COMMENT Track changes to user variables.
3550-
NUMERIC_MIN_VALUE NULL
3551-
NUMERIC_MAX_VALUE NULL
3552-
NUMERIC_BLOCK_SIZE NULL
3553-
ENUM_VALUE_LIST OFF,ON
3554-
READ_ONLY NO
3555-
COMMAND_LINE_ARGUMENT OPTIONAL
35563546
VARIABLE_NAME SKIP_EXTERNAL_LOCKING
35573547
VARIABLE_SCOPE GLOBAL
35583548
VARIABLE_TYPE BOOLEAN

sql/item_func.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4787,10 +4787,12 @@ update_hash(user_var_entry *entry, bool set_null, void *ptr, size_t length,
47874787
entry->unsigned_flag= unsigned_arg;
47884788
}
47894789
entry->type=type;
4790+
#ifdef USER_VAR_TRACKING
47904791
#ifndef EMBEDDED_LIBRARY
47914792
THD *thd= current_thd;
47924793
thd->session_tracker.user_variables.mark_as_changed(thd, entry);
47934794
#endif
4795+
#endif // USER_VAR_TRACKING
47944796
return 0;
47954797
}
47964798

sql/session_tracker.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,6 +1183,7 @@ bool Session_state_change_tracker::store(THD *thd, String *buf)
11831183
return false;
11841184
}
11851185

1186+
#ifdef USER_VAR_TRACKING
11861187

11871188
bool User_variables_tracker::update(THD *thd, set_var *)
11881189
{
@@ -1204,21 +1205,30 @@ bool User_variables_tracker::store(THD *thd, String *buf)
12041205
length= net_length_size(var->name.length) + var->name.length;
12051206
if (!null_value)
12061207
length+= net_length_size(value_str.length()) + value_str.length();
1208+
else
1209+
length+= 1;
12071210

12081211
if (buf->reserve(sizeof(char) + length + net_length_size(length)))
12091212
return true;
12101213

1214+
// TODO: check max packet length MDEV-22709
12111215
buf->q_append(static_cast<char>(SESSION_TRACK_USER_VARIABLES));
12121216
buf->q_net_store_length(length);
12131217
buf->q_net_store_data(reinterpret_cast<const uchar*>(var->name.str),
12141218
var->name.length);
12151219
if (!null_value)
12161220
buf->q_net_store_data(reinterpret_cast<const uchar*>(value_str.ptr()),
12171221
value_str.length());
1222+
else
1223+
{
1224+
char nullbuff[1]= { (char)251 };
1225+
buf->q_append(nullbuff, sizeof(nullbuff));
1226+
}
12181227
}
12191228
m_changed_user_variables.clear();
12201229
return false;
12211230
}
1231+
#endif // USER_VAR_TRACKING
12221232

12231233
///////////////////////////////////////////////////////////////////////////////
12241234

sql/session_tracker.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ enum enum_session_tracker
3535
CURRENT_SCHEMA_TRACKER, /* Current schema */
3636
SESSION_STATE_CHANGE_TRACKER,
3737
TRANSACTION_INFO_TRACKER, /* Transaction state */
38+
#ifdef USER_VAR_TRACKING
3839
USER_VARIABLES_TRACKER,
40+
#endif // USER_VAR_TRACKING
3941
SESSION_TRACKER_END /* must be the last */
4042
};
4143

@@ -395,6 +397,7 @@ class Transaction_state_tracker : public State_tracker
395397
This is a tracker class that enables & manages the tracking of user variables.
396398
*/
397399

400+
#ifdef USER_VAR_TRACKING
398401
class User_variables_tracker: public State_tracker
399402
{
400403
Hash_set<const user_var_entry> m_changed_user_variables;
@@ -415,6 +418,7 @@ class User_variables_tracker: public State_tracker
415418
}
416419
void deinit() { m_changed_user_variables.~Hash_set(); }
417420
};
421+
#endif // USER_VAR_TRACKING
418422

419423

420424
/**
@@ -445,15 +449,19 @@ class Session_tracker
445449
Session_state_change_tracker state_change;
446450
Transaction_state_tracker transaction_info;
447451
Session_sysvars_tracker sysvars;
452+
#ifdef USER_VAR_TRACKING
448453
User_variables_tracker user_variables;
454+
#endif // USER_VAR_TRACKING
449455

450456
Session_tracker()
451457
{
452458
m_trackers[SESSION_SYSVARS_TRACKER]= &sysvars;
453459
m_trackers[CURRENT_SCHEMA_TRACKER]= &current_schema;
454460
m_trackers[SESSION_STATE_CHANGE_TRACKER]= &state_change;
455461
m_trackers[TRANSACTION_INFO_TRACKER]= &transaction_info;
462+
#ifdef USER_VAR_TRACKING
456463
m_trackers[USER_VARIABLES_TRACKER]= &user_variables;
464+
#endif // USER_VAR_TRACKING
457465
}
458466

459467
void enable(THD *thd)

0 commit comments

Comments
 (0)