From 388ba068baba0cd4c88a1b5427f725ad4885eff6 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Fri, 3 Nov 2017 15:12:01 -0700 Subject: [PATCH] Post-merge fixes for mdev-12172, mdev-12176. --- mysql-test/r/default.result | 2 +- mysql-test/suite/funcs_1/r/storedproc.result | 13 ++++++----- .../gcol/inc/gcol_blocked_sql_funcs_main.inc | 2 +- .../r/gcol_blocked_sql_funcs_innodb.result | 4 ++-- .../r/gcol_blocked_sql_funcs_myisam.result | 4 ++-- .../r/sysvars_server_embedded,32bit.rdiff | 22 +++++++++++++++++++ .../sys_vars/r/sysvars_server_embedded.result | 14 ++++++++++++ .../vcol/r/vcol_blocked_sql_funcs.result | 4 ++-- .../vcol/t/vcol_blocked_sql_funcs_main.inc | 2 +- sql/item.h | 2 +- sql/item_cmpfunc.h | 1 + sql/sys_vars.cc | 3 ++- 12 files changed, 56 insertions(+), 17 deletions(-) diff --git a/mysql-test/r/default.result b/mysql-test/r/default.result index c0e786d9876b0..3b1912f4a55b5 100644 --- a/mysql-test/r/default.result +++ b/mysql-test/r/default.result @@ -547,7 +547,7 @@ CALL p1; ERROR 42S22: Unknown column 'par' in 'DEFAULT' DROP PROCEDURE p1; CREATE TABLE t1 (a INT DEFAULT VALUE(a)); -ERROR HY000: Function or expression 'values()' cannot be used in the DEFAULT clause of `a` +ERROR HY000: Function or expression 'value()' cannot be used in the DEFAULT clause of `a` CREATE TABLE t1 (a INT); CREATE TRIGGER tr1 AFTER INSERT ON t1 FOR EACH ROW CREATE TABLE t2 (a INT DEFAULT NEW.a); ERROR HY000: Function or expression 'NEW.a' cannot be used in the DEFAULT clause of `a` diff --git a/mysql-test/suite/funcs_1/r/storedproc.result b/mysql-test/suite/funcs_1/r/storedproc.result index 2c86e6c3e7371..b36f995d32fee 100644 --- a/mysql-test/suite/funcs_1/r/storedproc.result +++ b/mysql-test/suite/funcs_1/r/storedproc.result @@ -2775,7 +2775,7 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp SELECT * from t1 where f2=f1' at line 1 CREATE PROCEDURE values() SELECT * from t1 where f2=f1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'values() +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '() SELECT * from t1 where f2=f1' at line 1 CREATE PROCEDURE varbinary() SELECT * from t1 where f2=f1; @@ -5596,7 +5596,7 @@ CREATE PROCEDURE sp1() values:BEGIN SELECT @x; END// -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'values:BEGIN +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':BEGIN SELECT @x; END' at line 2 DROP PROCEDURE IF EXISTS sp1; @@ -9150,7 +9150,7 @@ CREATE PROCEDURE sp1() BEGIN declare values char; END// -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'values char; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'char; END' at line 3 DROP PROCEDURE IF EXISTS sp1; Warnings: @@ -11494,8 +11494,9 @@ BEGIN declare values condition for sqlstate '02000'; declare exit handler for values set @var2 = 1; END// -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'values condition for sqlstate '02000'; -declare exit handler for values set @var2' at line 3 +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'condition for sqlstate '02000'; +declare exit handler for values set @var2 = 1; +E' at line 3 DROP PROCEDURE IF EXISTS sp1; Warnings: Note 1305 PROCEDURE db_storedproc.sp1 does not exist @@ -13608,7 +13609,7 @@ CREATE PROCEDURE sp1( ) BEGIN declare values handler for sqlstate '02000' set @var2 = 1; END// -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'values handler for sqlstate '02000' set @var2 = 1; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'handler for sqlstate '02000' set @var2 = 1; END' at line 3 DROP PROCEDURE IF EXISTS sp1; Warnings: diff --git a/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc b/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc index 88091ce42a419..9435551ce6fb2 100644 --- a/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc +++ b/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc @@ -111,7 +111,7 @@ create table t1 (a int, b int generated always as (sleep(a)) virtual); --echo # VALUES() -- error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED -create table t1 (a varchar(1024), b varchar(1024) generated always as (values(a)) virtual); +create table t1 (a varchar(1024), b varchar(1024) generated always as (value(a)) virtual); --echo # Stored procedures diff --git a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result index 27270654e9bb8..fa8f2660aef85 100644 --- a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result +++ b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result @@ -70,8 +70,8 @@ ERROR HY000: Function or expression 'row_count()' cannot be used in the GENERATE create table t1 (a int, b int generated always as (sleep(a)) virtual); ERROR HY000: Function or expression 'sleep()' cannot be used in the GENERATED ALWAYS AS clause of `b` # VALUES() -create table t1 (a varchar(1024), b varchar(1024) generated always as (values(a)) virtual); -ERROR HY000: Function or expression 'values()' cannot be used in the GENERATED ALWAYS AS clause of `b` +create table t1 (a varchar(1024), b varchar(1024) generated always as (value(a)) virtual); +ERROR HY000: Function or expression 'value()' cannot be used in the GENERATED ALWAYS AS clause of `b` # Stored procedures create procedure p1() begin diff --git a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result index 24fd3b988c244..b777bb485de4f 100644 --- a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result +++ b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result @@ -72,8 +72,8 @@ ERROR HY000: Function or expression 'row_count()' cannot be used in the GENERATE create table t1 (a int, b int generated always as (sleep(a)) virtual); ERROR HY000: Function or expression 'sleep()' cannot be used in the GENERATED ALWAYS AS clause of `b` # VALUES() -create table t1 (a varchar(1024), b varchar(1024) generated always as (values(a)) virtual); -ERROR HY000: Function or expression 'values()' cannot be used in the GENERATED ALWAYS AS clause of `b` +create table t1 (a varchar(1024), b varchar(1024) generated always as (value(a)) virtual); +ERROR HY000: Function or expression 'value()' cannot be used in the GENERATED ALWAYS AS clause of `b` # Stored procedures create procedure p1() begin diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff index 5f09f1c26f882..ab019da30e09f 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff @@ -287,6 +287,19 @@ NUMERIC_BLOCK_SIZE 4096 ENUM_VALUE_LIST NULL READ_ONLY NO +@@ -1556,10 +1556,10 @@ + GLOBAL_VALUE_ORIGIN COMPILE-TIME + DEFAULT_VALUE 10000 + VARIABLE_SCOPE SESSION +-VARIABLE_TYPE BIGINT UNSIGNED ++VARIABLE_TYPE INT UNSIGNED + VARIABLE_COMMENT The minimum number of scalar elements in the value list of IN predicate that triggers its conversion to IN subquery + NUMERIC_MIN_VALUE 0 +-NUMERIC_MAX_VALUE 18446744073709551615 ++NUMERIC_MAX_VALUE 4294967295 + NUMERIC_BLOCK_SIZE 1 + ENUM_VALUE_LIST NULL + READ_ONLY NO @@ -1639,7 +1639,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 86400 @@ -1267,3 +1280,12 @@ VARIABLE_COMMENT Size of transaction coordinator log. ENUM_VALUE_LIST NULL READ_ONLY YES +@@ -5422,7 +5422,7 @@ + VARIABLE_TYPE BIGINT UNSIGNED + VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes + NUMERIC_MIN_VALUE 0 +-NUMERIC_MAX_VALUE 18446744073709551615 ++NUMERIC_MAX_VALUE 4294967295 + NUMERIC_BLOCK_SIZE 1 + ENUM_VALUE_LIST NULL + READ_ONLY NO diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index 0cc7df1bfa62f..d457169f5308c 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -1424,6 +1424,20 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO COMMAND_LINE_ARGUMENT REQUIRED +VARIABLE_NAME IN_SUBQUERY_CONVERSION_THRESHOLD +SESSION_VALUE 10000 +GLOBAL_VALUE 10000 +GLOBAL_VALUE_ORIGIN COMPILE-TIME +DEFAULT_VALUE 10000 +VARIABLE_SCOPE SESSION +VARIABLE_TYPE BIGINT UNSIGNED +VARIABLE_COMMENT The minimum number of scalar elements in the value list of IN predicate that triggers its conversion to IN subquery +NUMERIC_MIN_VALUE 0 +NUMERIC_MAX_VALUE 18446744073709551615 +NUMERIC_BLOCK_SIZE 1 +ENUM_VALUE_LIST NULL +READ_ONLY NO +COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME IN_TRANSACTION SESSION_VALUE 0 GLOBAL_VALUE NULL diff --git a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result index 2d5bcfe553d6c..19e8efb06ad28 100644 --- a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result +++ b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result @@ -127,8 +127,8 @@ ERROR HY000: Function or expression 'uuid_short()' cannot be used in the GENERAT create or replace table t1 (a varchar(1024) as (uuid()) PERSISTENT); ERROR HY000: Function or expression 'uuid()' cannot be used in the GENERATED ALWAYS AS clause of `a` # VALUES() -create or replace table t1 (a varchar(1024), b varchar(1024) as (values(a))); -ERROR HY000: Function or expression 'values()' cannot be used in the GENERATED ALWAYS AS clause of `b` +create or replace table t1 (a varchar(1024), b varchar(1024) as (value(a))); +ERROR HY000: Function or expression 'value()' cannot be used in the GENERATED ALWAYS AS clause of `b` # VERSION() create or replace table t1 (a varchar(1024), b varchar(1024) as (version()) PERSISTENT); ERROR HY000: Function or expression 'version()' cannot be used in the GENERATED ALWAYS AS clause of `b` diff --git a/mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc b/mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc index 37de02a2b2973..52324176694b5 100644 --- a/mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc +++ b/mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc @@ -187,7 +187,7 @@ create or replace table t1 (a varchar(1024) as (uuid()) PERSISTENT); --echo # VALUES() -- error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED -create or replace table t1 (a varchar(1024), b varchar(1024) as (values(a))); +create or replace table t1 (a varchar(1024), b varchar(1024) as (value(a))); --echo # VERSION() -- error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED diff --git a/sql/item.h b/sql/item.h index 9f76f0815621d..c7ef5202389d7 100644 --- a/sql/item.h +++ b/sql/item.h @@ -5506,7 +5506,7 @@ class Item_insert_value : public Item_field bool update_vcol_processor(void *arg) { return 0; } bool check_vcol_func_processor(void *arg) { - return mark_unsupported_function("values()", arg, VCOL_IMPOSSIBLE); + return mark_unsupported_function("value()", arg, VCOL_IMPOSSIBLE); } }; diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 71172dd92a063..2cb46deaafc03 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -2302,6 +2302,7 @@ class Item_func_in :public Item_func_opt_neg, Item_func_in(THD *thd, List &list): Item_func_opt_neg(thd, list), Predicant_to_list_comparator(thd, arg_count - 1), + transform_into_subq(false), array(0), have_null(0), arg_types_compatible(FALSE), emb_on_expr_nest(0) { } diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 3d7e5a6c7a614..7fc8fe05e86bc 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -5790,6 +5790,8 @@ static Sys_var_mybool Sys_session_track_state_change( ON_CHECK(0), ON_UPDATE(update_session_track_state_change)); +#endif //EMBEDDED_LIBRARY + static Sys_var_ulong Sys_in_subquery_conversion_threshold( "in_subquery_conversion_threshold", "The minimum number of scalar elements in the value list of " @@ -5797,4 +5799,3 @@ static Sys_var_ulong Sys_in_subquery_conversion_threshold( SESSION_VAR(in_subquery_conversion_threshold), CMD_LINE(OPT_ARG), VALID_RANGE(0, ULONG_MAX), DEFAULT(10000), BLOCK_SIZE(1)); -#endif //EMBEDDED_LIBRARY