Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
82f3ceed
Commit
82f3ceed
authored
Jun 11, 2020
by
Oleksandr Byelkin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MDEV-16470: switch off user variables (and fixes of its support)
parent
8ec21afc
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
89 additions
and
73 deletions
+89
-73
client/mysqltest.cc
client/mysqltest.cc
+36
-24
include/mysql.h.pp
include/mysql.h.pp
+0
-1
include/mysql_com.h
include/mysql_com.h
+8
-0
mysql-test/main/mysqld--help.result
mysql-test/main/mysqld--help.result
+0
-3
mysql-test/main/mysqltest_tracking_info.result
mysql-test/main/mysqltest_tracking_info.result
+0
-16
mysql-test/main/mysqltest_tracking_info.test
mysql-test/main/mysqltest_tracking_info.test
+19
-19
mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
...l-test/suite/sys_vars/r/sysvars_server_notembedded.result
+0
-10
sql/item_func.cc
sql/item_func.cc
+2
-0
sql/session_tracker.cc
sql/session_tracker.cc
+10
-0
sql/session_tracker.h
sql/session_tracker.h
+8
-0
sql/sql_class.cc
sql/sql_class.cc
+2
-0
sql/sql_class.h
sql/sql_class.h
+2
-0
sql/sys_vars.cc
sql/sys_vars.cc
+2
-0
No files found.
client/mysqltest.cc
View file @
82f3ceed
...
...
@@ -7711,6 +7711,28 @@ void append_info(DYNAMIC_STRING *ds, ulonglong affected_rows,
}
#ifndef EMBEDDED_LIBRARY
static
const
char
*
trking_info_desc
[
SESSION_TRACK_END
+
1
]
=
{
"Tracker : SESSION_TRACK_SYSTEM_VARIABLES
\n
"
,
"Tracker : SESSION_TRACK_SCHEMA
\n
"
,
"Tracker : SESSION_TRACK_STATE_CHANGE
\n
"
,
"Tracker : SESSION_TRACK_GTIDS
\n
"
,
"Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
\n
"
,
"Tracker : SESSION_TRACK_TRANSACTION_TYPE
\n
"
#ifdef USER_VAR_TRACKING
,
"Tracker : SESSION_TRACK_MYSQL_RESERVED1
\n
"
,
"Tracker : SESSION_TRACK_MYSQL_RESERVED2
\n
"
,
"Tracker : SESSION_TRACK_MYSQL_RESERVED3
\n
"
,
"Tracker : SESSION_TRACK_MYSQL_RESERVED4
\n
"
,
"Tracker : SESSION_TRACK_MYSQL_RESERVED5
\n
"
,
"Tracker : SESSION_TRACK_MYSQL_RESERVED6
\n
"
,
"Tracker : SESSION_TRACK_USER_VARIABLES
\n
"
#endif // USER_VAR_TRACKING
};
#endif // EMBEDDED_LIBRARY
/**
@brief Append state change information (received through Ok packet) to the output.
...
...
@@ -7731,31 +7753,15 @@ static void append_session_track_info(DYNAMIC_STRING *ds, MYSQL *mysql)
&
data
,
&
data_length
))
{
dynstr_append
(
ds
,
"-- "
);
switch
(
type
)
if
(
type
<=
SESSION_TRACK_END
)
{
case
SESSION_TRACK_SYSTEM_VARIABLES
:
dynstr_append
(
ds
,
"Tracker : SESSION_TRACK_SYSTEM_VARIABLES
\n
"
);
break
;
case
SESSION_TRACK_SCHEMA
:
dynstr_append
(
ds
,
"Tracker : SESSION_TRACK_SCHEMA
\n
"
);
break
;
case
SESSION_TRACK_STATE_CHANGE
:
dynstr_append
(
ds
,
"Tracker : SESSION_TRACK_STATE_CHANGE
\n
"
);
break
;
case
SESSION_TRACK_GTIDS
:
dynstr_append
(
ds
,
"Tracker : SESSION_TRACK_GTIDS
\n
"
);
break
;
case
SESSION_TRACK_TRANSACTION_CHARACTERISTICS
:
dynstr_append
(
ds
,
"Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS
\n
"
);
break
;
case
SESSION_TRACK_TRANSACTION_TYPE
:
dynstr_append
(
ds
,
"Tracker : SESSION_TRACK_TRANSACTION_TYPE
\n
"
);
break
;
default:
DBUG_ASSERT
(
0
);
dynstr_append
(
ds
,
"
\n
"
);
dynstr_append
(
ds
,
trking_info_desc
[
type
]);
}
else
{
DBUG_ASSERT
(
0
);
dynstr_append
(
ds
,
"Tracker???
\n
"
);
}
dynstr_append
(
ds
,
"-- "
);
dynstr_append_mem
(
ds
,
data
,
data_length
);
...
...
@@ -7767,7 +7773,13 @@ static void append_session_track_info(DYNAMIC_STRING *ds, MYSQL *mysql)
&
data
,
&
data_length
))
{
dynstr_append
(
ds
,
"
\n
-- "
);
dynstr_append_mem
(
ds
,
data
,
data_length
);
if
(
data
==
NULL
)
{
DBUG_ASSERT
(
data_length
==
0
);
dynstr_append_mem
(
ds
,
"<NULL>"
,
sizeof
(
"<NULL>"
)
-
1
);
}
else
dynstr_append_mem
(
ds
,
data
,
data_length
);
}
dynstr_append
(
ds
,
"
\n\n
"
);
}
...
...
include/mysql.h.pp
View file @
82f3ceed
...
...
@@ -113,7 +113,6 @@ enum enum_session_state_type
SESSION_TRACK_GTIDS
,
SESSION_TRACK_TRANSACTION_CHARACTERISTICS
,
SESSION_TRACK_TRANSACTION_STATE
,
SESSION_TRACK_USER_VARIABLES
,
SESSION_TRACK_always_at_the_end
};
extern
"C"
{
...
...
include/mysql_com.h
View file @
82f3ceed
...
...
@@ -617,7 +617,15 @@ enum enum_session_state_type
SESSION_TRACK_GTIDS
,
SESSION_TRACK_TRANSACTION_CHARACTERISTICS
,
/* Transaction chistics */
SESSION_TRACK_TRANSACTION_STATE
,
/* Transaction state */
#ifdef USER_VAR_TRACKING
SESSION_TRACK_MYSQL_RESERVED1
,
SESSION_TRACK_MYSQL_RESERVED2
,
SESSION_TRACK_MYSQL_RESERVED3
,
SESSION_TRACK_MYSQL_RESERVED4
,
SESSION_TRACK_MYSQL_RESERVED5
,
SESSION_TRACK_MYSQL_RESERVED6
,
SESSION_TRACK_USER_VARIABLES
,
#endif // USER_VAR_TRACKING
SESSION_TRACK_always_at_the_end
/* must be last */
};
...
...
mysql-test/main/mysqld--help.result
View file @
82f3ceed
...
...
@@ -1151,8 +1151,6 @@ The following specify which files/extra groups are read (specified before remain
characteristics (isolation level, read only/read
write,snapshot - but not any work done / data modified
within the transaction).
--session-track-user-variables
Track changes to user variables.
--show-slave-auth-info
Show user and password in SHOW SLAVE HOSTS on this
master.
...
...
@@ -1758,7 +1756,6 @@ session-track-schema TRUE
session-track-state-change FALSE
session-track-system-variables autocommit,character_set_client,character_set_connection,character_set_results,time_zone
session-track-transaction-info OFF
session-track-user-variables FALSE
show-slave-auth-info FALSE
silent-startup FALSE
skip-grant-tables TRUE
...
...
mysql-test/main/mysqltest_tracking_info.result
View file @
82f3ceed
...
...
@@ -48,20 +48,4 @@ SET @@session.session_track_system_variables= @save_session_track_system_variabl
#
# MDEV-16470 - Session user variables tracker
#
SET @@session.session_track_user_variables=1;
SET @a=1;
SET @b=NULL;
SELECT @c:=10;
@c:=10
10
SET @@session.session_track_user_variables=0;
#
# mdev-22337 Assertion `Alloced_length >= (str_length + length +
net_length_size(length))' failed in Binary_string::q_net_store_data
on long MULTIPOLYGON query with session_track_user_variables=1
(optimized builds)
#
set @@session.session_track_user_variables=1;
set @a=repeat('X', 1029);
set @@session.session_track_user_variables=0;
# End of 10.5 tests
mysql-test/main/mysqltest_tracking_info.test
View file @
82f3ceed
...
...
@@ -49,24 +49,24 @@ SET @@session.session_track_system_variables= @save_session_track_system_variabl
--
echo
#
--
echo
# MDEV-16470 - Session user variables tracker
--
echo
#
SET
@@
session
.
session_track_user_variables
=
1
;
--
enable_session_track_info
SET
@
a
=
1
;
SET
@
b
=
NULL
;
SELECT
@
c
:=
10
;
--
disable_session_track_info
SET
@@
session
.
session_track_user_variables
=
0
;
--
echo
#
--
echo
# mdev-22337 Assertion `Alloced_length >= (str_length + length +
--
echo
net_length_size
(
length
))
' failed in Binary_string::q_net_store_data
--echo on long MULTIPOLYGON query with session_track_user_variables=1
--echo (optimized builds)
--echo #
set @@session.session_track_user_variables=1;
--enable_session_track_info
set @a=repeat('
X
'
,
1029
);
--
disable_session_track_info
set
@@
session
.
session_track_user_variables
=
0
;
#
SET @@session.session_track_user_variables=1;
#
--enable_session_track_info
#
SET @a=1;
#
SET @b=NULL;
#
SELECT @c:=10;
#
--disable_session_track_info
#
SET @@session.session_track_user_variables=0;
#
--echo #
#
--echo # mdev-22337 Assertion `Alloced_length >= (str_length + length +
#
--echo net_length_size(length))' failed in Binary_string::q_net_store_data
#
--echo on long MULTIPOLYGON query with session_track_user_variables=1
#
--echo (optimized builds)
#
--echo #
#
set @@session.session_track_user_variables=1;
#
--enable_session_track_info
#
set @a=repeat('X', 1029);
#
--disable_session_track_info
#
set @@session.session_track_user_variables=0;
--
echo
# End of 10.5 tests
mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
View file @
82f3ceed
...
...
@@ -3543,16 +3543,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,STATE,CHARACTERISTICS
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SESSION_TRACK_USER_VARIABLES
VARIABLE_SCOPE SESSION
VARIABLE_TYPE BOOLEAN
VARIABLE_COMMENT Track changes to user variables.
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME SKIP_EXTERNAL_LOCKING
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
...
...
sql/item_func.cc
View file @
82f3ceed
...
...
@@ -4787,10 +4787,12 @@ update_hash(user_var_entry *entry, bool set_null, void *ptr, size_t length,
entry
->
unsigned_flag
=
unsigned_arg
;
}
entry
->
type
=
type
;
#ifdef USER_VAR_TRACKING
#ifndef EMBEDDED_LIBRARY
THD
*
thd
=
current_thd
;
thd
->
session_tracker
.
user_variables
.
mark_as_changed
(
thd
,
entry
);
#endif
#endif // USER_VAR_TRACKING
return
0
;
}
...
...
sql/session_tracker.cc
View file @
82f3ceed
...
...
@@ -1183,6 +1183,7 @@ bool Session_state_change_tracker::store(THD *thd, String *buf)
return
false
;
}
#ifdef USER_VAR_TRACKING
bool
User_variables_tracker
::
update
(
THD
*
thd
,
set_var
*
)
{
...
...
@@ -1204,10 +1205,13 @@ bool User_variables_tracker::store(THD *thd, String *buf)
length
=
net_length_size
(
var
->
name
.
length
)
+
var
->
name
.
length
;
if
(
!
null_value
)
length
+=
net_length_size
(
value_str
.
length
())
+
value_str
.
length
();
else
length
+=
1
;
if
(
buf
->
reserve
(
sizeof
(
char
)
+
length
+
net_length_size
(
length
)))
return
true
;
// TODO: check max packet length MDEV-22709
buf
->
q_append
(
static_cast
<
char
>
(
SESSION_TRACK_USER_VARIABLES
));
buf
->
q_net_store_length
(
length
);
buf
->
q_net_store_data
(
reinterpret_cast
<
const
uchar
*>
(
var
->
name
.
str
),
...
...
@@ -1215,10 +1219,16 @@ bool User_variables_tracker::store(THD *thd, String *buf)
if
(
!
null_value
)
buf
->
q_net_store_data
(
reinterpret_cast
<
const
uchar
*>
(
value_str
.
ptr
()),
value_str
.
length
());
else
{
char
nullbuff
[
1
]
=
{
(
char
)
251
};
buf
->
q_append
(
nullbuff
,
sizeof
(
nullbuff
));
}
}
m_changed_user_variables
.
clear
();
return
false
;
}
#endif // USER_VAR_TRACKING
///////////////////////////////////////////////////////////////////////////////
...
...
sql/session_tracker.h
View file @
82f3ceed
...
...
@@ -35,7 +35,9 @@ enum enum_session_tracker
CURRENT_SCHEMA_TRACKER
,
/* Current schema */
SESSION_STATE_CHANGE_TRACKER
,
TRANSACTION_INFO_TRACKER
,
/* Transaction state */
#ifdef USER_VAR_TRACKING
USER_VARIABLES_TRACKER
,
#endif // USER_VAR_TRACKING
SESSION_TRACKER_END
/* must be the last */
};
...
...
@@ -395,6 +397,7 @@ class Transaction_state_tracker : public State_tracker
This is a tracker class that enables & manages the tracking of user variables.
*/
#ifdef USER_VAR_TRACKING
class
User_variables_tracker
:
public
State_tracker
{
Hash_set
<
const
user_var_entry
>
m_changed_user_variables
;
...
...
@@ -415,6 +418,7 @@ class User_variables_tracker: public State_tracker
}
void
deinit
()
{
m_changed_user_variables
.
~
Hash_set
();
}
};
#endif // USER_VAR_TRACKING
/**
...
...
@@ -445,7 +449,9 @@ class Session_tracker
Session_state_change_tracker
state_change
;
Transaction_state_tracker
transaction_info
;
Session_sysvars_tracker
sysvars
;
#ifdef USER_VAR_TRACKING
User_variables_tracker
user_variables
;
#endif // USER_VAR_TRACKING
Session_tracker
()
{
...
...
@@ -453,7 +459,9 @@ class Session_tracker
m_trackers
[
CURRENT_SCHEMA_TRACKER
]
=
&
current_schema
;
m_trackers
[
SESSION_STATE_CHANGE_TRACKER
]
=
&
state_change
;
m_trackers
[
TRANSACTION_INFO_TRACKER
]
=
&
transaction_info
;
#ifdef USER_VAR_TRACKING
m_trackers
[
USER_VARIABLES_TRACKER
]
=
&
user_variables
;
#endif // USER_VAR_TRACKING
}
void
enable
(
THD
*
thd
)
...
...
sql/sql_class.cc
View file @
82f3ceed
...
...
@@ -1739,7 +1739,9 @@ THD::~THD()
/* trick to make happy memory accounting system */
#ifndef EMBEDDED_LIBRARY
session_tracker
.
sysvars
.
deinit
();
#ifdef USER_VAR_TRACKING
session_tracker
.
user_variables
.
deinit
();
#endif // USER_VAR_TRACKING
#endif //EMBEDDED_LIBRARY
if
(
status_var
.
local_memory_used
!=
0
)
...
...
sql/sql_class.h
View file @
82f3ceed
...
...
@@ -793,7 +793,9 @@ typedef struct system_variables
ulong
session_track_transaction_info
;
my_bool
session_track_schema
;
my_bool
session_track_state_change
;
#ifdef USER_VAR_TRACKING
my_bool
session_track_user_variables
;
#endif // USER_VAR_TRACKING
my_bool
tcp_nodelay
;
ulong
threadpool_priority
;
...
...
sql/sys_vars.cc
View file @
82f3ceed
...
...
@@ -6647,6 +6647,7 @@ static Sys_var_mybool Sys_session_track_state_change(
ON_UPDATE
(
update_session_track_state_change
));
#ifdef USER_VAR_TRACKING
static
bool
update_session_track_user_variables
(
sys_var
*
self
,
THD
*
thd
,
enum_var_type
type
)
{
...
...
@@ -6661,6 +6662,7 @@ static Sys_var_mybool Sys_session_track_user_variables(
NO_MUTEX_GUARD
,
NOT_IN_BINLOG
,
ON_CHECK
(
0
),
ON_UPDATE
(
update_session_track_user_variables
));
#endif // USER_VAR_TRACKING
#endif //EMBEDDED_LIBRARY
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment