summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorAlfranio Correia <alfranio.correia@sun.com>2010-01-13 12:22:34 +0000
committerAlfranio Correia <alfranio.correia@sun.com>2010-01-13 12:22:34 +0000
commit40949a3110a97e41d48c24e51004851521dd807b (patch)
treedddf2d3ec6941e3f9c47deefb52bcfa19ef6a23e /mysql-test
parent26b12adb5d19fea7308edd0c2b49e1c972ea79c3 (diff)
parent51caeae915d3a5add57a785e69b7ce52cac084ad (diff)
downloadmariadb-git-40949a3110a97e41d48c24e51004851521dd807b.tar.gz
merge mysql-next-mr --> mysql-5.1-rpl-merge
Conflicts: Text conflict in sql/log.cc Text conflict in sql/slave.cc Text conflict in sql/sql_base.cc
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/include/have_perfschema.inc20
-rw-r--r--mysql-test/include/mysqld--help.inc3
-rwxr-xr-xmysql-test/lib/v1/mysql-test-run.pl3
-rw-r--r--mysql-test/r/events_scheduling.result19
-rw-r--r--mysql-test/r/index_merge_myisam.result18
-rw-r--r--mysql-test/r/mysqld--help-notwin.result13
-rw-r--r--mysql-test/r/mysqld--help-win.result13
-rw-r--r--mysql-test/r/optimizer_switch_eng_cond_pushdown1.result5
-rw-r--r--mysql-test/r/optimizer_switch_eng_cond_pushdown2.result5
-rw-r--r--mysql-test/r/subselect3.result50
-rw-r--r--mysql-test/suite/ndb/r/ndb_condition_pushdown.result34
-rw-r--r--mysql-test/suite/ndb/r/ndb_gis.result2
-rw-r--r--mysql-test/suite/ndb/r/ndb_index_unique.result6
-rw-r--r--mysql-test/suite/ndb/t/ndb_condition_pushdown.test34
-rw-r--r--mysql-test/suite/ndb/t/ndb_gis.test2
-rw-r--r--mysql-test/suite/ndb/t/ndb_index_unique.test6
-rw-r--r--mysql-test/suite/rpl/t/disabled.def2
-rw-r--r--mysql-test/suite/rpl/t/rpl_cross_version-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/r/all_vars.result18
-rw-r--r--mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result122
-rw-r--r--mysql-test/suite/sys_vars/r/optimizer_switch_basic.result26
-rw-r--r--mysql-test/suite/sys_vars/r/performance_schema_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_events_waits_history_long_size_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_events_waits_history_size_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_cond_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_cond_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_file_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_file_handles_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_file_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_mutex_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_mutex_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_rwlock_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_rwlock_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_table_handles_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_table_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_thread_classes_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/pfs_max_thread_instances_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/t/all_vars.test41
-rw-r--r--mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test48
-rw-r--r--mysql-test/suite/sys_vars/t/performance_schema_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/performance_schema_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic.test47
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic.test47
-rw-r--r--mysql-test/t/events_scheduling.test26
-rw-r--r--mysql-test/t/optimizer_switch_eng_cond_pushdown1-master.opt1
-rw-r--r--mysql-test/t/optimizer_switch_eng_cond_pushdown1.test5
-rw-r--r--mysql-test/t/optimizer_switch_eng_cond_pushdown2-master.opt1
-rw-r--r--mysql-test/t/optimizer_switch_eng_cond_pushdown2.test5
-rw-r--r--mysql-test/t/subselect3.test47
77 files changed, 1613 insertions, 100 deletions
diff --git a/mysql-test/include/have_perfschema.inc b/mysql-test/include/have_perfschema.inc
new file mode 100644
index 00000000000..6d52a53b6b1
--- /dev/null
+++ b/mysql-test/include/have_perfschema.inc
@@ -0,0 +1,20 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+if (!`SELECT count(*) FROM information_schema.engines WHERE
+ (support = 'YES' OR support = 'DEFAULT') AND
+ engine = 'PERFORMANCE_SCHEMA'`){
+ skip Need performance schema compiled in;
+}
diff --git a/mysql-test/include/mysqld--help.inc b/mysql-test/include/mysqld--help.inc
index 82bf65bc362..3c8d19107c9 100644
--- a/mysql-test/include/mysqld--help.inc
+++ b/mysql-test/include/mysqld--help.inc
@@ -11,7 +11,8 @@ exec $MYSQLD_BOOTSTRAP_CMD --symbolic-links=0 --lower-case-table-names=1 --help
perl;
@skipvars=qw/basedir open-files-limit general-log-file log
- log-slow-queries pid-file slow-query-log-file/;
+ log-slow-queries pid-file slow-query-log-file
+ datadir slave-load-tmpdir tmpdir/;
@plugins=qw/innodb ndb ndbcluster safemalloc debug temp-pool ssl des-key-file
thread-concurrency super-large-pages mutex-deadlock-detector/;
@env=qw/MYSQLTEST_VARDIR MYSQL_TEST_DIR MYSQL_LIBDIR MYSQL_SHAREDIR/;
diff --git a/mysql-test/lib/v1/mysql-test-run.pl b/mysql-test/lib/v1/mysql-test-run.pl
index 9ae3208fc24..4202334a244 100755
--- a/mysql-test/lib/v1/mysql-test-run.pl
+++ b/mysql-test/lib/v1/mysql-test-run.pl
@@ -3911,7 +3911,7 @@ sub mysqld_arguments ($$$$) {
if ( $opt_valgrind_mysqld )
{
- mtr_add_arg($args, "%s--skip-safemalloc", $prefix);
+ mtr_add_arg($args, "%s--loose-skip-safemalloc", $prefix);
if ( $mysql_version_id < 50100 )
{
@@ -5208,7 +5208,6 @@ sub valgrind_arguments {
else
{
mtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option
- mtr_add_arg($args, "--alignment=8");
mtr_add_arg($args, "--leak-check=yes");
mtr_add_arg($args, "--num-callers=16");
mtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_mysql_test_dir)
diff --git a/mysql-test/r/events_scheduling.result b/mysql-test/r/events_scheduling.result
index 7dfd10a53f8..262caea3d7f 100644
--- a/mysql-test/r/events_scheduling.result
+++ b/mysql-test/r/events_scheduling.result
@@ -82,5 +82,24 @@ DROP TABLE table_1;
DROP TABLE table_2;
DROP TABLE table_3;
DROP TABLE table_4;
+
+Bug #50087 Interval arithmetic for Event_queue_element is not portable.
+
+CREATE TABLE t1(a int);
+CREATE EVENT e1 ON SCHEDULE EVERY 1 MONTH
+STARTS NOW() - INTERVAL 1 MONTH
+ENDS NOW() + INTERVAL 2 MONTH
+ON COMPLETION PRESERVE
+DO
+INSERT INTO t1 VALUES (1);
+CREATE EVENT e2 ON SCHEDULE EVERY 1 MONTH
+STARTS NOW()
+ENDS NOW() + INTERVAL 11 MONTH
+ON COMPLETION PRESERVE
+DO
+INSERT INTO t1 VALUES (1);
+DROP TABLE t1;
+DROP EVENT e1;
+DROP EVENT e2;
DROP DATABASE events_test;
SET GLOBAL event_scheduler=@event_scheduler;
diff --git a/mysql-test/r/index_merge_myisam.result b/mysql-test/r/index_merge_myisam.result
index 922f7241102..1be96da5c7d 100644
--- a/mysql-test/r/index_merge_myisam.result
+++ b/mysql-test/r/index_merge_myisam.result
@@ -1419,19 +1419,19 @@ drop table t1;
#
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch='index_merge=off,index_merge_union=off';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch='index_merge_union=on';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch='default,index_merge_sort_union=off';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch=4;
set optimizer_switch=NULL;
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'NULL'
@@ -1457,21 +1457,21 @@ set optimizer_switch=default;
set optimizer_switch='index_merge=off,index_merge_union=off,default';
select @@optimizer_switch;
@@optimizer_switch
-index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set optimizer_switch=default;
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set @@global.optimizer_switch=default;
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
#
# Check index_merge's @@optimizer_switch flags
#
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, b int, c int, filler char(100),
@@ -1581,5 +1581,5 @@ id select_type table type possible_keys key key_len ref rows Extra
set optimizer_switch=default;
show variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
drop table t0, t1;
diff --git a/mysql-test/r/mysqld--help-notwin.result b/mysql-test/r/mysqld--help-notwin.result
index 64d1c9b1cf5..980e7c05db7 100644
--- a/mysql-test/r/mysqld--help-notwin.result
+++ b/mysql-test/r/mysqld--help-notwin.result
@@ -132,7 +132,8 @@ The following options may be given as the first argument:
on that value
--enable-locking Deprecated option, use --external-locking instead.
--engine-condition-pushdown
- Push supported query conditions to the storage engine
+ Push supported query conditions to the storage engine.
+ Deprecated, use --optimizer-switch instead.
(Defaults to on; use --skip-engine-condition-pushdown to disable.)
--event-scheduler[=name]
Enable the event scheduler. Possible values are ON, OFF,
@@ -413,8 +414,9 @@ The following options may be given as the first argument:
--optimizer-switch=name
optimizer_switch=option=val[,option=val...], where option
is one of {index_merge, index_merge_union,
- index_merge_sort_union, index_merge_intersection} and val
- is one of {on, off, default}
+ index_merge_sort_union, index_merge_intersection,
+ engine_condition_pushdown} and val is one of {on, off,
+ default}
--partition[=name] Enable or disable partition plugin. Possible values are
ON, OFF, FORCE (don't start if the plugin fails to load).
--pid-file=name Pid file used by safe_mysqld
@@ -748,7 +750,6 @@ completion-type NO_CHAIN
concurrent-insert AUTO
connect-timeout 10
console FALSE
-datadir MYSQLTEST_VARDIR/install.db/
date-format %Y-%m-%d
datetime-format %Y-%m-%d %H:%i:%s
default-character-set latin1
@@ -859,7 +860,7 @@ old-passwords FALSE
old-style-user-limits FALSE
optimizer-prune-level 1
optimizer-search-depth 62
-optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
partition ON
plugin-dir MYSQL_LIBDIR/mysql/plugin
plugin-load (No default value)
@@ -902,7 +903,6 @@ skip-show-database FALSE
skip-slave-start FALSE
slave-compressed-protocol FALSE
slave-exec-mode STRICT
-slave-load-tmpdir MYSQLTEST_VARDIR/tmp/
slave-net-timeout 3600
slave-skip-errors (No default value)
slave-transaction-retries 10
@@ -931,7 +931,6 @@ thread-stack 262144
time-format %H:%i:%s
timed-mutexes FALSE
tmp-table-size 16777216
-tmpdir MYSQLTEST_VARDIR/tmp/
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
diff --git a/mysql-test/r/mysqld--help-win.result b/mysql-test/r/mysqld--help-win.result
index 6faeea94717..76d670fe222 100644
--- a/mysql-test/r/mysqld--help-win.result
+++ b/mysql-test/r/mysqld--help-win.result
@@ -132,7 +132,8 @@ The following options may be given as the first argument:
on that value
--enable-locking Deprecated option, use --external-locking instead.
--engine-condition-pushdown
- Push supported query conditions to the storage engine
+ Push supported query conditions to the storage engine.
+ Deprecated, use --optimizer-switch instead.
(Defaults to on; use --skip-engine-condition-pushdown to disable.)
--event-scheduler[=name]
Enable the event scheduler. Possible values are ON, OFF,
@@ -413,8 +414,9 @@ The following options may be given as the first argument:
--optimizer-switch=name
optimizer_switch=option=val[,option=val...], where option
is one of {index_merge, index_merge_union,
- index_merge_sort_union, index_merge_intersection} and val
- is one of {on, off, default}
+ index_merge_sort_union, index_merge_intersection,
+ engine_condition_pushdown} and val is one of {on, off,
+ default}
--partition[=name] Enable or disable partition plugin. Possible values are
ON, OFF, FORCE (don't start if the plugin fails to load).
--pid-file=name Pid file used by safe_mysqld
@@ -752,7 +754,6 @@ completion-type NO_CHAIN
concurrent-insert AUTO
connect-timeout 10
console FALSE
-datadir MYSQLTEST_VARDIR/install.db/
date-format %Y-%m-%d
datetime-format %Y-%m-%d %H:%i:%s
default-character-set latin1
@@ -863,7 +864,7 @@ old-passwords FALSE
old-style-user-limits FALSE
optimizer-prune-level 1
optimizer-search-depth 62
-optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
partition ON
plugin-dir MYSQL_LIBDIR/plugin
plugin-load (No default value)
@@ -908,7 +909,6 @@ skip-show-database FALSE
skip-slave-start FALSE
slave-compressed-protocol FALSE
slave-exec-mode STRICT
-slave-load-tmpdir MYSQLTEST_VARDIR/tmp/
slave-net-timeout 3600
slave-skip-errors (No default value)
slave-transaction-retries 10
@@ -937,7 +937,6 @@ thread-stack 262144
time-format %H:%i:%s
timed-mutexes FALSE
tmp-table-size 16777216
-tmpdir MYSQLTEST_VARDIR/tmp/
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
diff --git a/mysql-test/r/optimizer_switch_eng_cond_pushdown1.result b/mysql-test/r/optimizer_switch_eng_cond_pushdown1.result
new file mode 100644
index 00000000000..a8313ec246c
--- /dev/null
+++ b/mysql-test/r/optimizer_switch_eng_cond_pushdown1.result
@@ -0,0 +1,5 @@
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+1 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
diff --git a/mysql-test/r/optimizer_switch_eng_cond_pushdown2.result b/mysql-test/r/optimizer_switch_eng_cond_pushdown2.result
new file mode 100644
index 00000000000..d7e84c57f42
--- /dev/null
+++ b/mysql-test/r/optimizer_switch_eng_cond_pushdown2.result
@@ -0,0 +1,5 @@
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
diff --git a/mysql-test/r/subselect3.result b/mysql-test/r/subselect3.result
index 3a0576768b2..a51cef6833d 100644
--- a/mysql-test/r/subselect3.result
+++ b/mysql-test/r/subselect3.result
@@ -964,3 +964,53 @@ Variable_name Value
Handler_read_rnd_next 18
DROP TABLE t1,t2;
End of 5.1 tests
+#
+# BUG#48920: COUNT DISTINCT returns 1 for NULL values when in a subquery
+# in the select list
+#
+
+CREATE TABLE t1 (
+i int(11) DEFAULT NULL,
+v varchar(1) DEFAULT NULL
+);
+
+INSERT INTO t1 VALUES (8,'v');
+INSERT INTO t1 VALUES (9,'r');
+INSERT INTO t1 VALUES (NULL,'y');
+
+CREATE TABLE t2 (
+i int(11) DEFAULT NULL,
+v varchar(1) DEFAULT NULL,
+KEY i_key (i)
+);
+
+INSERT INTO t2 VALUES (NULL,'r');
+INSERT INTO t2 VALUES (0,'c');
+INSERT INTO t2 VALUES (0,'o');
+INSERT INTO t2 VALUES (2,'v');
+INSERT INTO t2 VALUES (7,'c');
+
+SELECT i, v, (SELECT COUNT(DISTINCT i)
+FROM t1
+WHERE v = t2.v) as subsel
+FROM t2;
+i v subsel
+NULL r 1
+0 c 0
+0 o 0
+2 v 1
+7 c 0
+
+EXPLAIN EXTENDED
+SELECT i, v, (SELECT COUNT(DISTINCT i)
+FROM t1
+WHERE v = t2.v) as subsel
+FROM t2;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 5 100.00
+2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1276 Field or reference 'test.t2.v' of SELECT #2 was resolved in SELECT #1
+Note 1003 select `test`.`t2`.`i` AS `i`,`test`.`t2`.`v` AS `v`,(select count(distinct `test`.`t1`.`i`) AS `COUNT(DISTINCT i)` from `test`.`t1` where (`test`.`t1`.`v` = `test`.`t2`.`v`)) AS `subsel` from `test`.`t2`
+DROP TABLE t1,t2;
+End of 5.6 tests
diff --git a/mysql-test/suite/ndb/r/ndb_condition_pushdown.result b/mysql-test/suite/ndb/r/ndb_condition_pushdown.result
index 4b6f5031fb2..f2b5b882f10 100644
--- a/mysql-test/suite/ndb/r/ndb_condition_pushdown.result
+++ b/mysql-test/suite/ndb/r/ndb_condition_pushdown.result
@@ -51,8 +51,8 @@ CREATE TABLE t3 (pk1 int unsigned NOT NULL PRIMARY KEY, attr1 int unsigned NO
insert into t3 values (0,0,0,0,"a"),(1,1,9223372036854775803,1,"b"),(2,2,9223372036854775804,2,"c"),(3,3,9223372036854775805,3,"d"),(4,4,9223372036854775806,4,"e"),(5,5,9223372036854775807,5,"f");
CREATE TABLE t4 (pk1 int unsigned NOT NULL PRIMARY KEY, attr1 int unsigned NOT NULL, attr2 bigint unsigned, attr3 tinyint unsigned, attr4 VARCHAR(10) , KEY (attr1)) ENGINE=ndbcluster;
insert into t4 values (0,0,0,0,"a"),(1,1,9223372036854775803,1,"b"),(2,2,9223372036854775804,2,"c"),(3,3,9223372036854775805,3,"d"),(4,4,9223372036854775806,4,"e"),(5,5,9223372036854775807,5,"f");
-set @old_ecpd = @@session.engine_condition_pushdown;
-set engine_condition_pushdown = off;
+set @old_optimizer_switch = @@session.optimizer_switch;
+set optimizer_switch = "engine_condition_pushdown=off";
select auto from t1 where
string = "aaaa" and
vstring = "aaaa" and
@@ -484,7 +484,7 @@ pk1 attr1 attr2 attr3 attr4 pk1 attr1 attr2 attr3 attr4
2 2 9223372036854775804 2 c 2 2 9223372036854775804 2 c
3 3 9223372036854775805 3 d 3 3 9223372036854775805 3 d
4 4 9223372036854775806 4 e 4 4 9223372036854775806 4 e
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
explain
select auto from t1 where
string = "aaaa" and
@@ -1769,12 +1769,12 @@ id select_type table type possible_keys key key_len ref rows Extra
create table t5 (a int primary key auto_increment, b tinytext not null)
engine = ndb;
insert into t5 (b) values ('jonas'), ('jensing'), ('johan');
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t5 where b like '%jo%' order by a;
a b
1 jonas
3 johan
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
explain select * from t5 where b like '%jo%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t5 ALL NULL NULL NULL NULL # Using where
@@ -1782,7 +1782,7 @@ select * from t5 where b like '%jo%' order by a;
a b
1 jonas
3 johan
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select auto from t1 where date_time like '1902-02-02 %' order by auto;
auto
2
@@ -1790,7 +1790,7 @@ select auto from t1 where date_time not like '1902-02-02 %' order by auto;
auto
3
4
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
explain select auto from t1 where date_time like '1902-02-02 %';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using where
@@ -1808,7 +1808,7 @@ drop table t1;
create table t1 (a int, b varchar(3), primary key using hash(a))
engine=ndb;
insert into t1 values (1,'a'), (2,'ab'), (3,'abc');
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t1 where b like 'ab';
a b
2 ab
@@ -1821,7 +1821,7 @@ a b
select * from t1 where b like 'abc' or b like 'abc';
a b
3 abc
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select * from t1 where b like 'ab';
a b
2 ab
@@ -1838,7 +1838,7 @@ drop table t1;
create table t1 (a int, b char(3), primary key using hash(a))
engine=ndb;
insert into t1 values (1,'a'), (2,'ab'), (3,'abc');
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t1 where b like 'ab';
a b
2 ab
@@ -1851,7 +1851,7 @@ a b
select * from t1 where b like 'abc' or b like 'abc';
a b
3 abc
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select * from t1 where b like 'ab';
a b
2 ab
@@ -1868,11 +1868,11 @@ drop table t1;
create table t1 ( fname varchar(255), lname varchar(255) )
engine=ndbcluster;
insert into t1 values ("Young","Foo");
-set engine_condition_pushdown = 0;
+set optimizer_switch = "engine_condition_pushdown=off";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
fname lname
Young Foo
-set engine_condition_pushdown = 1;
+set optimizer_switch = "engine_condition_pushdown=on";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
fname lname
Young Foo
@@ -1880,11 +1880,11 @@ insert into t1 values ("aaa", "aaa");
insert into t1 values ("bbb", "bbb");
insert into t1 values ("ccc", "ccc");
insert into t1 values ("ddd", "ddd");
-set engine_condition_pushdown = 0;
+set optimizer_switch = "engine_condition_pushdown=off";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
fname lname
Young Foo
-set engine_condition_pushdown = 1;
+set optimizer_switch = "engine_condition_pushdown=on";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
fname lname
Young Foo
@@ -1896,7 +1896,7 @@ insert into t1 values (20,2,200,0+0x2222);
insert into t1 values (30,3,300,0+0x3333);
insert into t1 values (40,4,400,0+0x4444);
insert into t1 values (50,5,500,0+0x5555);
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select a,b,d from t1
where b in (0,1,2,5)
order by b;
@@ -1916,5 +1916,5 @@ a b d
50 5 21845
Warnings:
Warning 4294 Scan filter is too large, discarded
-set engine_condition_pushdown = @old_ecpd;
+set optimizer_switch = @old_optimizer_switch;
DROP TABLE t1,t2,t3,t4,t5;
diff --git a/mysql-test/suite/ndb/r/ndb_gis.result b/mysql-test/suite/ndb/r/ndb_gis.result
index 54772f596c3..76a53804d8f 100644
--- a/mysql-test/suite/ndb/r/ndb_gis.result
+++ b/mysql-test/suite/ndb/r/ndb_gis.result
@@ -548,7 +548,7 @@ Overlaps(@horiz1, @point2)
0
DROP TABLE t1;
End of 5.0 tests
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
CREATE TABLE gis_point (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POINT);
CREATE TABLE gis_line (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g LINESTRING);
diff --git a/mysql-test/suite/ndb/r/ndb_index_unique.result b/mysql-test/suite/ndb/r/ndb_index_unique.result
index 1fe02d4b5c7..5d0f4038211 100644
--- a/mysql-test/suite/ndb/r/ndb_index_unique.result
+++ b/mysql-test/suite/ndb/r/ndb_index_unique.result
@@ -181,8 +181,8 @@ a b c
5 5 NULL
8 3 NULL
9 3 NULL
-set @old_ecpd = @@session.engine_condition_pushdown;
-set engine_condition_pushdown = true;
+set @old_optimizer_switch = @@session.optimizer_switch;
+set optimizer_switch = "engine_condition_pushdown=on";
explain select * from t2 where (b = 3 OR b = 5) AND c IS NULL AND a < 9 order by a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range PRIMARY,b PRIMARY 4 NULL 1 Using where with pushed condition
@@ -191,7 +191,7 @@ a b c
3 3 NULL
5 5 NULL
8 3 NULL
-set engine_condition_pushdown = @old_ecpd;
+set optimizer_switch = @old_optimizer_switch;
drop table t2;
CREATE TABLE t3 (
a int unsigned NOT NULL,
diff --git a/mysql-test/suite/ndb/t/ndb_condition_pushdown.test b/mysql-test/suite/ndb/t/ndb_condition_pushdown.test
index a56c9dda01c..a6ab06eae31 100644
--- a/mysql-test/suite/ndb/t/ndb_condition_pushdown.test
+++ b/mysql-test/suite/ndb/t/ndb_condition_pushdown.test
@@ -68,8 +68,8 @@ CREATE TABLE t4 (pk1 int unsigned NOT NULL PRIMARY KEY, attr1 int unsigned NO
insert into t4 values (0,0,0,0,"a"),(1,1,9223372036854775803,1,"b"),(2,2,9223372036854775804,2,"c"),(3,3,9223372036854775805,3,"d"),(4,4,9223372036854775806,4,"e"),(5,5,9223372036854775807,5,"f");
-set @old_ecpd = @@session.engine_condition_pushdown;
-set engine_condition_pushdown = off;
+set @old_optimizer_switch = @@session.optimizer_switch;
+set optimizer_switch = "engine_condition_pushdown=off";
# Test all types and compare operators
select auto from t1 where
@@ -453,7 +453,7 @@ select * from t2,t3 where t2.attr1 < 1 and t2.attr2 = t3.attr2 and t3.attr1 < 5
select * from t4 where attr1 < 5 and attr2 > 9223372036854775803 and attr3 != 3 order by t4.pk1;
select * from t3,t4 where t4.attr1 > 1 and t4.attr2 = t3.attr2 and t4.attr3 < 5 order by t4.pk1;
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
# Test all types and compare operators
--replace_column 9 #
@@ -1674,18 +1674,18 @@ select * from t3 left join t4 on t4.attr2 = t3.attr2 where t4.attr1 > 1 and t4.a
create table t5 (a int primary key auto_increment, b tinytext not null)
engine = ndb;
insert into t5 (b) values ('jonas'), ('jensing'), ('johan');
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t5 where b like '%jo%' order by a;
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
--replace_column 9 #
explain select * from t5 where b like '%jo%';
select * from t5 where b like '%jo%' order by a;
# bug#21056 ndb pushdown equal/setValue error on datetime
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select auto from t1 where date_time like '1902-02-02 %' order by auto;
select auto from t1 where date_time not like '1902-02-02 %' order by auto;
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
--replace_column 9 #
explain select auto from t1 where date_time like '1902-02-02 %';
select auto from t1 where date_time like '1902-02-02 %' order by auto;
@@ -1701,12 +1701,12 @@ insert into t1 values (1,'a'), (2,'ab'), (3,'abc');
# in TUP the constants 'ab' 'abc' were expected in varchar format
# "like" returned error which became "false"
# scan filter negates "or" which exposes the bug
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t1 where b like 'ab';
select * from t1 where b like 'ab' or b like 'ab';
select * from t1 where b like 'abc';
select * from t1 where b like 'abc' or b like 'abc';
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select * from t1 where b like 'ab';
select * from t1 where b like 'ab' or b like 'ab';
select * from t1 where b like 'abc';
@@ -1719,12 +1719,12 @@ engine=ndb;
insert into t1 values (1,'a'), (2,'ab'), (3,'abc');
# test that incorrect MySQL behaviour is preserved
# 'ab ' LIKE 'ab' is true in MySQL
-set engine_condition_pushdown = off;
+set optimizer_switch = "engine_condition_pushdown=off";
select * from t1 where b like 'ab';
select * from t1 where b like 'ab' or b like 'ab';
select * from t1 where b like 'abc';
select * from t1 where b like 'abc' or b like 'abc';
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select * from t1 where b like 'ab';
select * from t1 where b like 'ab' or b like 'ab';
select * from t1 where b like 'abc';
@@ -1736,9 +1736,9 @@ create table t1 ( fname varchar(255), lname varchar(255) )
engine=ndbcluster;
insert into t1 values ("Young","Foo");
-set engine_condition_pushdown = 0;
+set optimizer_switch = "engine_condition_pushdown=off";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
-set engine_condition_pushdown = 1;
+set optimizer_switch = "engine_condition_pushdown=on";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
# make sure optimizer does not do some crazy shortcut
@@ -1747,9 +1747,9 @@ insert into t1 values ("bbb", "bbb");
insert into t1 values ("ccc", "ccc");
insert into t1 values ("ddd", "ddd");
-set engine_condition_pushdown = 0;
+set optimizer_switch = "engine_condition_pushdown=off";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
-set engine_condition_pushdown = 1;
+set optimizer_switch = "engine_condition_pushdown=on";
SELECT fname, lname FROM t1 WHERE (fname like 'Y%') or (lname like 'F%');
# bug#29390 (scan filter is too large, discarded)
@@ -1766,7 +1766,7 @@ insert into t1 values (30,3,300,0+0x3333);
insert into t1 values (40,4,400,0+0x4444);
insert into t1 values (50,5,500,0+0x5555);
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
select a,b,d from t1
where b in (0,1,2,5)
@@ -2050,5 +2050,5 @@ select a,b,d from t1
order by b;
--enable_query_log
-set engine_condition_pushdown = @old_ecpd;
+set optimizer_switch = @old_optimizer_switch;
DROP TABLE t1,t2,t3,t4,t5;
diff --git a/mysql-test/suite/ndb/t/ndb_gis.test b/mysql-test/suite/ndb/t/ndb_gis.test
index e14f462c32d..babff535f94 100644
--- a/mysql-test/suite/ndb/t/ndb_gis.test
+++ b/mysql-test/suite/ndb/t/ndb_gis.test
@@ -1,5 +1,5 @@
--source include/have_ndb.inc
SET storage_engine=ndbcluster;
--source include/gis_generic.inc
-set engine_condition_pushdown = on;
+set optimizer_switch = "engine_condition_pushdown=on";
--source include/gis_generic.inc
diff --git a/mysql-test/suite/ndb/t/ndb_index_unique.test b/mysql-test/suite/ndb/t/ndb_index_unique.test
index 78757c3bcf7..9178ace1ad0 100644
--- a/mysql-test/suite/ndb/t/ndb_index_unique.test
+++ b/mysql-test/suite/ndb/t/ndb_index_unique.test
@@ -112,11 +112,11 @@ insert t2 values(1,1,NULL),(2,2,2),(3,3,NULL),(4,4,4),(5,5,NULL),(6,6,6),(7,7,NU
select * from t2 where c IS NULL order by a;
select * from t2 where b = 3 AND c IS NULL order by a;
select * from t2 where (b = 3 OR b = 5) AND c IS NULL order by a;
-set @old_ecpd = @@session.engine_condition_pushdown;
-set engine_condition_pushdown = true;
+set @old_optimizer_switch = @@session.optimizer_switch;
+set optimizer_switch = "engine_condition_pushdown=on";
explain select * from t2 where (b = 3 OR b = 5) AND c IS NULL AND a < 9 order by a;
select * from t2 where (b = 3 OR b = 5) AND c IS NULL AND a < 9 order by a;
-set engine_condition_pushdown = @old_ecpd;
+set optimizer_switch = @old_optimizer_switch;
drop table t2;
diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def
index 446c233c8a9..a5017b1a02c 100644
--- a/mysql-test/suite/rpl/t/disabled.def
+++ b/mysql-test/suite/rpl/t/disabled.def
@@ -10,7 +10,5 @@
#
##############################################################################
-rpl_get_master_version_and_clock: # Bug#46931 2009-10-17 joro rpl.rpl_get_master_version_and_clock fails
rpl_row_create_table : Bug#45576 2009-12-01 joro rpl_row_create_table fails on PB2
-rpl_cross_version : BUG#43913 2009-10-22 luis rpl_cross_version fails with symptom in described in bug report
rpl_spec_variables : BUG#47661 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux
diff --git a/mysql-test/suite/rpl/t/rpl_cross_version-master.opt b/mysql-test/suite/rpl/t/rpl_cross_version-master.opt
index 0ea05290c11..815a8f81d32 100644
--- a/mysql-test/suite/rpl/t/rpl_cross_version-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_cross_version-master.opt
@@ -1 +1 @@
---replicate-same-server-id --relay-log=slave-relay-bin --secure-file-priv=$MYSQL_TMP_DIR
+--replicate-same-server-id --relay-log=slave-relay-bin
diff --git a/mysql-test/suite/sys_vars/r/all_vars.result b/mysql-test/suite/sys_vars/r/all_vars.result
index abd1f5d2bd6..0f741ff930a 100644
--- a/mysql-test/suite/sys_vars/r/all_vars.result
+++ b/mysql-test/suite/sys_vars/r/all_vars.result
@@ -1,12 +1,14 @@
create table t1 (test_name text);
+create table t2 (variable_name text);
load data infile "MYSQLTEST_VARDIR/tmp/sys_vars.all_vars.txt" into table t1;
-select variable_name as `There should be *no* variables listed below:`
- from information_schema.global_variables
-left join t1 on variable_name=test_name where
-test_name is null
-union
-select variable_name from information_schema.session_variables
-left join t1 on variable_name=test_name where
-test_name is null;
+insert into t2 select variable_name from information_schema.global_variables;
+insert into t2 select variable_name from information_schema.session_variables;
+update t2 set variable_name= replace(variable_name, "PERFORMANCE_SCHEMA_", "PFS_");
+select variable_name as `There should be *no* long test name listed below:` from t2
+where length(variable_name) > 50;
+There should be *no* long test name listed below:
+select variable_name as `There should be *no* variables listed below:` from t2
+left join t1 on variable_name=test_name where test_name is null;
There should be *no* variables listed below:
drop table t1;
+drop table t2;
diff --git a/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result b/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result
index 6a8052490c4..2b0b57d5b33 100644
--- a/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result
+++ b/mysql-test/suite/sys_vars/r/engine_condition_pushdown_basic.result
@@ -6,19 +6,33 @@ SET @global_start_value = @@global.engine_condition_pushdown;
SELECT @global_start_value;
@global_start_value
1
+select @old_session_opt_switch:=@@session.optimizer_switch,
+@old_global_opt_switch:=@@global.optimizer_switch;
+@old_session_opt_switch:=@@session.optimizer_switch @old_global_opt_switch:=@@global.optimizer_switch
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
'#--------------------FN_DYNVARS_028_01------------------------#'
SET @@session.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SET @@session.engine_condition_pushdown = DEFAULT;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SET @@global.engine_condition_pushdown = DEFAULT;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
'#---------------------FN_DYNVARS_028_02-------------------------#'
SET engine_condition_pushdown = 1;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@engine_condition_pushdown;
@@engine_condition_pushdown
1
@@ -29,27 +43,39 @@ ERROR 42S02: Unknown table 'local' in field list
SELECT global.engine_condition_pushdown;
ERROR 42S02: Unknown table 'global' in field list
SET session engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
0
SET global engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
0
'#--------------------FN_DYNVARS_028_03------------------------#'
SET @@session.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
0
SET @@session.engine_condition_pushdown = 1;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
0
SET @@global.engine_condition_pushdown = 1;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
@@ -88,11 +114,17 @@ SET @@global.engine_condition_pushdown = ÓFF;
ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÓFF'
'#-------------------FN_DYNVARS_028_05----------------------------#'
SET @@global.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SET @@session.engine_condition_pushdown = 1;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown AS res_is_0;
res_is_0
0
SET @@global.engine_condition_pushdown = 0;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown AS res_is_1;
res_is_1
1
@@ -126,43 +158,133 @@ VARIABLE_VALUE
ON
'#---------------------FN_DYNVARS_028_08-------------------------#'
SET @@session.engine_condition_pushdown = OFF;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
0
SET @@session.engine_condition_pushdown = ON;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = OFF;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
0
SET @@global.engine_condition_pushdown = ON;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
'#---------------------FN_DYNVARS_028_09----------------------#'
SET @@session.engine_condition_pushdown = TRUE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@session.engine_condition_pushdown = FALSE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
0
SET @@global.engine_condition_pushdown = TRUE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = FALSE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
0
+Check that @@engine_condition_pushdown influences
+@@optimizer_switch and vice-versa
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@session.engine_condition_pushdown = TRUE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+1 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@session.engine_condition_pushdown = FALSE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@global.engine_condition_pushdown = TRUE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+set @@global.engine_condition_pushdown = FALSE;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@session.optimizer_switch = "engine_condition_pushdown=on";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+1 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@session.optimizer_switch = "engine_condition_pushdown=off";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+set @@global.optimizer_switch = "engine_condition_pushdown=on";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
+set @@global.optimizer_switch = "engine_condition_pushdown=off";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+0 0 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
SET @@session.engine_condition_pushdown = @session_start_value;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@session.engine_condition_pushdown;
@@session.engine_condition_pushdown
1
SET @@global.engine_condition_pushdown = @global_start_value;
+Warnings:
+Warning 1287 The syntax '@@engine_condition_pushdown' is deprecated and will be removed in MySQL 7.0. Please use '@@optimizer_switch' instead
SELECT @@global.engine_condition_pushdown;
@@global.engine_condition_pushdown
1
+set @session.optimizer_switch=@old_session_opt_switch,
+@@global.optimizer_switch=@old_global_opt_switch;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+@@session.engine_condition_pushdown @@global.engine_condition_pushdown @@session.optimizer_switch @@global.optimizer_switch
+1 1 index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
diff --git a/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result b/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
index d1e03f769c8..2d648259a26 100644
--- a/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
+++ b/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
@@ -1,45 +1,45 @@
SET @start_global_value = @@global.optimizer_switch;
SELECT @start_global_value;
@start_global_value
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
select @@session.optimizer_switch;
@@session.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
show global variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
show session variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
select * from information_schema.global_variables where variable_name='optimizer_switch';
VARIABLE_NAME VARIABLE_VALUE
-OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
select * from information_schema.session_variables where variable_name='optimizer_switch';
VARIABLE_NAME VARIABLE_VALUE
-OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set global optimizer_switch=10;
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on
+index_merge=off,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,engine_condition_pushdown=off
set session optimizer_switch=5;
select @@session.optimizer_switch;
@@session.optimizer_switch
-index_merge=on,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off
+index_merge=on,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=off
set global optimizer_switch="index_merge_sort_union=on";
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
set session optimizer_switch="index_merge=off";
select @@session.optimizer_switch;
@@session.optimizer_switch
-index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=off
set session optimizer_switch="default";
select @@session.optimizer_switch;
@@session.optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
set global optimizer_switch=1.1;
ERROR 42000: Incorrect argument type to variable 'optimizer_switch'
set global optimizer_switch=1e1;
@@ -51,4 +51,4 @@ ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'foobar'
SET @@global.optimizer_switch = @start_global_value;
SELECT @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
diff --git a/mysql-test/suite/sys_vars/r/performance_schema_basic.result b/mysql-test/suite/sys_vars/r/performance_schema_basic.result
new file mode 100644
index 00000000000..d494b64502b
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/performance_schema_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema;
+@@global.performance_schema
+1
+select @@session.performance_schema;
+ERROR HY000: Variable 'performance_schema' is a GLOBAL variable
+show global variables like 'performance_schema';
+Variable_name Value
+performance_schema ON
+show session variables like 'performance_schema';
+Variable_name Value
+performance_schema ON
+select * from information_schema.global_variables
+where variable_name='performance_schema';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA ON
+select * from information_schema.session_variables
+where variable_name='performance_schema';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA ON
+set global performance_schema=1;
+ERROR HY000: Variable 'performance_schema' is a read only variable
+set session performance_schema=1;
+ERROR HY000: Variable 'performance_schema' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_events_waits_history_long_size_basic.result b/mysql-test/suite/sys_vars/r/pfs_events_waits_history_long_size_basic.result
new file mode 100644
index 00000000000..6aa1b0b6325
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_events_waits_history_long_size_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_events_waits_history_long_size;
+@@global.performance_schema_events_waits_history_long_size
+15000
+select @@session.performance_schema_events_waits_history_long_size;
+ERROR HY000: Variable 'performance_schema_events_waits_history_long_size' is a GLOBAL variable
+show global variables like 'performance_schema_events_waits_history_long_size';
+Variable_name Value
+performance_schema_events_waits_history_long_size 15000
+show session variables like 'performance_schema_events_waits_history_long_size';
+Variable_name Value
+performance_schema_events_waits_history_long_size 15000
+select * from information_schema.global_variables
+where variable_name='performance_schema_events_waits_history_long_size';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_LONG_SIZE 15000
+select * from information_schema.session_variables
+where variable_name='performance_schema_events_waits_history_long_size';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_LONG_SIZE 15000
+set global performance_schema_events_waits_history_long_size=1;
+ERROR HY000: Variable 'performance_schema_events_waits_history_long_size' is a read only variable
+set session performance_schema_events_waits_history_long_size=1;
+ERROR HY000: Variable 'performance_schema_events_waits_history_long_size' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_events_waits_history_size_basic.result b/mysql-test/suite/sys_vars/r/pfs_events_waits_history_size_basic.result
new file mode 100644
index 00000000000..defa4eca1d4
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_events_waits_history_size_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_events_waits_history_size;
+@@global.performance_schema_events_waits_history_size
+15
+select @@session.performance_schema_events_waits_history_size;
+ERROR HY000: Variable 'performance_schema_events_waits_history_size' is a GLOBAL variable
+show global variables like 'performance_schema_events_waits_history_size';
+Variable_name Value
+performance_schema_events_waits_history_size 15
+show session variables like 'performance_schema_events_waits_history_size';
+Variable_name Value
+performance_schema_events_waits_history_size 15
+select * from information_schema.global_variables
+where variable_name='performance_schema_events_waits_history_size';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_SIZE 15
+select * from information_schema.session_variables
+where variable_name='performance_schema_events_waits_history_size';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_SIZE 15
+set global performance_schema_events_waits_history_size=1;
+ERROR HY000: Variable 'performance_schema_events_waits_history_size' is a read only variable
+set session performance_schema_events_waits_history_size=1;
+ERROR HY000: Variable 'performance_schema_events_waits_history_size' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_cond_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_cond_classes_basic.result
new file mode 100644
index 00000000000..ec980a90cbd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_cond_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_cond_classes;
+@@global.performance_schema_max_cond_classes
+123
+select @@session.performance_schema_max_cond_classes;
+ERROR HY000: Variable 'performance_schema_max_cond_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_cond_classes';
+Variable_name Value
+performance_schema_max_cond_classes 123
+show session variables like 'performance_schema_max_cond_classes';
+Variable_name Value
+performance_schema_max_cond_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_cond_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_COND_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_cond_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_COND_CLASSES 123
+set global performance_schema_max_cond_classes=1;
+ERROR HY000: Variable 'performance_schema_max_cond_classes' is a read only variable
+set session performance_schema_max_cond_classes=1;
+ERROR HY000: Variable 'performance_schema_max_cond_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_cond_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_cond_instances_basic.result
new file mode 100644
index 00000000000..5bdb24ed0b8
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_cond_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_cond_instances;
+@@global.performance_schema_max_cond_instances
+123
+select @@session.performance_schema_max_cond_instances;
+ERROR HY000: Variable 'performance_schema_max_cond_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_cond_instances';
+Variable_name Value
+performance_schema_max_cond_instances 123
+show session variables like 'performance_schema_max_cond_instances';
+Variable_name Value
+performance_schema_max_cond_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_cond_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_COND_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_cond_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_COND_INSTANCES 123
+set global performance_schema_max_cond_instances=1;
+ERROR HY000: Variable 'performance_schema_max_cond_instances' is a read only variable
+set session performance_schema_max_cond_instances=1;
+ERROR HY000: Variable 'performance_schema_max_cond_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_file_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_file_classes_basic.result
new file mode 100644
index 00000000000..47eaa449106
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_file_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_file_classes;
+@@global.performance_schema_max_file_classes
+123
+select @@session.performance_schema_max_file_classes;
+ERROR HY000: Variable 'performance_schema_max_file_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_file_classes';
+Variable_name Value
+performance_schema_max_file_classes 123
+show session variables like 'performance_schema_max_file_classes';
+Variable_name Value
+performance_schema_max_file_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_file_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_file_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_CLASSES 123
+set global performance_schema_max_file_classes=1;
+ERROR HY000: Variable 'performance_schema_max_file_classes' is a read only variable
+set session performance_schema_max_file_classes=1;
+ERROR HY000: Variable 'performance_schema_max_file_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_file_handles_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_file_handles_basic.result
new file mode 100644
index 00000000000..7d210ea3103
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_file_handles_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_file_handles;
+@@global.performance_schema_max_file_handles
+123
+select @@session.performance_schema_max_file_handles;
+ERROR HY000: Variable 'performance_schema_max_file_handles' is a GLOBAL variable
+show global variables like 'performance_schema_max_file_handles';
+Variable_name Value
+performance_schema_max_file_handles 123
+show session variables like 'performance_schema_max_file_handles';
+Variable_name Value
+performance_schema_max_file_handles 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_file_handles';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_HANDLES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_file_handles';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_HANDLES 123
+set global performance_schema_max_file_handles=1;
+ERROR HY000: Variable 'performance_schema_max_file_handles' is a read only variable
+set session performance_schema_max_file_handles=1;
+ERROR HY000: Variable 'performance_schema_max_file_handles' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_file_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_file_instances_basic.result
new file mode 100644
index 00000000000..097d4c14ed1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_file_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_file_instances;
+@@global.performance_schema_max_file_instances
+123
+select @@session.performance_schema_max_file_instances;
+ERROR HY000: Variable 'performance_schema_max_file_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_file_instances';
+Variable_name Value
+performance_schema_max_file_instances 123
+show session variables like 'performance_schema_max_file_instances';
+Variable_name Value
+performance_schema_max_file_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_file_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_file_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_FILE_INSTANCES 123
+set global performance_schema_max_file_instances=1;
+ERROR HY000: Variable 'performance_schema_max_file_instances' is a read only variable
+set session performance_schema_max_file_instances=1;
+ERROR HY000: Variable 'performance_schema_max_file_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_mutex_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_mutex_classes_basic.result
new file mode 100644
index 00000000000..f2b75ef9540
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_mutex_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_mutex_classes;
+@@global.performance_schema_max_mutex_classes
+123
+select @@session.performance_schema_max_mutex_classes;
+ERROR HY000: Variable 'performance_schema_max_mutex_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_mutex_classes';
+Variable_name Value
+performance_schema_max_mutex_classes 123
+show session variables like 'performance_schema_max_mutex_classes';
+Variable_name Value
+performance_schema_max_mutex_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_mutex_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_MUTEX_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_mutex_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_MUTEX_CLASSES 123
+set global performance_schema_max_mutex_classes=1;
+ERROR HY000: Variable 'performance_schema_max_mutex_classes' is a read only variable
+set session performance_schema_max_mutex_classes=1;
+ERROR HY000: Variable 'performance_schema_max_mutex_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_mutex_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_mutex_instances_basic.result
new file mode 100644
index 00000000000..f12fa6ace03
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_mutex_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_mutex_instances;
+@@global.performance_schema_max_mutex_instances
+123
+select @@session.performance_schema_max_mutex_instances;
+ERROR HY000: Variable 'performance_schema_max_mutex_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_mutex_instances';
+Variable_name Value
+performance_schema_max_mutex_instances 123
+show session variables like 'performance_schema_max_mutex_instances';
+Variable_name Value
+performance_schema_max_mutex_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_mutex_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_MUTEX_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_mutex_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_MUTEX_INSTANCES 123
+set global performance_schema_max_mutex_instances=1;
+ERROR HY000: Variable 'performance_schema_max_mutex_instances' is a read only variable
+set session performance_schema_max_mutex_instances=1;
+ERROR HY000: Variable 'performance_schema_max_mutex_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_rwlock_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_rwlock_classes_basic.result
new file mode 100644
index 00000000000..6c2d4b773c0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_rwlock_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_rwlock_classes;
+@@global.performance_schema_max_rwlock_classes
+123
+select @@session.performance_schema_max_rwlock_classes;
+ERROR HY000: Variable 'performance_schema_max_rwlock_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_rwlock_classes';
+Variable_name Value
+performance_schema_max_rwlock_classes 123
+show session variables like 'performance_schema_max_rwlock_classes';
+Variable_name Value
+performance_schema_max_rwlock_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_rwlock_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_RWLOCK_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_rwlock_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_RWLOCK_CLASSES 123
+set global performance_schema_max_rwlock_classes=1;
+ERROR HY000: Variable 'performance_schema_max_rwlock_classes' is a read only variable
+set session performance_schema_max_rwlock_classes=1;
+ERROR HY000: Variable 'performance_schema_max_rwlock_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_rwlock_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_rwlock_instances_basic.result
new file mode 100644
index 00000000000..169387d369d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_rwlock_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_rwlock_instances;
+@@global.performance_schema_max_rwlock_instances
+123
+select @@session.performance_schema_max_rwlock_instances;
+ERROR HY000: Variable 'performance_schema_max_rwlock_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_rwlock_instances';
+Variable_name Value
+performance_schema_max_rwlock_instances 123
+show session variables like 'performance_schema_max_rwlock_instances';
+Variable_name Value
+performance_schema_max_rwlock_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_rwlock_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_RWLOCK_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_rwlock_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_RWLOCK_INSTANCES 123
+set global performance_schema_max_rwlock_instances=1;
+ERROR HY000: Variable 'performance_schema_max_rwlock_instances' is a read only variable
+set session performance_schema_max_rwlock_instances=1;
+ERROR HY000: Variable 'performance_schema_max_rwlock_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_table_handles_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_table_handles_basic.result
new file mode 100644
index 00000000000..5f661b0ecdd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_table_handles_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_table_handles;
+@@global.performance_schema_max_table_handles
+123
+select @@session.performance_schema_max_table_handles;
+ERROR HY000: Variable 'performance_schema_max_table_handles' is a GLOBAL variable
+show global variables like 'performance_schema_max_table_handles';
+Variable_name Value
+performance_schema_max_table_handles 123
+show session variables like 'performance_schema_max_table_handles';
+Variable_name Value
+performance_schema_max_table_handles 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_table_handles';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_TABLE_HANDLES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_table_handles';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_TABLE_HANDLES 123
+set global performance_schema_max_table_handles=1;
+ERROR HY000: Variable 'performance_schema_max_table_handles' is a read only variable
+set session performance_schema_max_table_handles=1;
+ERROR HY000: Variable 'performance_schema_max_table_handles' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_table_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_table_instances_basic.result
new file mode 100644
index 00000000000..8497527abb5
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_table_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_table_instances;
+@@global.performance_schema_max_table_instances
+123
+select @@session.performance_schema_max_table_instances;
+ERROR HY000: Variable 'performance_schema_max_table_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_table_instances';
+Variable_name Value
+performance_schema_max_table_instances 123
+show session variables like 'performance_schema_max_table_instances';
+Variable_name Value
+performance_schema_max_table_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_table_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_TABLE_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_table_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_TABLE_INSTANCES 123
+set global performance_schema_max_table_instances=1;
+ERROR HY000: Variable 'performance_schema_max_table_instances' is a read only variable
+set session performance_schema_max_table_instances=1;
+ERROR HY000: Variable 'performance_schema_max_table_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_thread_classes_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_thread_classes_basic.result
new file mode 100644
index 00000000000..9d45e13b46e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_thread_classes_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_thread_classes;
+@@global.performance_schema_max_thread_classes
+123
+select @@session.performance_schema_max_thread_classes;
+ERROR HY000: Variable 'performance_schema_max_thread_classes' is a GLOBAL variable
+show global variables like 'performance_schema_max_thread_classes';
+Variable_name Value
+performance_schema_max_thread_classes 123
+show session variables like 'performance_schema_max_thread_classes';
+Variable_name Value
+performance_schema_max_thread_classes 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_thread_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_THREAD_CLASSES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_thread_classes';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_THREAD_CLASSES 123
+set global performance_schema_max_thread_classes=1;
+ERROR HY000: Variable 'performance_schema_max_thread_classes' is a read only variable
+set session performance_schema_max_thread_classes=1;
+ERROR HY000: Variable 'performance_schema_max_thread_classes' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/pfs_max_thread_instances_basic.result b/mysql-test/suite/sys_vars/r/pfs_max_thread_instances_basic.result
new file mode 100644
index 00000000000..dbb3967ad33
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/pfs_max_thread_instances_basic.result
@@ -0,0 +1,23 @@
+select @@global.performance_schema_max_thread_instances;
+@@global.performance_schema_max_thread_instances
+123
+select @@session.performance_schema_max_thread_instances;
+ERROR HY000: Variable 'performance_schema_max_thread_instances' is a GLOBAL variable
+show global variables like 'performance_schema_max_thread_instances';
+Variable_name Value
+performance_schema_max_thread_instances 123
+show session variables like 'performance_schema_max_thread_instances';
+Variable_name Value
+performance_schema_max_thread_instances 123
+select * from information_schema.global_variables
+where variable_name='performance_schema_max_thread_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_THREAD_INSTANCES 123
+select * from information_schema.session_variables
+where variable_name='performance_schema_max_thread_instances';
+VARIABLE_NAME VARIABLE_VALUE
+PERFORMANCE_SCHEMA_MAX_THREAD_INSTANCES 123
+set global performance_schema_max_thread_instances=1;
+ERROR HY000: Variable 'performance_schema_max_thread_instances' is a read only variable
+set session performance_schema_max_thread_instances=1;
+ERROR HY000: Variable 'performance_schema_max_thread_instances' is a read only variable
diff --git a/mysql-test/suite/sys_vars/t/all_vars.test b/mysql-test/suite/sys_vars/t/all_vars.test
index c6c228d842f..6a18b5e3d37 100644
--- a/mysql-test/suite/sys_vars/t/all_vars.test
+++ b/mysql-test/suite/sys_vars/t/all_vars.test
@@ -1,3 +1,18 @@
+# Copyright (C) 2009-2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
--source include/not_embedded.inc
#
@@ -20,16 +35,26 @@ perl;
EOF
create table t1 (test_name text);
+create table t2 (variable_name text);
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval load data infile "$MYSQLTEST_VARDIR/tmp/sys_vars.all_vars.txt" into table t1;
-select variable_name as `There should be *no* variables listed below:`
- from information_schema.global_variables
- left join t1 on variable_name=test_name where
- test_name is null
- union
-select variable_name from information_schema.session_variables
- left join t1 on variable_name=test_name where
- test_name is null;
+insert into t2 select variable_name from information_schema.global_variables;
+insert into t2 select variable_name from information_schema.session_variables;
+
+# Performance schema variables are too long for files named
+# 'mysql-test/suite/sys_vars/t/' ...
+# ... 'performance_schema_events_waits_history_long_size_basic-master.opt'
+# to fit in the tar source distribution (limit in old tar)
+# Renaming the tests to aliases below.
+
+update t2 set variable_name= replace(variable_name, "PERFORMANCE_SCHEMA_", "PFS_");
+
+select variable_name as `There should be *no* long test name listed below:` from t2
+ where length(variable_name) > 50;
+
+select variable_name as `There should be *no* variables listed below:` from t2
+ left join t1 on variable_name=test_name where test_name is null;
drop table t1;
+drop table t2;
diff --git a/mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test b/mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test
index b153ac50e1e..ab9bfc3dd6a 100644
--- a/mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test
+++ b/mysql-test/suite/sys_vars/t/engine_condition_pushdown_basic.test
@@ -40,6 +40,10 @@ SELECT @session_start_value;
SET @global_start_value = @@global.engine_condition_pushdown;
SELECT @global_start_value;
+# same for optimizer_switch
+select @old_session_opt_switch:=@@session.optimizer_switch,
+@old_global_opt_switch:=@@global.optimizer_switch;
+
--echo '#--------------------FN_DYNVARS_028_01------------------------#'
########################################################################
# Display the DEFAULT value of engine_condition_pushdown #
@@ -204,6 +208,44 @@ SELECT @@global.engine_condition_pushdown;
SET @@global.engine_condition_pushdown = FALSE;
SELECT @@global.engine_condition_pushdown;
+--echo Check that @@engine_condition_pushdown influences
+--echo @@optimizer_switch and vice-versa
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@session.engine_condition_pushdown = TRUE;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@session.engine_condition_pushdown = FALSE;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@global.engine_condition_pushdown = TRUE;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@global.engine_condition_pushdown = FALSE;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@session.optimizer_switch = "engine_condition_pushdown=on";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@session.optimizer_switch = "engine_condition_pushdown=off";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@global.optimizer_switch = "engine_condition_pushdown=on";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+set @@global.optimizer_switch = "engine_condition_pushdown=off";
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+
##############################
# Restore initial value #
##############################
@@ -214,6 +256,12 @@ SELECT @@session.engine_condition_pushdown;
SET @@global.engine_condition_pushdown = @global_start_value;
SELECT @@global.engine_condition_pushdown;
+set @session.optimizer_switch=@old_session_opt_switch,
+@@global.optimizer_switch=@old_global_opt_switch;
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
+
###############################################################
# END OF engine_condition_pushdown TESTS #
###############################################################
diff --git a/mysql-test/suite/sys_vars/t/performance_schema_basic-master.opt b/mysql-test/suite/sys_vars/t/performance_schema_basic-master.opt
new file mode 100644
index 00000000000..542720c44d7
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/performance_schema_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema
diff --git a/mysql-test/suite/sys_vars/t/performance_schema_basic.test b/mysql-test/suite/sys_vars/t/performance_schema_basic.test
new file mode 100644
index 00000000000..804e6261921
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/performance_schema_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema;
+
+show global variables like 'performance_schema';
+
+show session variables like 'performance_schema';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic-master.opt
new file mode 100644
index 00000000000..ff1dd2a8c05
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-events-waits-history-long-size=15000
diff --git a/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic.test b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic.test
new file mode 100644
index 00000000000..bf6638803bc
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_long_size_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_events_waits_history_long_size;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_events_waits_history_long_size;
+
+show global variables like 'performance_schema_events_waits_history_long_size';
+
+show session variables like 'performance_schema_events_waits_history_long_size';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_events_waits_history_long_size';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_events_waits_history_long_size';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_events_waits_history_long_size=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_events_waits_history_long_size=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic-master.opt
new file mode 100644
index 00000000000..488707fc962
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-events-waits-history-size=15
diff --git a/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic.test b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic.test
new file mode 100644
index 00000000000..28338ad1ffd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_events_waits_history_size_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_events_waits_history_size;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_events_waits_history_size;
+
+show global variables like 'performance_schema_events_waits_history_size';
+
+show session variables like 'performance_schema_events_waits_history_size';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_events_waits_history_size';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_events_waits_history_size';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_events_waits_history_size=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_events_waits_history_size=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic-master.opt
new file mode 100644
index 00000000000..438bc463289
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-cond-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic.test
new file mode 100644
index 00000000000..70a757087f8
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_cond_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_cond_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_cond_classes;
+
+show global variables like 'performance_schema_max_cond_classes';
+
+show session variables like 'performance_schema_max_cond_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_cond_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_cond_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_cond_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_cond_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic-master.opt
new file mode 100644
index 00000000000..47b9d629655
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-cond-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic.test
new file mode 100644
index 00000000000..597ad334295
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_cond_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_cond_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_cond_instances;
+
+show global variables like 'performance_schema_max_cond_instances';
+
+show session variables like 'performance_schema_max_cond_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_cond_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_cond_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_cond_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_cond_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic-master.opt
new file mode 100644
index 00000000000..6ed54f9f99d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-file-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic.test
new file mode 100644
index 00000000000..8536a703afa
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_file_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_file_classes;
+
+show global variables like 'performance_schema_max_file_classes';
+
+show session variables like 'performance_schema_max_file_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_file_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_file_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_file_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_file_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic-master.opt
new file mode 100644
index 00000000000..04633ae0897
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-file-handles=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic.test
new file mode 100644
index 00000000000..ba702a030d7
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_handles_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_file_handles;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_file_handles;
+
+show global variables like 'performance_schema_max_file_handles';
+
+show session variables like 'performance_schema_max_file_handles';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_file_handles';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_file_handles';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_file_handles=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_file_handles=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic-master.opt
new file mode 100644
index 00000000000..078a998c1e7
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-file-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic.test
new file mode 100644
index 00000000000..829df39bbe9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_file_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_file_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_file_instances;
+
+show global variables like 'performance_schema_max_file_instances';
+
+show session variables like 'performance_schema_max_file_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_file_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_file_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_file_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_file_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic-master.opt
new file mode 100644
index 00000000000..1525916a1ef
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-mutex-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic.test
new file mode 100644
index 00000000000..633d1a3487c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_mutex_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_mutex_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_mutex_classes;
+
+show global variables like 'performance_schema_max_mutex_classes';
+
+show session variables like 'performance_schema_max_mutex_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_mutex_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_mutex_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_mutex_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_mutex_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic-master.opt
new file mode 100644
index 00000000000..98ce2ff3df9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-mutex-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic.test
new file mode 100644
index 00000000000..2a8f5e5ae00
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_mutex_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_mutex_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_mutex_instances;
+
+show global variables like 'performance_schema_max_mutex_instances';
+
+show session variables like 'performance_schema_max_mutex_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_mutex_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_mutex_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_mutex_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_mutex_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic-master.opt
new file mode 100644
index 00000000000..b5d5318635f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-rwlock-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic.test
new file mode 100644
index 00000000000..ce911b60049
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_rwlock_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_rwlock_classes;
+
+show global variables like 'performance_schema_max_rwlock_classes';
+
+show session variables like 'performance_schema_max_rwlock_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_rwlock_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_rwlock_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_rwlock_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_rwlock_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic-master.opt
new file mode 100644
index 00000000000..5dcecd99c0a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-rwlock-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic.test
new file mode 100644
index 00000000000..d16c1c46f68
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_rwlock_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_rwlock_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_rwlock_instances;
+
+show global variables like 'performance_schema_max_rwlock_instances';
+
+show session variables like 'performance_schema_max_rwlock_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_rwlock_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_rwlock_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_rwlock_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_rwlock_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic-master.opt
new file mode 100644
index 00000000000..45e73c51f8c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-table-handles=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic.test
new file mode 100644
index 00000000000..3ede0985a70
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_table_handles_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_table_handles;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_table_handles;
+
+show global variables like 'performance_schema_max_table_handles';
+
+show session variables like 'performance_schema_max_table_handles';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_table_handles';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_table_handles';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_table_handles=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_table_handles=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic-master.opt
new file mode 100644
index 00000000000..b8b0ba4b40b
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-table-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic.test
new file mode 100644
index 00000000000..fcd4886ca22
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_table_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_table_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_table_instances;
+
+show global variables like 'performance_schema_max_table_instances';
+
+show session variables like 'performance_schema_max_table_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_table_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_table_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_table_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_table_instances=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic-master.opt
new file mode 100644
index 00000000000..c0b64e5889a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-thread-classes=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic.test
new file mode 100644
index 00000000000..4704e87cf06
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_thread_classes_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_thread_classes;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_thread_classes;
+
+show global variables like 'performance_schema_max_thread_classes';
+
+show session variables like 'performance_schema_max_thread_classes';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_thread_classes';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_thread_classes';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_thread_classes=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_thread_classes=1;
+
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic-master.opt b/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic-master.opt
new file mode 100644
index 00000000000..b70eda8acb1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic-master.opt
@@ -0,0 +1 @@
+--loose-enable-performance-schema --loose-performance-schema-max-thread-instances=123
diff --git a/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic.test b/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic.test
new file mode 100644
index 00000000000..d709c097f20
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/pfs_max_thread_instances_basic.test
@@ -0,0 +1,47 @@
+# Copyright (C) 2010 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+#
+# Only global
+#
+
+select @@global.performance_schema_max_thread_instances;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.performance_schema_max_thread_instances;
+
+show global variables like 'performance_schema_max_thread_instances';
+
+show session variables like 'performance_schema_max_thread_instances';
+
+select * from information_schema.global_variables
+ where variable_name='performance_schema_max_thread_instances';
+
+select * from information_schema.session_variables
+ where variable_name='performance_schema_max_thread_instances';
+
+#
+# Read-only
+#
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global performance_schema_max_thread_instances=1;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session performance_schema_max_thread_instances=1;
+
diff --git a/mysql-test/t/events_scheduling.test b/mysql-test/t/events_scheduling.test
index 041a2def490..5f16f8bea6a 100644
--- a/mysql-test/t/events_scheduling.test
+++ b/mysql-test/t/events_scheduling.test
@@ -108,6 +108,32 @@ DROP TABLE table_1;
DROP TABLE table_2;
DROP TABLE table_3;
DROP TABLE table_4;
+
+-- echo
+-- echo Bug #50087 Interval arithmetic for Event_queue_element is not portable.
+-- echo
+
+CREATE TABLE t1(a int);
+
+CREATE EVENT e1 ON SCHEDULE EVERY 1 MONTH
+STARTS NOW() - INTERVAL 1 MONTH
+ENDS NOW() + INTERVAL 2 MONTH
+ON COMPLETION PRESERVE
+DO
+ INSERT INTO t1 VALUES (1);
+
+CREATE EVENT e2 ON SCHEDULE EVERY 1 MONTH
+STARTS NOW()
+ENDS NOW() + INTERVAL 11 MONTH
+ON COMPLETION PRESERVE
+DO
+ INSERT INTO t1 VALUES (1);
+
+DROP TABLE t1;
+DROP EVENT e1;
+DROP EVENT e2;
+
+
DROP DATABASE events_test;
SET GLOBAL event_scheduler=@event_scheduler;
diff --git a/mysql-test/t/optimizer_switch_eng_cond_pushdown1-master.opt b/mysql-test/t/optimizer_switch_eng_cond_pushdown1-master.opt
new file mode 100644
index 00000000000..89aa07976ac
--- /dev/null
+++ b/mysql-test/t/optimizer_switch_eng_cond_pushdown1-master.opt
@@ -0,0 +1 @@
+--optimizer-switch=engine_condition_pushdown=off --engine-condition-pushdown=1
diff --git a/mysql-test/t/optimizer_switch_eng_cond_pushdown1.test b/mysql-test/t/optimizer_switch_eng_cond_pushdown1.test
new file mode 100644
index 00000000000..187aa145408
--- /dev/null
+++ b/mysql-test/t/optimizer_switch_eng_cond_pushdown1.test
@@ -0,0 +1,5 @@
+# check how --engine-condition-pushdown and --optimizer-switch
+# influence each other when used together (last wins).
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
diff --git a/mysql-test/t/optimizer_switch_eng_cond_pushdown2-master.opt b/mysql-test/t/optimizer_switch_eng_cond_pushdown2-master.opt
new file mode 100644
index 00000000000..f48ab5b963b
--- /dev/null
+++ b/mysql-test/t/optimizer_switch_eng_cond_pushdown2-master.opt
@@ -0,0 +1 @@
+--engine-condition-pushdown=1 --optimizer-switch=engine_condition_pushdown=off
diff --git a/mysql-test/t/optimizer_switch_eng_cond_pushdown2.test b/mysql-test/t/optimizer_switch_eng_cond_pushdown2.test
new file mode 100644
index 00000000000..187aa145408
--- /dev/null
+++ b/mysql-test/t/optimizer_switch_eng_cond_pushdown2.test
@@ -0,0 +1,5 @@
+# check how --engine-condition-pushdown and --optimizer-switch
+# influence each other when used together (last wins).
+select @@session.engine_condition_pushdown,
+@@global.engine_condition_pushdown,
+@@session.optimizer_switch, @@global.optimizer_switch;
diff --git a/mysql-test/t/subselect3.test b/mysql-test/t/subselect3.test
index fab0a462157..39c97941031 100644
--- a/mysql-test/t/subselect3.test
+++ b/mysql-test/t/subselect3.test
@@ -794,3 +794,50 @@ SHOW STATUS LIKE '%Handler_read_rnd_next';
DROP TABLE t1,t2;
--echo End of 5.1 tests
+
+--echo #
+--echo # BUG#48920: COUNT DISTINCT returns 1 for NULL values when in a subquery
+--echo # in the select list
+--echo #
+
+--echo
+CREATE TABLE t1 (
+ i int(11) DEFAULT NULL,
+ v varchar(1) DEFAULT NULL
+);
+
+--echo
+INSERT INTO t1 VALUES (8,'v');
+INSERT INTO t1 VALUES (9,'r');
+INSERT INTO t1 VALUES (NULL,'y');
+
+--echo
+CREATE TABLE t2 (
+ i int(11) DEFAULT NULL,
+ v varchar(1) DEFAULT NULL,
+ KEY i_key (i)
+);
+
+--echo
+INSERT INTO t2 VALUES (NULL,'r');
+INSERT INTO t2 VALUES (0,'c');
+INSERT INTO t2 VALUES (0,'o');
+INSERT INTO t2 VALUES (2,'v');
+INSERT INTO t2 VALUES (7,'c');
+
+--echo
+SELECT i, v, (SELECT COUNT(DISTINCT i)
+ FROM t1
+ WHERE v = t2.v) as subsel
+FROM t2;
+
+--echo
+EXPLAIN EXTENDED
+SELECT i, v, (SELECT COUNT(DISTINCT i)
+ FROM t1
+ WHERE v = t2.v) as subsel
+FROM t2;
+
+DROP TABLE t1,t2;
+
+--echo End of 5.6 tests