summaryrefslogtreecommitdiff
path: root/mysql-test/suite/sys_vars
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/sys_vars')
-rw-r--r--mysql-test/suite/sys_vars/inc/secure_timestamp_func.inc49
-rw-r--r--mysql-test/suite/sys_vars/r/secure_timestamp_no.result40
-rw-r--r--mysql-test/suite/sys_vars/r/secure_timestamp_rpl.result42
-rw-r--r--mysql-test/suite/sys_vars/r/secure_timestamp_super.result41
-rw-r--r--mysql-test/suite/sys_vars/r/secure_timestamp_yes.result42
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_embedded.result14
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result14
-rw-r--r--mysql-test/suite/sys_vars/t/secure_timestamp_no-slave.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/secure_timestamp_no.test4
-rw-r--r--mysql-test/suite/sys_vars/t/secure_timestamp_rpl-slave.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/secure_timestamp_rpl.test4
-rw-r--r--mysql-test/suite/sys_vars/t/secure_timestamp_super-slave.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/secure_timestamp_super.test4
-rw-r--r--mysql-test/suite/sys_vars/t/secure_timestamp_yes-slave.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/secure_timestamp_yes.test4
15 files changed, 262 insertions, 0 deletions
diff --git a/mysql-test/suite/sys_vars/inc/secure_timestamp_func.inc b/mysql-test/suite/sys_vars/inc/secure_timestamp_func.inc
new file mode 100644
index 00000000000..8bc3e42df59
--- /dev/null
+++ b/mysql-test/suite/sys_vars/inc/secure_timestamp_func.inc
@@ -0,0 +1,49 @@
+#
+# MDEV-15923 option to control who can set session @@timestamp
+#
+source include/have_binlog_format_statement.inc;
+source include/master-slave.inc;
+
+connection slave;
+select @@secure_timestamp;
+
+### SUPER
+disable_abort_on_error;
+set timestamp=1234567890.101112;
+enable_abort_on_error;
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'SUPER';
+
+### non-privileged user
+create user foo@127.0.0.1;
+connect con2,127.0.0.1,foo,,test,$SLAVE_MYPORT;
+disable_abort_on_error;
+set timestamp=1234567890.101112;
+enable_abort_on_error;
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'non-privileged';
+disconnect con2;
+connection slave;
+drop user foo@127.0.0.1;
+
+### replication
+connection master;
+set time_zone='+00:00';
+set timestamp=1234567890.101112;
+select @@timestamp, now(6);
+
+create table t1 (b varchar(20), a timestamp(6) default current_timestamp(6));
+insert t1 (b) values ('replicated');
+sync_slave_with_master;
+create trigger t1rbr before insert on t1 for each row set new.a=now(6);
+set @@global.slave_run_triggers_for_rbr= yes;
+binlog 'LQfqWg8BAAAA/AAAAAABAAABAAQAMTAuMy42LU1hcmlhREItZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtB+paEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEwQADQgICAoKCgFlBcaR';
+binlog '0gKWSRMBAAAAMQAAAHQDAAAAAB8AAAAAAAEABHRlc3QAAnQxAAIPEQMUAAYBQFUzwA==0gKWSRcBAAAAMAAAAKQDAAAAAB8AAAAAAAEAAv/8BmJpbmxvZ0mWAtIBivg3mwo+';
+set @@global.slave_run_triggers_for_rbr= default;
+select b, if(a > 20100101, 'READONLY', 'EDITABLE') as 'REPLICATION' from t1;
+connection master;
+#set binlog_format=row;
+#insert t1 (b) values ('binlog');
+#let datadir=`select @@datadir`;
+#exec $MYSQL_BINLOG $datadir/master-bin.000001;
+drop table t1;
+
+source include/rpl_end.inc;
diff --git a/mysql-test/suite/sys_vars/r/secure_timestamp_no.result b/mysql-test/suite/sys_vars/r/secure_timestamp_no.result
new file mode 100644
index 00000000000..34eeb083c28
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/secure_timestamp_no.result
@@ -0,0 +1,40 @@
+include/master-slave.inc
+[connection master]
+connection slave;
+select @@secure_timestamp;
+@@secure_timestamp
+NO
+set timestamp=1234567890.101112;
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'SUPER';
+SUPER
+EDITABLE
+create user foo@127.0.0.1;
+connect con2,127.0.0.1,foo,,test,$SLAVE_MYPORT;
+set timestamp=1234567890.101112;
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'non-privileged';
+non-privileged
+EDITABLE
+disconnect con2;
+connection slave;
+drop user foo@127.0.0.1;
+connection master;
+set time_zone='+00:00';
+set timestamp=1234567890.101112;
+select @@timestamp, now(6);
+@@timestamp now(6)
+1234567890.101112 2009-02-13 23:31:30.101112
+create table t1 (b varchar(20), a timestamp(6) default current_timestamp(6));
+insert t1 (b) values ('replicated');
+connection slave;
+create trigger t1rbr before insert on t1 for each row set new.a=now(6);
+set @@global.slave_run_triggers_for_rbr= yes;
+binlog 'LQfqWg8BAAAA/AAAAAABAAABAAQAMTAuMy42LU1hcmlhREItZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtB+paEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEwQADQgICAoKCgFlBcaR';
+binlog '0gKWSRMBAAAAMQAAAHQDAAAAAB8AAAAAAAEABHRlc3QAAnQxAAIPEQMUAAYBQFUzwA==0gKWSRcBAAAAMAAAAKQDAAAAAB8AAAAAAAEAAv/8BmJpbmxvZ0mWAtIBivg3mwo+';
+set @@global.slave_run_triggers_for_rbr= default;
+select b, if(a > 20100101, 'READONLY', 'EDITABLE') as 'REPLICATION' from t1;
+b REPLICATION
+replicated EDITABLE
+binlog EDITABLE
+connection master;
+drop table t1;
+include/rpl_end.inc
diff --git a/mysql-test/suite/sys_vars/r/secure_timestamp_rpl.result b/mysql-test/suite/sys_vars/r/secure_timestamp_rpl.result
new file mode 100644
index 00000000000..e2d79745a46
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/secure_timestamp_rpl.result
@@ -0,0 +1,42 @@
+include/master-slave.inc
+[connection master]
+connection slave;
+select @@secure_timestamp;
+@@secure_timestamp
+REPLICATION
+set timestamp=1234567890.101112;
+ERROR HY000: The MariaDB server is running with the --secure-timestamp=REPLICATION option so it cannot execute this statement
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'SUPER';
+SUPER
+READONLY
+create user foo@127.0.0.1;
+connect con2,127.0.0.1,foo,,test,$SLAVE_MYPORT;
+set timestamp=1234567890.101112;
+ERROR HY000: The MariaDB server is running with the --secure-timestamp=REPLICATION option so it cannot execute this statement
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'non-privileged';
+non-privileged
+READONLY
+disconnect con2;
+connection slave;
+drop user foo@127.0.0.1;
+connection master;
+set time_zone='+00:00';
+set timestamp=1234567890.101112;
+select @@timestamp, now(6);
+@@timestamp now(6)
+1234567890.101112 2009-02-13 23:31:30.101112
+create table t1 (b varchar(20), a timestamp(6) default current_timestamp(6));
+insert t1 (b) values ('replicated');
+connection slave;
+create trigger t1rbr before insert on t1 for each row set new.a=now(6);
+set @@global.slave_run_triggers_for_rbr= yes;
+binlog 'LQfqWg8BAAAA/AAAAAABAAABAAQAMTAuMy42LU1hcmlhREItZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtB+paEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEwQADQgICAoKCgFlBcaR';
+binlog '0gKWSRMBAAAAMQAAAHQDAAAAAB8AAAAAAAEABHRlc3QAAnQxAAIPEQMUAAYBQFUzwA==0gKWSRcBAAAAMAAAAKQDAAAAAB8AAAAAAAEAAv/8BmJpbmxvZ0mWAtIBivg3mwo+';
+set @@global.slave_run_triggers_for_rbr= default;
+select b, if(a > 20100101, 'READONLY', 'EDITABLE') as 'REPLICATION' from t1;
+b REPLICATION
+replicated EDITABLE
+binlog READONLY
+connection master;
+drop table t1;
+include/rpl_end.inc
diff --git a/mysql-test/suite/sys_vars/r/secure_timestamp_super.result b/mysql-test/suite/sys_vars/r/secure_timestamp_super.result
new file mode 100644
index 00000000000..6fbb5e5fbf0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/secure_timestamp_super.result
@@ -0,0 +1,41 @@
+include/master-slave.inc
+[connection master]
+connection slave;
+select @@secure_timestamp;
+@@secure_timestamp
+SUPER
+set timestamp=1234567890.101112;
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'SUPER';
+SUPER
+EDITABLE
+create user foo@127.0.0.1;
+connect con2,127.0.0.1,foo,,test,$SLAVE_MYPORT;
+set timestamp=1234567890.101112;
+ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'non-privileged';
+non-privileged
+READONLY
+disconnect con2;
+connection slave;
+drop user foo@127.0.0.1;
+connection master;
+set time_zone='+00:00';
+set timestamp=1234567890.101112;
+select @@timestamp, now(6);
+@@timestamp now(6)
+1234567890.101112 2009-02-13 23:31:30.101112
+create table t1 (b varchar(20), a timestamp(6) default current_timestamp(6));
+insert t1 (b) values ('replicated');
+connection slave;
+create trigger t1rbr before insert on t1 for each row set new.a=now(6);
+set @@global.slave_run_triggers_for_rbr= yes;
+binlog 'LQfqWg8BAAAA/AAAAAABAAABAAQAMTAuMy42LU1hcmlhREItZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtB+paEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEwQADQgICAoKCgFlBcaR';
+binlog '0gKWSRMBAAAAMQAAAHQDAAAAAB8AAAAAAAEABHRlc3QAAnQxAAIPEQMUAAYBQFUzwA==0gKWSRcBAAAAMAAAAKQDAAAAAB8AAAAAAAEAAv/8BmJpbmxvZ0mWAtIBivg3mwo+';
+set @@global.slave_run_triggers_for_rbr= default;
+select b, if(a > 20100101, 'READONLY', 'EDITABLE') as 'REPLICATION' from t1;
+b REPLICATION
+replicated EDITABLE
+binlog EDITABLE
+connection master;
+drop table t1;
+include/rpl_end.inc
diff --git a/mysql-test/suite/sys_vars/r/secure_timestamp_yes.result b/mysql-test/suite/sys_vars/r/secure_timestamp_yes.result
new file mode 100644
index 00000000000..d317cfc30b2
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/secure_timestamp_yes.result
@@ -0,0 +1,42 @@
+include/master-slave.inc
+[connection master]
+connection slave;
+select @@secure_timestamp;
+@@secure_timestamp
+YES
+set timestamp=1234567890.101112;
+ERROR HY000: The MariaDB server is running with the --secure-timestamp=YES option so it cannot execute this statement
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'SUPER';
+SUPER
+READONLY
+create user foo@127.0.0.1;
+connect con2,127.0.0.1,foo,,test,$SLAVE_MYPORT;
+set timestamp=1234567890.101112;
+ERROR HY000: The MariaDB server is running with the --secure-timestamp=YES option so it cannot execute this statement
+select if(now(6) > 20100101, 'READONLY', 'EDITABLE') as 'non-privileged';
+non-privileged
+READONLY
+disconnect con2;
+connection slave;
+drop user foo@127.0.0.1;
+connection master;
+set time_zone='+00:00';
+set timestamp=1234567890.101112;
+select @@timestamp, now(6);
+@@timestamp now(6)
+1234567890.101112 2009-02-13 23:31:30.101112
+create table t1 (b varchar(20), a timestamp(6) default current_timestamp(6));
+insert t1 (b) values ('replicated');
+connection slave;
+create trigger t1rbr before insert on t1 for each row set new.a=now(6);
+set @@global.slave_run_triggers_for_rbr= yes;
+binlog 'LQfqWg8BAAAA/AAAAAABAAABAAQAMTAuMy42LU1hcmlhREItZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtB+paEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEwQADQgICAoKCgFlBcaR';
+binlog '0gKWSRMBAAAAMQAAAHQDAAAAAB8AAAAAAAEABHRlc3QAAnQxAAIPEQMUAAYBQFUzwA==0gKWSRcBAAAAMAAAAKQDAAAAAB8AAAAAAAEAAv/8BmJpbmxvZ0mWAtIBivg3mwo+';
+set @@global.slave_run_triggers_for_rbr= default;
+select b, if(a > 20100101, 'READONLY', 'EDITABLE') as 'REPLICATION' from t1;
+b REPLICATION
+replicated READONLY
+binlog READONLY
+connection master;
+drop table t1;
+include/rpl_end.inc
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 89b7b5c97cf..432c9f4c114 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
@@ -3540,6 +3540,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SECURE_TIMESTAMP
+SESSION_VALUE NULL
+GLOBAL_VALUE NO
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE NO
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE ENUM
+VARIABLE_COMMENT Restricts direct setting of a session timestamp. Possible levels are: YES - timestamp cannot deviate from the system clock, REPLICATION - replication thread can adjust timestamp to match the master's, SUPER - a user with this privilege and a replication thread can adjust timestamp, NO - historical behavior, anyone can modify session timestamp
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NO,SUPER,REPLICATION,YES
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SERVER_ID
SESSION_VALUE 1
GLOBAL_VALUE 1
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
index 3246d00d20e..cdc2f81e088 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
@@ -4156,6 +4156,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SECURE_TIMESTAMP
+SESSION_VALUE NULL
+GLOBAL_VALUE NO
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE NO
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE ENUM
+VARIABLE_COMMENT Restricts direct setting of a session timestamp. Possible levels are: YES - timestamp cannot deviate from the system clock, REPLICATION - replication thread can adjust timestamp to match the master's, SUPER - a user with this privilege and a replication thread can adjust timestamp, NO - historical behavior, anyone can modify session timestamp
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NO,SUPER,REPLICATION,YES
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SERVER_ID
SESSION_VALUE 1
GLOBAL_VALUE 1
diff --git a/mysql-test/suite/sys_vars/t/secure_timestamp_no-slave.opt b/mysql-test/suite/sys_vars/t/secure_timestamp_no-slave.opt
new file mode 100644
index 00000000000..4c9000c0ebe
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_timestamp_no-slave.opt
@@ -0,0 +1 @@
+--secure-timestamp=no
diff --git a/mysql-test/suite/sys_vars/t/secure_timestamp_no.test b/mysql-test/suite/sys_vars/t/secure_timestamp_no.test
new file mode 100644
index 00000000000..8871666abd0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_timestamp_no.test
@@ -0,0 +1,4 @@
+#
+# MDEV-15923 option to control who can set session @@timestamp
+#
+source inc/secure_timestamp_func.inc;
diff --git a/mysql-test/suite/sys_vars/t/secure_timestamp_rpl-slave.opt b/mysql-test/suite/sys_vars/t/secure_timestamp_rpl-slave.opt
new file mode 100644
index 00000000000..13754861d0f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_timestamp_rpl-slave.opt
@@ -0,0 +1 @@
+--secure-timestamp=replication
diff --git a/mysql-test/suite/sys_vars/t/secure_timestamp_rpl.test b/mysql-test/suite/sys_vars/t/secure_timestamp_rpl.test
new file mode 100644
index 00000000000..8871666abd0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_timestamp_rpl.test
@@ -0,0 +1,4 @@
+#
+# MDEV-15923 option to control who can set session @@timestamp
+#
+source inc/secure_timestamp_func.inc;
diff --git a/mysql-test/suite/sys_vars/t/secure_timestamp_super-slave.opt b/mysql-test/suite/sys_vars/t/secure_timestamp_super-slave.opt
new file mode 100644
index 00000000000..f747ec6c0c9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_timestamp_super-slave.opt
@@ -0,0 +1 @@
+--secure-timestamp=super
diff --git a/mysql-test/suite/sys_vars/t/secure_timestamp_super.test b/mysql-test/suite/sys_vars/t/secure_timestamp_super.test
new file mode 100644
index 00000000000..8871666abd0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_timestamp_super.test
@@ -0,0 +1,4 @@
+#
+# MDEV-15923 option to control who can set session @@timestamp
+#
+source inc/secure_timestamp_func.inc;
diff --git a/mysql-test/suite/sys_vars/t/secure_timestamp_yes-slave.opt b/mysql-test/suite/sys_vars/t/secure_timestamp_yes-slave.opt
new file mode 100644
index 00000000000..a74d68957ef
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_timestamp_yes-slave.opt
@@ -0,0 +1 @@
+--secure-timestamp=yes
diff --git a/mysql-test/suite/sys_vars/t/secure_timestamp_yes.test b/mysql-test/suite/sys_vars/t/secure_timestamp_yes.test
new file mode 100644
index 00000000000..8871666abd0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/secure_timestamp_yes.test
@@ -0,0 +1,4 @@
+#
+# MDEV-15923 option to control who can set session @@timestamp
+#
+source inc/secure_timestamp_func.inc;