diff options
Diffstat (limited to 'mysql-test/main/default_session.test')
-rw-r--r-- | mysql-test/main/default_session.test | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/mysql-test/main/default_session.test b/mysql-test/main/default_session.test new file mode 100644 index 00000000..5e582bd5 --- /dev/null +++ b/mysql-test/main/default_session.test @@ -0,0 +1,106 @@ +# +# DEFAULT clause with functions that depend on the current session state +# + +source include/not_embedded.inc; + +create database mysqltest1; + +create user ''@localhost; +create user foo@localhost; +create role bar; +grant select on *.* to ''@localhost; +grant select,insert on *.* to foo@localhost; +grant select,insert on *.* to bar; +grant bar to ''@localhost; + +create table t1 (n varchar(100), + u varchar(100) default user(), + cu varchar(100) default current_user(), + cr varchar(100) default current_role(), + d varchar(100) default database()); + +create definer=foo@localhost view mysqltest1.v1 as select * from t1; +create definer=bar view v2 as select * from t1; +create view v3 as select * from v2; + +create definer=foo@localhost view mysqltest1.v4 as select default(n),default(u),default(cu),default(cr), default(d) from t1; +create definer=bar view v5 as select default(n),default(u),default(cu),default(cr), default(d) from t1; +create view v6 as select * from v5; + +insert t1 (n) values ('t1'); +insert mysqltest1.v1 (n) values ('v1'); +insert v2 (n) values ('v2'); +insert v3 (n) values ('v3'); + +select default(n),default(u),default(cu),default(cr), default(d) from t1 limit 1; +select * from mysqltest1.v4 limit 1; +select * from v5 limit 1; +select * from v6 limit 1; + +connect (conn,localhost,conn,,mysqltest1); +set role bar; +insert test.t1 (n) values ('t1'); +insert v1 (n) values ('v1'); +insert test.v2 (n) values ('v2'); +insert test.v3 (n) values ('v3'); + +select default(n),default(u),default(cu),default(cr), default(d) from test.t1 limit 1; +select * from v4 limit 1; +select * from test.v5 limit 1; +select * from test.v6 limit 1; +connection default; +disconnect conn; + +select * from t1; +drop database mysqltest1; +drop view v2, v3, v5, v6; +drop table t1; +drop user ''@localhost; +drop user foo@localhost; +drop role bar; + +create table t1 (a date, + mn varchar(100) default monthname(a), + dn varchar(100) default dayname(a), + df varchar(100) default date_format(a, "%a, %b")); + +insert t1 (a) values ('2010-12-2'); +set lc_time_names=de_DE; +insert t1 (a) values ('2010-12-2'); +set lc_time_names=default; + +select * from t1; +drop table t1; + +create table t1 (a varchar(100) default @@sql_mode); +insert t1 () values (); +set sql_mode=ansi; +insert t1 () values (); +set sql_mode=default; +select * from t1; +drop table t1; + +# +# MDEV-21249 MariaDB 10.3.10 When referring to bigint to generate timestamp data in the virtual generated column, the value of the generated column does not change when the time zone changes +# +set time_zone='+00:00'; +create table t1 (a int, b datetime default from_unixtime(a), c datetime); +insert t1 (a, c) values (1569495327, from_unixtime(1569495327)); +set time_zone='+01:00'; +insert t1 (a, c) values (1569495327, from_unixtime(1569495327)); +flush tables; +insert t1 (a, c) values (1569495327, from_unixtime(1569495327)); +select * from t1; +drop table t1; + +# same with vcols +set time_zone = "+00:00"; +create table t1 (a int, b timestamp as (from_unixtime(a)) virtual); +insert into t1 (a) value (1569495327); +select a, b, from_unixtime(a) from t1; +set time_zone = "+01:00"; +select a, b, from_unixtime(a) from t1; +flush tables; +select a, b, from_unixtime(a) from t1; +drop table t1; |