summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2022-07-18 13:38:27 +0200
committerSergei Golubchik <serg@mariadb.org>2022-07-26 14:42:32 +0200
commitbc4098582b76d24492b08b0a0df664031756a32e (patch)
tree404279e909aadce0ae5cf89331052f0f4edd79c5
parent0ee5cf837e3a0464acc20db2a2aee0adaff3f2ac (diff)
downloadmariadb-git-bc4098582b76d24492b08b0a0df664031756a32e.tar.gz
MDEV-29074 GET_BIT variables crash in SET STATEMENT
-rw-r--r--mysql-test/main/set_statement.result12
-rw-r--r--mysql-test/main/set_statement.test10
-rw-r--r--sql/sql_parse.cc1
3 files changed, 23 insertions, 0 deletions
diff --git a/mysql-test/main/set_statement.result b/mysql-test/main/set_statement.result
index 76f943edfc6..9e9d7e8c74e 100644
--- a/mysql-test/main/set_statement.result
+++ b/mysql-test/main/set_statement.result
@@ -1242,3 +1242,15 @@ t1 CREATE TABLE `t1` (
`c1` varchar(3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
+#
+# MDEV-29074 GET_BIT variables crash in SET STATEMENT
+#
+set statement log_queries_not_using_indexes=1 for select @@log_queries_not_using_indexes;
+@@log_queries_not_using_indexes
+1
+select @@log_queries_not_using_indexes;
+@@log_queries_not_using_indexes
+0
+#
+# End of 10.3 tests
+#
diff --git a/mysql-test/main/set_statement.test b/mysql-test/main/set_statement.test
index 7af970e952f..0df223860b9 100644
--- a/mysql-test/main/set_statement.test
+++ b/mysql-test/main/set_statement.test
@@ -1159,3 +1159,13 @@ SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR CREATE TABLE t1 AS SELECT
SHOW CREATE TABLE t1;
DROP TABLE t1;
+
+--echo #
+--echo # MDEV-29074 GET_BIT variables crash in SET STATEMENT
+--echo #
+set statement log_queries_not_using_indexes=1 for select @@log_queries_not_using_indexes;
+select @@log_queries_not_using_indexes;
+
+--echo #
+--echo # End of 10.3 tests
+--echo #
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index e9d2f2074b5..5807be62339 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -3313,6 +3313,7 @@ bool run_set_statement_if_requested(THD *thd, LEX *lex)
{
switch (v->var->option.var_type & GET_TYPE_MASK)
{
+ case GET_BIT:
case GET_BOOL:
case GET_INT:
case GET_LONG: