diff options
author | Aleksey Midenkov <midenok@gmail.com> | 2020-02-02 15:13:29 +0300 |
---|---|---|
committer | Aleksey Midenkov <midenok@gmail.com> | 2020-02-02 15:13:29 +0300 |
commit | 006f6f97b10703426c497827c370f84db72c31ef (patch) | |
tree | c88edec81ef504a3d42ad8eeb0183fb00f6c3dad | |
parent | 14e6f0251ccc0056ade6637ea34bb40e72024fcd (diff) | |
download | mariadb-git-006f6f97b10703426c497827c370f84db72c31ef.tar.gz |
MDEV-17798 System variable system_versioning_asof accepts wrong values
-rw-r--r-- | mysql-test/suite/versioning/r/sysvars.result | 16 | ||||
-rw-r--r-- | mysql-test/suite/versioning/t/sysvars.test | 16 | ||||
-rw-r--r-- | sql/sys_vars.ic | 4 |
3 files changed, 34 insertions, 2 deletions
diff --git a/mysql-test/suite/versioning/r/sysvars.result b/mysql-test/suite/versioning/r/sysvars.result index b23742462d1..899eda91a81 100644 --- a/mysql-test/suite/versioning/r/sysvars.result +++ b/mysql-test/suite/versioning/r/sysvars.result @@ -31,6 +31,14 @@ set global system_versioning_asof= 1; ERROR 42000: Incorrect argument type to variable 'system_versioning_asof' set global system_versioning_asof= 1.1; ERROR 42000: Incorrect argument type to variable 'system_versioning_asof' +set global system_versioning_asof= '2011-02-29 00:00'; +ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of '2011-02-29 00:00' +set global system_versioning_asof= '2011-02-28 24:00'; +ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of '2011-02-28 24:00' +set global system_versioning_asof= '2011-00-28 00:00'; +ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of '2011-00-28 00:00' +set global system_versioning_asof= '0000-00-00 00:00'; +ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of '0000-00-00 00:00' set system_versioning_asof= 'alley'; ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of 'alley' set system_versioning_asof= null; @@ -39,6 +47,14 @@ set system_versioning_asof= 1; ERROR 42000: Incorrect argument type to variable 'system_versioning_asof' set system_versioning_asof= 1.1; ERROR 42000: Incorrect argument type to variable 'system_versioning_asof' +set system_versioning_asof= '2011-02-29 00:00'; +ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of '2011-02-29 00:00' +set system_versioning_asof= '2011-02-28 24:00'; +ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of '2011-02-28 24:00' +set system_versioning_asof= '2011-00-28 00:00'; +ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of '2011-00-28 00:00' +set system_versioning_asof= '0000-00-00 00:00'; +ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of '0000-00-00 00:00' # GLOBAL @@system_versioning_asof set global system_versioning_asof= '1911-11-11 11:11:11.1111119'; Warnings: diff --git a/mysql-test/suite/versioning/t/sysvars.test b/mysql-test/suite/versioning/t/sysvars.test index 160af12fe02..8c8311d66fc 100644 --- a/mysql-test/suite/versioning/t/sysvars.test +++ b/mysql-test/suite/versioning/t/sysvars.test @@ -23,6 +23,14 @@ set global system_versioning_asof= null; set global system_versioning_asof= 1; --error ER_WRONG_TYPE_FOR_VAR set global system_versioning_asof= 1.1; +--error ER_WRONG_VALUE_FOR_VAR +set global system_versioning_asof= '2011-02-29 00:00'; +--error ER_WRONG_VALUE_FOR_VAR +set global system_versioning_asof= '2011-02-28 24:00'; +--error ER_WRONG_VALUE_FOR_VAR +set global system_versioning_asof= '2011-00-28 00:00'; +--error ER_WRONG_VALUE_FOR_VAR +set global system_versioning_asof= '0000-00-00 00:00'; # session --error ER_WRONG_VALUE_FOR_VAR @@ -33,6 +41,14 @@ set system_versioning_asof= null; set system_versioning_asof= 1; --error ER_WRONG_TYPE_FOR_VAR set system_versioning_asof= 1.1; +--error ER_WRONG_VALUE_FOR_VAR +set system_versioning_asof= '2011-02-29 00:00'; +--error ER_WRONG_VALUE_FOR_VAR +set system_versioning_asof= '2011-02-28 24:00'; +--error ER_WRONG_VALUE_FOR_VAR +set system_versioning_asof= '2011-00-28 00:00'; +--error ER_WRONG_VALUE_FOR_VAR +set system_versioning_asof= '0000-00-00 00:00'; --echo # GLOBAL @@system_versioning_asof set global system_versioning_asof= '1911-11-11 11:11:11.1111119'; diff --git a/sql/sys_vars.ic b/sql/sys_vars.ic index c6d7b0593d0..ec8d9ef201a 100644 --- a/sql/sys_vars.ic +++ b/sql/sys_vars.ic @@ -2634,7 +2634,7 @@ public: if (!Sys_var_enum::do_check(thd, var)) return false; MYSQL_TIME ltime; - bool res= var->value->get_date(<ime, 0); + bool res= var->value->get_date(<ime, TIME_NO_ZERO_IN_DATE|TIME_NO_ZERO_DATE); if (!res) { var->save_result.ulonglong_value= SYSTEM_TIME_AS_OF; @@ -2651,7 +2651,7 @@ private: { if (var->value) { - res= var->value->get_date(&out.ltime, 0); + res= var->value->get_date(&out.ltime, TIME_NO_ZERO_IN_DATE|TIME_NO_ZERO_DATE); } else // set DEFAULT from global var { |