List:Commits« Previous MessageNext Message »
From:Georgi Kodinov Date:May 28 2012 10:12am
Subject:bzr push into mysql-trunk branch (Georgi.Kodinov:3908)
View as plain text  
 3908 Georgi Kodinov	2012-05-28 [merge]
      merge trunk->wl2392

    added:
      include/mysql/plugin_validate_password.h
      include/mysql/service_mysql_string.h
      libservices/mysql_string_service.c
      mysql-test/include/have_validate_password_plugin.inc
      mysql-test/r/validate_password_plugin.result
      mysql-test/t/validate_password_plugin-master.opt
      mysql-test/t/validate_password_plugin.test
      plugin/password_validation/
      plugin/password_validation/CMakeLists.txt
      plugin/password_validation/validate_password.cc
      sql/share/dictionary.txt
      sql/string_service.cc
      sql/string_service.h
    modified:
      include/CMakeLists.txt
      include/mysql/plugin.h
      include/mysql/plugin_audit.h.pp
      include/mysql/plugin_auth.h.pp
      include/mysql/plugin_ftparser.h.pp
      include/mysql/services.h
      include/service_versions.h
      libservices/CMakeLists.txt
      mysql-test/include/plugin.defs
      sql/CMakeLists.txt
      sql/handler.cc
      sql/item_create.cc
      sql/item_func.cc
      sql/item_func.h
      sql/item_strfunc.cc
      sql/share/CMakeLists.txt
      sql/share/errmsg-utf8.txt
      sql/sql_acl.cc
      sql/sql_acl.h
      sql/sql_plugin.cc
      sql/sql_plugin_services.h
      sql/sql_yacc.yy
      support-files/CMakeLists.txt
      support-files/my-huge.cnf.sh
      support-files/my-large.cnf.sh
      support-files/my-medium.cnf.sh
      support-files/my-small.cnf.sh
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl	2012-04-30 07:17:11 +0000
+++ b/mysql-test/mysql-test-run.pl	2012-05-28 09:09:33 +0000
@@ -2484,7 +2484,10 @@ sub environment_setup {
   my $file_mysql_fix_privilege_tables=
     mtr_file_exists("$basedir/scripts/mysql_fix_privilege_tables.sql",
 		    "$basedir/share/mysql_fix_privilege_tables.sql",
-		    "$basedir/share/mysql/mysql_fix_privilege_tables.sql");
+		    "$basedir/share/mysql/mysql_fix_privilege_tables.sql",
+                    "$bindir/scripts/mysql_fix_privilege_tables.sql",
+		    "$bindir/share/mysql_fix_privilege_tables.sql",
+		    "$bindir/share/mysql/mysql_fix_privilege_tables.sql");
   $ENV{'MYSQL_FIX_PRIVILEGE_TABLES'}=  $file_mysql_fix_privilege_tables;
 
   # ----------------------------------------------------

=== modified file 'mysql-test/r/connect.result'
--- a/mysql-test/r/connect.result	2012-01-30 15:43:32 +0000
+++ b/mysql-test/r/connect.result	2012-05-28 09:09:33 +0000
@@ -268,6 +268,132 @@ Warning	1287	'pre-4.1 password hash' is 
 FLUSH PRIVILEGES;
 DROP USER old_pwd@localhost, old_gpwd@localhost;
 SET old_passwords=default;
+#
+# WL#2392: Change Password at next login
+#
+CREATE USER must_change@localhost IDENTIFIED BY 'aha';
+SELECT password_expired FROM mysql.user 
+WHERE user='must_change' and host = 'localhost';
+password_expired
+N
+SELECT USER();
+USER()
+must_change@localhost
+CREATE TABLE t1 (A INT);
+CREATE PROCEDURE TEST_t1(new_a INT) INSERT INTO t1 VALUES (new_a);
+CREATE FUNCTION last_t1() RETURNS INT RETURN (SELECT MAX(A) FROM t1);
+# Initialize the table
+CALL test_t1(1);
+UPDATE mysql.user SET password_expired='Y'
+  WHERE user='must_change' and host = 'localhost';
+# without FLUSH the field has no effect
+# must not throw an error
+SELECT USER();
+USER()
+must_change@localhost
+# must not throw an error
+SELECT last_t1();
+last_t1()
+1
+# must not throw an error
+CALL test_t1(last_t1() + 1);
+FLUSH PRIVILEGES;
+# existing connections continue as before even after flush
+# must not throw an error
+SELECT USER();
+USER()
+must_change@localhost
+# must not throw an error
+SELECT last_t1();
+last_t1()
+2
+# must not throw an error
+CALL test_t1(last_t1() + 1);
+# new connections are blocked until a password reset
+SELECT USER();
+ERROR HY000: You must SET PASSWORD before executing this statement
+SELECT last_t1();
+ERROR HY000: You must SET PASSWORD before executing this statement
+CALL test_t1(last_t1() + 1);
+ERROR HY000: You must SET PASSWORD before executing this statement
+# setting a password unlocks it
+SET PASSWORD = PASSWORD('aha2');
+# must not throw an error
+SELECT USER();
+USER()
+must_change@localhost
+# must not throw an error
+SELECT last_t1();
+last_t1()
+3
+# must not throw an error
+CALL test_t1(last_t1() + 1);
+# check if SET PASSWORD resets the column
+SELECT password_expired FROM mysql.user
+WHERE user='must_change' and host = 'localhost';
+password_expired
+N
+UPDATE mysql.user SET password_expired='Y'
+  WHERE user='must_change' and host = 'localhost';
+FLUSH PRIVILEGES;
+SELECT USER();
+ERROR HY000: You must SET PASSWORD before executing this statement
+SELECT last_t1();
+ERROR HY000: You must SET PASSWORD before executing this statement
+CALL test_t1(last_t1() + 1);
+ERROR HY000: You must SET PASSWORD before executing this statement
+# setting a password with a user name is no good
+SET PASSWORD FOR must_change@localhost = PASSWORD('aha3');
+ERROR HY000: You must SET PASSWORD before executing this statement
+SELECT USER();
+ERROR HY000: You must SET PASSWORD before executing this statement
+SELECT last_t1();
+ERROR HY000: You must SET PASSWORD before executing this statement
+CALL test_t1(last_t1() + 1);
+ERROR HY000: You must SET PASSWORD before executing this statement
+# setting a password for the current user works
+SET PASSWORD FOR CURRENT_USER() = PASSWORD('aha3');
+SELECT USER();
+USER()
+must_change@localhost
+SELECT last_t1();
+last_t1()
+4
+CALL test_t1(last_t1() + 1);
+# testing the ALTER USER command
+# try a single user
+ALTER USER must_change@localhost PASSWORD EXPIRE;
+SELECT password_expired FROM mysql.user
+WHERE user='must_change' and host = 'localhost';
+password_expired
+Y
+SELECT USER();
+ERROR HY000: You must SET PASSWORD before executing this statement
+SET PASSWORD = PASSWORD('aha4');
+# try a valid+invalid user combo
+ALTER USER
+invalid_user@localhost PASSWORD EXPIRE,
+must_change@localhost PASSWORD EXPIRE;
+ERROR HY000: Operation ALTER USER failed for 'invalid_user'@'localhost'
+SELECT password_expired FROM mysql.user
+WHERE user='must_change' and host = 'localhost';
+password_expired
+Y
+SELECT USER();
+ERROR HY000: You must SET PASSWORD before executing this statement
+SET PASSWORD = PASSWORD('aha5');
+SELECT USER();
+USER()
+must_change@localhost
+# Password change must be persistent when reconnecting
+SELECT USER();
+USER()
+must_change@localhost
+# cleanup
+DROP PROCEDURE test_t1;
+DROP FUNCTION last_t1;
+DROP TABLE t1;
+DROP USER must_change@localhost;
 # ------------------------------------------------------------------
 # -- End of 5.6 tests
 # ------------------------------------------------------------------

=== modified file 'mysql-test/r/grant.result'
--- a/mysql-test/r/grant.result	2012-03-28 18:50:54 +0000
+++ b/mysql-test/r/grant.result	2012-05-28 09:09:33 +0000
@@ -55,6 +55,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 show grants for mysqltest_1@localhost;
 Grants for mysqltest_1@localhost
 GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA'
@@ -126,6 +127,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 show grants for mysqltest_1@localhost;
 Grants for mysqltest_1@localhost
 GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10
@@ -173,6 +175,7 @@ max_connections	30
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 show grants for mysqltest_1@localhost;
 Grants for mysqltest_1@localhost
 GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 30

=== modified file 'mysql-test/r/information_schema.result'
--- a/mysql-test/r/information_schema.result	2012-05-14 10:33:46 +0000
+++ b/mysql-test/r/information_schema.result	2012-05-28 09:09:33 +0000
@@ -698,6 +698,7 @@ max_questions	select,insert,update,refer
 max_connections	select,insert,update,references
 max_user_connections	select,insert,update,references
 authentication_string	select,insert,update,references
+password_expired	select,insert,update,references
 use test;
 create function sub1(i int) returns int
 return i+1;

=== modified file 'mysql-test/r/mysqld--help-notwin.result'
--- a/mysql-test/r/mysqld--help-notwin.result	2012-05-28 07:15:01 +0000
+++ b/mysql-test/r/mysqld--help-notwin.result	2012-05-28 09:09:33 +0000
@@ -1110,7 +1110,7 @@ performance-schema-max-rwlock-instances 
 performance-schema-max-socket-classes 10
 performance-schema-max-socket-instances 1000
 performance-schema-max-stage-classes 150
-performance-schema-max-statement-classes 168
+performance-schema-max-statement-classes 169
 performance-schema-max-table-handles 10000
 performance-schema-max-table-instances 1000
 performance-schema-max-thread-classes 50

=== modified file 'mysql-test/r/mysqld--help-win.result'
--- a/mysql-test/r/mysqld--help-win.result	2012-05-28 07:15:01 +0000
+++ b/mysql-test/r/mysqld--help-win.result	2012-05-28 09:09:33 +0000
@@ -1118,7 +1118,7 @@ performance-schema-max-rwlock-instances 
 performance-schema-max-socket-classes 10
 performance-schema-max-socket-instances 1000
 performance-schema-max-stage-classes 150
-performance-schema-max-statement-classes 168
+performance-schema-max-statement-classes 169
 performance-schema-max-table-handles 10000
 performance-schema-max-table-instances 1000
 performance-schema-max-thread-classes 50

=== modified file 'mysql-test/r/ps.result'
--- a/mysql-test/r/ps.result	2012-04-18 11:17:16 +0000
+++ b/mysql-test/r/ps.result	2012-05-28 09:09:33 +0000
@@ -1195,13 +1195,13 @@ SET @aux= "SELECT COUNT(*)
 prepare my_stmt from @aux;
 execute my_stmt;
 COUNT(*)
-42
+43
 execute my_stmt;
 COUNT(*)
-42
+43
 execute my_stmt;
 COUNT(*)
-42
+43
 deallocate prepare my_stmt;
 drop procedure if exists p1|
 drop table if exists t1|

=== modified file 'mysql-test/r/system_mysql_db.result'
--- a/mysql-test/r/system_mysql_db.result	2011-08-19 13:04:28 +0000
+++ b/mysql-test/r/system_mysql_db.result	2012-05-28 09:09:33 +0000
@@ -127,6 +127,7 @@ user	CREATE TABLE `user` (
   `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
   `plugin` char(64) COLLATE utf8_bin DEFAULT '',
   `authentication_string` text COLLATE utf8_bin,
+  `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
   PRIMARY KEY (`Host`,`User`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
 show create table func;

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_mysql.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql.result	2012-03-06 14:29:42 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql.result	2012-05-28 09:09:33 +0000
@@ -270,6 +270,7 @@ def	mysql	user	max_questions	37	0	NO	int
 def	mysql	user	max_updates	38	0	NO	int	NULL	NULL	10	0	NULL	NULL	NULL	int(11) unsigned			select,insert,update,references	
 def	mysql	user	max_user_connections	40	0	NO	int	NULL	NULL	10	0	NULL	NULL	NULL	int(11) unsigned			select,insert,update,references	
 def	mysql	user	Password	3		NO	char	41	41	NULL	NULL	NULL	latin1	latin1_bin	char(41)			select,insert,update,references	
+def	mysql	user	password_expired	43	N	NO	enum	1	3	NULL	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')			select,insert,update,references	
 def	mysql	user	plugin	41		YES	char	64	192	NULL	NULL	NULL	utf8	utf8_bin	char(64)			select,insert,update,references	
 def	mysql	user	Process_priv	12	N	NO	enum	1	3	NULL	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')			select,insert,update,references	
 def	mysql	user	References_priv	15	N	NO	enum	1	3	NULL	NULL	NULL	utf8	utf8_general_ci	enum('N','Y')			select,insert,update,references	
@@ -646,3 +647,4 @@ NULL	mysql	user	max_connections	int	NULL
 NULL	mysql	user	max_user_connections	int	NULL	NULL	NULL	NULL	int(11) unsigned
 3.0000	mysql	user	plugin	char	64	192	utf8	utf8_bin	char(64)
 1.0000	mysql	user	authentication_string	text	65535	65535	utf8	utf8_bin	text
+3.0000	mysql	user	password_expired	enum	1	3	utf8	utf8_general_ci	enum('N','Y')

=== modified file 'mysql-test/suite/funcs_1/r/is_user_privileges.result'
--- a/mysql-test/suite/funcs_1/r/is_user_privileges.result	2011-03-18 14:16:17 +0000
+++ b/mysql-test/suite/funcs_1/r/is_user_privileges.result	2012-05-28 09:09:33 +0000
@@ -129,6 +129,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -171,6 +172,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -213,6 +215,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 #
 # Add GRANT OPTION db_datadict.* to testuser1;
 GRANT UPDATE ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
@@ -279,6 +282,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -321,6 +325,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -363,6 +368,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 # Establish connection testuser1 (user=testuser1)
 SELECT * FROM information_schema.user_privileges
 WHERE grantee LIKE '''testuser%'''
@@ -415,6 +421,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -457,6 +464,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -499,6 +507,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 SHOW GRANTS;
 Grants for testuser1@localhost
 GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -573,6 +582,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -615,6 +625,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -657,6 +668,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 GRANT SELECT ON *.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
 #
 # Here <SELECT YES> is shown correctly for testuser1;
@@ -723,6 +735,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -765,6 +778,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -807,6 +821,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 # Switch to connection testuser1
 SELECT * FROM information_schema.user_privileges
 WHERE grantee LIKE '''testuser%'''
@@ -859,6 +874,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -901,6 +917,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -943,6 +960,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 SHOW GRANTS;
 Grants for testuser1@localhost
 GRANT SELECT ON *.* TO 'testuser1'@'localhost' WITH GRANT OPTION
@@ -1047,6 +1065,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -1089,6 +1108,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -1131,6 +1151,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 # Switch to connection testuser1
 SELECT * FROM information_schema.user_privileges
 WHERE grantee LIKE '''testuser%'''
@@ -1230,6 +1251,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -1272,6 +1294,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -1314,6 +1337,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 # Switch to connection testuser1
 SELECT * FROM information_schema.user_privileges
 WHERE grantee LIKE '''testuser%'''
@@ -1366,6 +1390,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -1408,6 +1433,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -1450,6 +1476,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 SHOW GRANTS;
 Grants for testuser1@localhost
 GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -1509,6 +1536,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -1551,6 +1579,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -1593,6 +1622,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 SHOW GRANTS;
 Grants for testuser1@localhost
 GRANT USAGE ON *.* TO 'testuser1'@'localhost'
@@ -1667,6 +1697,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser2
 Password	
@@ -1709,6 +1740,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 Host	localhost
 User	testuser3
 Password	
@@ -1751,6 +1783,7 @@ max_connections	0
 max_user_connections	0
 plugin	
 authentication_string	NULL
+password_expired	N
 # Switch to connection testuser1
 SELECT * FROM information_schema.user_privileges
 WHERE grantee LIKE '''testuser%'''

=== modified file 'mysql-test/suite/perfschema/r/digest_table_full.result'
--- a/mysql-test/suite/perfschema/r/digest_table_full.result	2012-05-24 16:01:28 +0000
+++ b/mysql-test/suite/perfschema/r/digest_table_full.result	2012-05-28 09:09:33 +0000
@@ -113,7 +113,7 @@ SELECT DIGEST, DIGEST_TEXT, COUNT_STAR, 
 SUM_ERRORS FROM performance_schema.events_statements_summary_by_digest;
 DIGEST	DIGEST_TEXT	COUNT_STAR	SUM_ROWS_AFFECTED	SUM_WARNINGS	SUM_ERRORS
 NULL	NULL	55	32	1	2
-6c4650f18d00d7f69763f7c1836e872e	TRUNCATE TABLE performance_schema . events_statements_summary_by_digest  	1	0	0	0
+f179ae2f3568daafdf95e8d26286df40	TRUNCATE TABLE performance_schema . events_statements_summary_by_digest  	1	0	0	0
 SHOW VARIABLES LIKE "performance_schema_digests_size";
 Variable_name	Value
 performance_schema_digests_size	2

=== modified file 'mysql-test/suite/perfschema/r/ortho_iter.result'
--- a/mysql-test/suite/perfschema/r/ortho_iter.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/ortho_iter.result	2012-05-28 09:09:33 +0000
@@ -115,7 +115,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/privilege_table_io.result'
--- a/mysql-test/suite/perfschema/r/privilege_table_io.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/privilege_table_io.result	2012-05-28 09:09:33 +0000
@@ -40,7 +40,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_disable_idle.result'
--- a/mysql-test/suite/perfschema/r/start_server_disable_idle.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_disable_idle.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_disable_stages.result'
--- a/mysql-test/suite/perfschema/r/start_server_disable_stages.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_disable_stages.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_disable_statements.result'
--- a/mysql-test/suite/perfschema/r/start_server_disable_statements.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_disable_statements.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_disable_waits.result'
--- a/mysql-test/suite/perfschema/r/start_server_disable_waits.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_disable_waits.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_innodb.result'
--- a/mysql-test/suite/perfschema/r/start_server_innodb.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_innodb.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_account.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_account.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_account.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_cond_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_cond_class.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_cond_class.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_cond_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_file_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_file_class.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_file_class.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_file_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_file_inst.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_file_inst.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_host.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_host.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_host.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_mutex_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_setup_actors.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_setup_actors.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_setup_actors.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_setup_objects.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_setup_objects.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_setup_objects.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_socket_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_socket_class.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_socket_class.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	0
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_socket_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_socket_inst.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_socket_inst.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	0
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_stage_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_stage_class.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_stage_class.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	0
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_stages_history.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_stages_history.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_stages_history.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_statements_history.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_statements_history.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_statements_history.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_table_hdl.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_table_hdl.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_table_hdl.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	0
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_table_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_table_inst.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_table_inst.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	0
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_thread_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_thread_class.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_thread_class.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	0

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_thread_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_user.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_user.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_user.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_waits_history.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_waits_history.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_waits_history.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_no_waits_history_long.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_waits_history_long.result	2012-02-28 14:40:36 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_waits_history_long.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_off.result'
--- a/mysql-test/suite/perfschema/r/start_server_off.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_off.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/start_server_on.result'
--- a/mysql-test/suite/perfschema/r/start_server_on.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_on.result	2012-05-28 09:09:33 +0000
@@ -90,7 +90,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/statement_digest.result'
--- a/mysql-test/suite/perfschema/r/statement_digest.result	2012-05-24 16:01:28 +0000
+++ b/mysql-test/suite/perfschema/r/statement_digest.result	2012-05-28 09:09:33 +0000
@@ -112,43 +112,43 @@ DROP TRIGGER trg;
 SELECT DIGEST, DIGEST_TEXT, COUNT_STAR, SUM_ROWS_AFFECTED, SUM_WARNINGS,
 SUM_ERRORS FROM performance_schema.events_statements_summary_by_digest;
 DIGEST	DIGEST_TEXT	COUNT_STAR	SUM_ROWS_AFFECTED	SUM_WARNINGS	SUM_ERRORS
-6c4650f18d00d7f69763f7c1836e872e	TRUNCATE TABLE performance_schema . events_statements_summary_by_digest  	1	0	0	0
-3ca227d9ea7901f7904e8971f9ca5fa6	SELECT ? FROM t1  	1	0	0	0
-93af78150d21009269e1ede0bf35bbbd	SELECT ? FROM `t1`  	1	0	0	0
-7d5cf77999f01ea25a8f14f7193d5e86	SELECT ?, ... FROM t1  	2	0	0	0
-1e2d9ccb8ce1e80157c7d0f27c7a36db	SELECT ? FROM t2  	1	0	0	0
-c3bbc9546db9594cdd31a257d1f1555d	SELECT ?, ... FROM t2  	2	0	0	0
-1a9973ace0b02e91f853c9f0245a157c	INSERT INTO t1 VALUES (?)  	1	1	0	0
-7ff8e95d0dc90672900fb5f136aa8bdb	INSERT INTO t2 VALUES (?)  	1	1	0	0
-56c4b893720324af0d34de53669ac4d9	INSERT INTO t3 VALUES (...)  	4	4	0	0
-5e8930113dd40c90ad34ba3e0f203bff	INSERT INTO t4 VALUES (...)  	1	1	0	0
-07c5739724be7f315da4fbc1fdc08bbc	INSERT INTO t5 VALUES (...)  	1	1	0	0
-06adc836be4583c2a64a2f422c603e6b	INSERT INTO t1 VALUES (?) /* , ... */  	2	7	0	0
-c66f4b27ba79f7d61705e7f45c0af008	INSERT INTO t3 VALUES (...) /* , ... */  	1	3	0	0
-bfb370d2220106457192239392458504	INSERT INTO t5 VALUES (...) /* , ... */  	1	3	0	0
-28003b9873d7c7d721cc6f88194a433c	INSERT INTO t1 VALUES ( NULL )  	1	1	0	0
-31ea0b2e54f4d2da11045928f6df6ff7	INSERT INTO t6 VALUES (...)  	5	5	0	0
-bcb3fc3aa0ea73f20809e6525d41b95b	SELECT ? + ?  	3	0	0	0
-651e639ea4fee3b3dbee7f6f9fd44ca0	SELECT ?  	1	0	0	0
-7d2a54e6edd2117b661078941415d492	CREATE SCHEMA statements_digest_temp  	2	2	0	0
-131870b25daddd214b5c200444364bd2	DROP SCHEMA statements_digest_temp  	2	0	0	0
-b0fd38c8c8ba0c583fbb4ba8f1700913	SELECT ? FROM no_such_table  	1	0	0	1
-82405affe63462139756f46ea36e519d	CREATE TABLE dup_table ( c CHARACTER (?) )  	2	0	0	1
-de657b9e0f2a65bbbfe94547ebcfebe5	DROP TABLE dup_table  	1	0	0	0
-21ccf832feb3cd3581d472f7225ec046	INSERT INTO t11 VALUES (?)  	1	1	1	0
-1965b72c3916198861e7286faeece568	SHOW WARNINGS  	1	0	0	0
-9e2523c476f7dadd9300cceb882f434b	PREPARE stmt FROM ?  	1	0	0	0
-6d8939f45fc7420164ce88e58a78968e	EXECUTE stmt  	2	0	0	0
-3233cf3d73bf0cd5c5cc69fab5b30ddf	DEALLOCATE PREPARE stmt  	1	0	0	0
-c11611c72fd535d2491e30c92a46dba2	CREATE PROCEDURE p1 ( ) BEGIN SELECT * FROM t12 ; END  	1	0	0	0
-594360f7221c898fb58af64d2867dea5	CALL p1 ( )  	2	0	0	0
-ec4a8c0368967dd4d9e4979d63204870	DROP PROCEDURE p1  	1	0	0	0
-22af63e8a85ae33a51d39946fa74c537	CREATE FUNCTION `func` ( a INTEGER , b INTEGER ) RETURNS INTEGER (?) RETURN a + b  	1	0	0	0
-c08a61e1b30bd73d60a0291fbf80cff0	SELECT func (...)  	2	0	0	0
-3df78ea379365800dd19ab9e35c7f8a5	DROP FUNCTION func  	1	0	0	0
-5499b14bde826af68fdf34c3c1310f47	CREATE TRIGGER trg BEFORE INSERT ON t12 FOR EACH ROW SET @ ? := ?  	1	0	0	0
-8ec19a492733284c1444a7a804286800	INSERT INTO t12 VALUES (?)  	2	2	0	0
-25abe6e665794bc331965c048ea0bf5e	DROP TRIGGER trg  	1	0	0	0
+f179ae2f3568daafdf95e8d26286df40	TRUNCATE TABLE performance_schema . events_statements_summary_by_digest  	1	0	0	0
+d6ab54f66e4a40e7f5685fda9f1b8996	SELECT ? FROM t1  	1	0	0	0
+e171daba4068de1cf11584d224640fca	SELECT ? FROM `t1`  	1	0	0	0
+89c94dbe9eaa44ff16208c48b9635a09	SELECT ?, ... FROM t1  	2	0	0	0
+52d70d49081856a8471a46aac8519e2b	SELECT ? FROM t2  	1	0	0	0
+7f2ae4ab3a1d75d88a182a348fc3d415	SELECT ?, ... FROM t2  	2	0	0	0
+0355a3b435784167943a75c2a7c5312d	INSERT INTO t1 VALUES (?)  	1	1	0	0
+0d3557a9ef425cd98e80d026744e446d	INSERT INTO t2 VALUES (?)  	1	1	0	0
+c0f6087f01441c24aea229a0d1537d5c	INSERT INTO t3 VALUES (...)  	4	4	0	0
+b55b1670f25562bcf4d65641a6cc5001	INSERT INTO t4 VALUES (...)  	1	1	0	0
+bc60b31eafbdc7f6cdef44a088c932e4	INSERT INTO t5 VALUES (...)  	1	1	0	0
+8169aceb276d00c6b840084f48c27551	INSERT INTO t1 VALUES (?) /* , ... */  	2	7	0	0
+938c2c087fda0f7716fe9477e09d6e87	INSERT INTO t3 VALUES (...) /* , ... */  	1	3	0	0
+ecaf67c52e56814b2505ff420e390d69	INSERT INTO t5 VALUES (...) /* , ... */  	1	3	0	0
+b741503f32e7e4d7f6b22a0283fae829	INSERT INTO t1 VALUES ( NULL )  	1	1	0	0
+f6b5b808e6c08721a0d14be1b1514d5e	INSERT INTO t6 VALUES (...)  	5	5	0	0
+cb4fca9a44b33f9412f9abacf91cc854	SELECT ? + ?  	3	0	0	0
+4602e592cdee38a26557bd0d9215be35	SELECT ?  	1	0	0	0
+c971c8e991c110c98d36f618b0d4f080	CREATE SCHEMA statements_digest_temp  	2	2	0	0
+5aabfd327c59e12e5efff109687e59e5	DROP SCHEMA statements_digest_temp  	2	0	0	0
+24bc63079bb4bb22c6d56956845f9f22	SELECT ? FROM no_such_table  	1	0	0	1
+5052d57e550edcda9e031d580563563d	CREATE TABLE dup_table ( c CHARACTER (?) )  	2	0	0	1
+da533ad6c950c444d223ae1669b34eb1	DROP TABLE dup_table  	1	0	0	0
+d66abc28b6eb13ae2b8fdf682e6e8205	INSERT INTO t11 VALUES (?)  	1	1	1	0
+fb16be66cd2f46920a3d7d0329d83e44	SHOW WARNINGS  	1	0	0	0
+bd867d4bea3c66a396b1ff328b0f2388	PREPARE stmt FROM ?  	1	0	0	0
+9bc31ccd137630c2c9e6b4062c4576a8	EXECUTE stmt  	2	0	0	0
+140e00113ca4134a7378e7c6e4591798	DEALLOCATE PREPARE stmt  	1	0	0	0
+e5aef81f8daaabbb87c3cf8f4ef7e048	CREATE PROCEDURE p1 ( ) BEGIN SELECT * FROM t12 ; END  	1	0	0	0
+b18d0fc42dadff72ad682bc959b25613	CALL p1 ( )  	2	0	0	0
+2a3fe2f3fbb24c75bb39e5a493dd5f8e	DROP PROCEDURE p1  	1	0	0	0
+2cb88d38ed288f251c9b6bf8614f6625	CREATE FUNCTION `func` ( a INTEGER , b INTEGER ) RETURNS INTEGER (?) RETURN a + b  	1	0	0	0
+e4c8a3d91e3fa50ccf4cb5562852e882	SELECT func (...)  	2	0	0	0
+1a877d7135862fc121e3a6ee1e1d82d4	DROP FUNCTION func  	1	0	0	0
+eb7b97e334308d4f4e5eb5bba2457d66	CREATE TRIGGER trg BEFORE INSERT ON t12 FOR EACH ROW SET @ ? := ?  	1	0	0	0
+77cd6962d21dc2406f457639d9b61ffd	INSERT INTO t12 VALUES (?)  	2	2	0	0
+8b3bc89d52f67870331670b0aebf235e	DROP TRIGGER trg  	1	0	0	0
 ####################################
 # CLEANUP
 ####################################

=== modified file 'mysql-test/suite/perfschema/r/statement_digest_consumers.result'
--- a/mysql-test/suite/perfschema/r/statement_digest_consumers.result	2012-05-24 16:01:28 +0000
+++ b/mysql-test/suite/perfschema/r/statement_digest_consumers.result	2012-05-28 09:09:33 +0000
@@ -125,43 +125,43 @@ DROP TRIGGER trg;
 ####################################
 SELECT digest, digest_text, count_star FROM performance_schema.events_statements_summary_by_digest;
 digest	digest_text	count_star
-6c4650f18d00d7f69763f7c1836e872e	TRUNCATE TABLE performance_schema . events_statements_summary_by_digest  	1
-3ca227d9ea7901f7904e8971f9ca5fa6	SELECT ? FROM t1  	1
-93af78150d21009269e1ede0bf35bbbd	SELECT ? FROM `t1`  	1
-7d5cf77999f01ea25a8f14f7193d5e86	SELECT ?, ... FROM t1  	2
-1e2d9ccb8ce1e80157c7d0f27c7a36db	SELECT ? FROM t2  	1
-c3bbc9546db9594cdd31a257d1f1555d	SELECT ?, ... FROM t2  	2
-1a9973ace0b02e91f853c9f0245a157c	INSERT INTO t1 VALUES (?)  	1
-7ff8e95d0dc90672900fb5f136aa8bdb	INSERT INTO t2 VALUES (?)  	1
-56c4b893720324af0d34de53669ac4d9	INSERT INTO t3 VALUES (...)  	4
-5e8930113dd40c90ad34ba3e0f203bff	INSERT INTO t4 VALUES (...)  	1
-07c5739724be7f315da4fbc1fdc08bbc	INSERT INTO t5 VALUES (...)  	1
-06adc836be4583c2a64a2f422c603e6b	INSERT INTO t1 VALUES (?) /* , ... */  	2
-c66f4b27ba79f7d61705e7f45c0af008	INSERT INTO t3 VALUES (...) /* , ... */  	1
-bfb370d2220106457192239392458504	INSERT INTO t5 VALUES (...) /* , ... */  	1
-28003b9873d7c7d721cc6f88194a433c	INSERT INTO t1 VALUES ( NULL )  	1
-31ea0b2e54f4d2da11045928f6df6ff7	INSERT INTO t6 VALUES (...)  	5
-bcb3fc3aa0ea73f20809e6525d41b95b	SELECT ? + ?  	3
-651e639ea4fee3b3dbee7f6f9fd44ca0	SELECT ?  	1
-7d2a54e6edd2117b661078941415d492	CREATE SCHEMA statements_digest_temp  	2
-131870b25daddd214b5c200444364bd2	DROP SCHEMA statements_digest_temp  	2
-b0fd38c8c8ba0c583fbb4ba8f1700913	SELECT ? FROM no_such_table  	1
-82405affe63462139756f46ea36e519d	CREATE TABLE dup_table ( c CHARACTER (?) )  	2
-de657b9e0f2a65bbbfe94547ebcfebe5	DROP TABLE dup_table  	1
-21ccf832feb3cd3581d472f7225ec046	INSERT INTO t11 VALUES (?)  	1
-1965b72c3916198861e7286faeece568	SHOW WARNINGS  	1
-9e2523c476f7dadd9300cceb882f434b	PREPARE stmt FROM ?  	1
-6d8939f45fc7420164ce88e58a78968e	EXECUTE stmt  	2
-3233cf3d73bf0cd5c5cc69fab5b30ddf	DEALLOCATE PREPARE stmt  	1
-c11611c72fd535d2491e30c92a46dba2	CREATE PROCEDURE p1 ( ) BEGIN SELECT * FROM t12 ; END  	1
-594360f7221c898fb58af64d2867dea5	CALL p1 ( )  	2
-ec4a8c0368967dd4d9e4979d63204870	DROP PROCEDURE p1  	1
-22af63e8a85ae33a51d39946fa74c537	CREATE FUNCTION `func` ( a INTEGER , b INTEGER ) RETURNS INTEGER (?) RETURN a + b  	1
-c08a61e1b30bd73d60a0291fbf80cff0	SELECT func (...)  	2
-3df78ea379365800dd19ab9e35c7f8a5	DROP FUNCTION func  	1
-5499b14bde826af68fdf34c3c1310f47	CREATE TRIGGER trg BEFORE INSERT ON t12 FOR EACH ROW SET @ ? := ?  	1
-8ec19a492733284c1444a7a804286800	INSERT INTO t12 VALUES (?)  	2
-25abe6e665794bc331965c048ea0bf5e	DROP TRIGGER trg  	1
+f179ae2f3568daafdf95e8d26286df40	TRUNCATE TABLE performance_schema . events_statements_summary_by_digest  	1
+d6ab54f66e4a40e7f5685fda9f1b8996	SELECT ? FROM t1  	1
+e171daba4068de1cf11584d224640fca	SELECT ? FROM `t1`  	1
+89c94dbe9eaa44ff16208c48b9635a09	SELECT ?, ... FROM t1  	2
+52d70d49081856a8471a46aac8519e2b	SELECT ? FROM t2  	1
+7f2ae4ab3a1d75d88a182a348fc3d415	SELECT ?, ... FROM t2  	2
+0355a3b435784167943a75c2a7c5312d	INSERT INTO t1 VALUES (?)  	1
+0d3557a9ef425cd98e80d026744e446d	INSERT INTO t2 VALUES (?)  	1
+c0f6087f01441c24aea229a0d1537d5c	INSERT INTO t3 VALUES (...)  	4
+b55b1670f25562bcf4d65641a6cc5001	INSERT INTO t4 VALUES (...)  	1
+bc60b31eafbdc7f6cdef44a088c932e4	INSERT INTO t5 VALUES (...)  	1
+8169aceb276d00c6b840084f48c27551	INSERT INTO t1 VALUES (?) /* , ... */  	2
+938c2c087fda0f7716fe9477e09d6e87	INSERT INTO t3 VALUES (...) /* , ... */  	1
+ecaf67c52e56814b2505ff420e390d69	INSERT INTO t5 VALUES (...) /* , ... */  	1
+b741503f32e7e4d7f6b22a0283fae829	INSERT INTO t1 VALUES ( NULL )  	1
+f6b5b808e6c08721a0d14be1b1514d5e	INSERT INTO t6 VALUES (...)  	5
+cb4fca9a44b33f9412f9abacf91cc854	SELECT ? + ?  	3
+4602e592cdee38a26557bd0d9215be35	SELECT ?  	1
+c971c8e991c110c98d36f618b0d4f080	CREATE SCHEMA statements_digest_temp  	2
+5aabfd327c59e12e5efff109687e59e5	DROP SCHEMA statements_digest_temp  	2
+24bc63079bb4bb22c6d56956845f9f22	SELECT ? FROM no_such_table  	1
+5052d57e550edcda9e031d580563563d	CREATE TABLE dup_table ( c CHARACTER (?) )  	2
+da533ad6c950c444d223ae1669b34eb1	DROP TABLE dup_table  	1
+d66abc28b6eb13ae2b8fdf682e6e8205	INSERT INTO t11 VALUES (?)  	1
+fb16be66cd2f46920a3d7d0329d83e44	SHOW WARNINGS  	1
+bd867d4bea3c66a396b1ff328b0f2388	PREPARE stmt FROM ?  	1
+9bc31ccd137630c2c9e6b4062c4576a8	EXECUTE stmt  	2
+140e00113ca4134a7378e7c6e4591798	DEALLOCATE PREPARE stmt  	1
+e5aef81f8daaabbb87c3cf8f4ef7e048	CREATE PROCEDURE p1 ( ) BEGIN SELECT * FROM t12 ; END  	1
+b18d0fc42dadff72ad682bc959b25613	CALL p1 ( )  	2
+2a3fe2f3fbb24c75bb39e5a493dd5f8e	DROP PROCEDURE p1  	1
+2cb88d38ed288f251c9b6bf8614f6625	CREATE FUNCTION `func` ( a INTEGER , b INTEGER ) RETURNS INTEGER (?) RETURN a + b  	1
+e4c8a3d91e3fa50ccf4cb5562852e882	SELECT func (...)  	2
+1a877d7135862fc121e3a6ee1e1d82d4	DROP FUNCTION func  	1
+eb7b97e334308d4f4e5eb5bba2457d66	CREATE TRIGGER trg BEFORE INSERT ON t12 FOR EACH ROW SET @ ? := ?  	1
+77cd6962d21dc2406f457639d9b61ffd	INSERT INTO t12 VALUES (?)  	2
+8b3bc89d52f67870331670b0aebf235e	DROP TRIGGER trg  	1
 SELECT digest, digest_text FROM performance_schema.events_statements_current;
 digest	digest_text
 ####################################

=== modified file 'mysql-test/suite/perfschema/r/statement_digest_long_query.result'
--- a/mysql-test/suite/perfschema/r/statement_digest_long_query.result	2012-05-23 05:02:04 +0000
+++ b/mysql-test/suite/perfschema/r/statement_digest_long_query.result	2012-05-28 09:09:33 +0000
@@ -8,5 +8,5 @@ SELECT 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
 ####################################
 SELECT digest, digest_text, count_star FROM events_statements_summary_by_digest;
 digest	digest_text	count_star
-5afa2815e9aefe4b6d674bca68e9d623	TRUNCATE TABLE events_statements_summary_by_digest  	1
-0f8d115649c7ac28d4615c40e3ff4408	SELECT ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ...	1
+61716ce2975dafeb966045d1a72a2497	TRUNCATE TABLE events_statements_summary_by_digest  	1
+e9abf9dfcb7c3b232a50e66856b05136	SELECT ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ? + ...	1

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -63,7 +63,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -63,7 +63,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -61,7 +61,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -60,7 +60,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -61,7 +61,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -60,7 +60,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_off.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_off.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_off.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -63,7 +63,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -63,7 +63,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -65,7 +65,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -64,7 +64,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -65,7 +65,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -64,7 +64,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -63,7 +63,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -63,7 +63,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -65,7 +65,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -64,7 +64,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -65,7 +65,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -64,7 +64,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -65,7 +65,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -64,7 +64,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -65,7 +65,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -64,7 +64,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -63,7 +63,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -63,7 +63,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -62,7 +62,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result	2012-05-28 09:09:33 +0000
@@ -65,7 +65,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result	2012-05-28 09:09:33 +0000
@@ -64,7 +64,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result	2012-05-28 09:09:33 +0000
@@ -65,7 +65,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result	2012-02-28 15:57:52 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result	2012-05-28 09:09:33 +0000
@@ -64,7 +64,7 @@ performance_schema_max_rwlock_instances	
 performance_schema_max_socket_classes	10
 performance_schema_max_socket_instances	1000
 performance_schema_max_stage_classes	150
-performance_schema_max_statement_classes	168
+performance_schema_max_statement_classes	169
 performance_schema_max_table_handles	1000
 performance_schema_max_table_instances	500
 performance_schema_max_thread_classes	50

=== modified file 'mysql-test/suite/rpl/r/rpl_user.result'
--- a/mysql-test/suite/rpl/r/rpl_user.result	2012-03-23 20:11:19 +0000
+++ b/mysql-test/suite/rpl/r/rpl_user.result	2012-05-28 09:09:33 +0000
@@ -45,6 +45,24 @@ drop user 'not_exist_user1'@'fakehost', 
 ERROR HY000: Operation DROP USER failed for 'not_exist_user1'@'fakehost','not_exist_user2'@'fakehost'
 select Host,User from mysql.user where Host='fakehost';
 Host	User
+#
+# WL2392: "Change Password at next login" (initial default for root)
+#
+CREATE USER must_change2@localhost IDENTIFIED BY 'aha';
+ALTER USER must_change2@localhost PASSWORD EXPIRE;
+select Host,User,password_expired from mysql.user where user='must_change2';
+Host	User	password_expired
+localhost	must_change2	Y
+# must throw an error
+SELECT USER();
+ERROR HY000: You must SET PASSWORD before executing this statement
+# setting a password unlocks it
+SET PASSWORD = PASSWORD('aha2');
+# must not throw an error
+SELECT USER();
+USER()
+must_change2@localhost
+DROP USER must_change2@localhost;
 include/show_binlog_events.inc
 Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 master-bin.000001	#	Query	#	#	use `test`; CREATE USER 'foo'@'fakehost'
@@ -55,4 +73,8 @@ master-bin.000001	#	Query	#	#	use `test`
 master-bin.000001	#	Query	#	#	use `test`; drop user 'foofoo'@'fakehost'
 master-bin.000001	#	Query	#	#	use `test`; drop user 'foo1'@'fakehost', 'foo2'@'fakehost', 'foo3'@'fakehost'
 master-bin.000001	#	Query	#	#	use `test`; drop user 'not_exist_user1'@'fakehost', 'barbar'@'fakehost'
+master-bin.000001	#	Query	#	#	use `test`; CREATE USER 'must_change2'@'localhost' IDENTIFIED BY PASSWORD '*B4AD7521513E598788362B069D1AEA3C8837A221'
+master-bin.000001	#	Query	#	#	use `test`; ALTER USER must_change2@localhost PASSWORD EXPIRE
+master-bin.000001	#	Query	#	#	use `test`; SET PASSWORD FOR 'must_change2'@'localhost'='*F827ACC9688DECC68F54398510B5B921E9725DE1'
+master-bin.000001	#	Query	#	#	use `test`; DROP USER must_change2@localhost
 include/rpl_end.inc

=== modified file 'mysql-test/suite/rpl/t/rpl_user.test'
--- a/mysql-test/suite/rpl/t/rpl_user.test	2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_user.test	2012-05-28 09:09:33 +0000
@@ -61,6 +61,47 @@ drop user 'not_exist_user1'@'fakehost', 
 sync_slave_with_master;
 select Host,User from mysql.user where Host='fakehost';
 
+
+--echo #
+--echo # WL2392: "Change Password at next login" (initial default for root)
+--echo #
+
+connection master;
+CREATE USER must_change2@localhost IDENTIFIED BY 'aha';
+ALTER USER must_change2@localhost PASSWORD EXPIRE;
+sync_slave_with_master;
+select Host,User,password_expired from mysql.user where user='must_change2';
+
+connect(must_change_con_slave,localhost,must_change2,aha,test,$SLAVE_MYPORT,);
+connection must_change_con_slave;
+--echo # must throw an error
+--error ER_MUST_CHANGE_PASSWORD
+SELECT USER();
+connection master;
+disconnect must_change_con_slave;
+
+connect(must_change_con_master,localhost,must_change2,aha);
+connection must_change_con_master;
+--echo # setting a password unlocks it
+SET PASSWORD = PASSWORD('aha2');
+connection master;
+disconnect must_change_con_master;
+
+sync_slave_with_master;
+connection master;
+
+connect(must_change_con_slave,localhost,must_change2,aha2,test,$SLAVE_MYPORT,);
+connection must_change_con_slave;
+--echo # must not throw an error
+SELECT USER();
+connection master;
+disconnect must_change_con_slave;
+
+DROP USER must_change2@localhost;
+
+sync_slave_with_master;
+connection master;
+
 #
 # show the binlog events on the master
 #

=== modified file 'mysql-test/t/connect.test'
--- a/mysql-test/t/connect.test	2012-01-30 15:43:32 +0000
+++ b/mysql-test/t/connect.test	2012-05-28 09:09:33 +0000
@@ -325,6 +325,149 @@ FLUSH PRIVILEGES;  
 DROP USER old_pwd@localhost, old_gpwd@localhost;  
 SET old_passwords=default;
 
+
+--echo #
+--echo # WL#2392: Change Password at next login
+--echo #
+
+CREATE USER must_change@localhost IDENTIFIED BY 'aha';
+SELECT password_expired FROM mysql.user 
+  WHERE user='must_change' and host = 'localhost';
+--connect(must_change_con, localhost, must_change, aha)
+SELECT USER();
+CREATE TABLE t1 (A INT);
+CREATE PROCEDURE TEST_t1(new_a INT) INSERT INTO t1 VALUES (new_a);
+CREATE FUNCTION last_t1() RETURNS INT RETURN (SELECT MAX(A) FROM t1);
+--echo # Initialize the table
+CALL test_t1(1);
+connection default;
+UPDATE mysql.user SET password_expired='Y'
+  WHERE user='must_change' and host = 'localhost';
+
+--echo # without FLUSH the field has no effect
+disconnect must_change_con;
+--connect(must_change_con, localhost, must_change, aha)
+--echo # must not throw an error
+SELECT USER();
+--echo # must not throw an error
+SELECT last_t1();
+--echo # must not throw an error
+CALL test_t1(last_t1() + 1);
+
+connection default;
+FLUSH PRIVILEGES;
+
+--echo # existing connections continue as before even after flush
+connection must_change_con;
+--echo # must not throw an error
+SELECT USER();
+--echo # must not throw an error
+SELECT last_t1();
+--echo # must not throw an error
+CALL test_t1(last_t1() + 1);
+
+--echo # new connections are blocked until a password reset
+connection default;
+disconnect must_change_con;
+--connect(must_change_con, localhost, must_change, aha)
+--error ER_MUST_CHANGE_PASSWORD
+SELECT USER();
+--error ER_MUST_CHANGE_PASSWORD
+SELECT last_t1();
+--error ER_MUST_CHANGE_PASSWORD
+CALL test_t1(last_t1() + 1);
+
+--echo # setting a password unlocks it
+SET PASSWORD = PASSWORD('aha2');
+--echo # must not throw an error
+SELECT USER();
+--echo # must not throw an error
+SELECT last_t1();
+--echo # must not throw an error
+CALL test_t1(last_t1() + 1);
+
+connection default;
+disconnect must_change_con;
+--echo # check if SET PASSWORD resets the column
+SELECT password_expired FROM mysql.user
+  WHERE user='must_change' and host = 'localhost';
+
+UPDATE mysql.user SET password_expired='Y'
+  WHERE user='must_change' and host = 'localhost';
+FLUSH PRIVILEGES;
+
+--connect(must_change_con, localhost, must_change, aha2)
+--error ER_MUST_CHANGE_PASSWORD
+SELECT USER();
+--error ER_MUST_CHANGE_PASSWORD
+SELECT last_t1();
+--error ER_MUST_CHANGE_PASSWORD
+CALL test_t1(last_t1() + 1);
+
+--echo # setting a password with a user name is no good
+--error ER_MUST_CHANGE_PASSWORD
+SET PASSWORD FOR must_change@localhost = PASSWORD('aha3');
+--error ER_MUST_CHANGE_PASSWORD
+SELECT USER();
+--error ER_MUST_CHANGE_PASSWORD
+SELECT last_t1();
+--error ER_MUST_CHANGE_PASSWORD
+CALL test_t1(last_t1() + 1);
+
+--echo # setting a password for the current user works
+SET PASSWORD FOR CURRENT_USER() = PASSWORD('aha3');
+SELECT USER();
+SELECT last_t1();
+CALL test_t1(last_t1() + 1);
+
+--echo # testing the ALTER USER command
+connection default;
+disconnect must_change_con;
+
+--echo # try a single user
+ALTER USER must_change@localhost PASSWORD EXPIRE;
+
+SELECT password_expired FROM mysql.user
+  WHERE user='must_change' and host = 'localhost';
+
+--connect(must_change_con, localhost, must_change, aha3)
+--error ER_MUST_CHANGE_PASSWORD
+SELECT USER();
+SET PASSWORD = PASSWORD('aha4');
+
+connection default;
+disconnect must_change_con;
+
+--echo # try a valid+invalid user combo
+--error ER_CANNOT_USER
+ALTER USER
+  invalid_user@localhost PASSWORD EXPIRE,
+  must_change@localhost PASSWORD EXPIRE;
+
+SELECT password_expired FROM mysql.user
+  WHERE user='must_change' and host = 'localhost';
+
+--connect(must_change_con, localhost, must_change, aha4)
+--error ER_MUST_CHANGE_PASSWORD
+SELECT USER();
+SET PASSWORD = PASSWORD('aha5');
+SELECT USER();
+
+connection default;
+disconnect must_change_con;
+
+--echo # Password change must be persistent when reconnecting
+--connect(must_change_con, localhost, must_change, aha5)
+SELECT USER();
+
+--echo # cleanup
+connection default;
+disconnect must_change_con;
+DROP PROCEDURE test_t1;
+DROP FUNCTION last_t1;
+DROP TABLE t1;
+DROP USER must_change@localhost;
+
 --echo # ------------------------------------------------------------------
 --echo # -- End of 5.6 tests
 --echo # ------------------------------------------------------------------

=== modified file 'scripts/mysql_system_tables.sql'
--- a/scripts/mysql_system_tables.sql	2012-05-10 12:43:57 +0000
+++ b/scripts/mysql_system_tables.sql	2012-05-28 09:09:33 +0000
@@ -28,7 +28,7 @@ set @had_db_table= @@warning_count != 0;
 CREATE TABLE IF NOT EXISTS host (  Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Host privileges;  Merged with database privileges';
 
 
-CREATE TABLE IF NOT EXISTS user (   Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Password char(41) character set latin1 collate latin1_bin DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tablespace_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL, ssl_cipher BLOB NOT NULL, x509_issuer BLOB NOT NULL, x509_subject BLOB NOT NULL, max_questions int(11) unsigned DEFAULT 0  NOT NULL, max_updates int(11) unsigned DEFAULT 0  NOT NULL, max_connections int(11) unsigned DEFAULT 0  NOT NULL, max_user_connections int(11) unsigned DEFAULT 0  NOT NULL, plugin char(64) DEFAULT '', authentication_string TEXT, PRIMARY KEY Host (Host,User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Users and global privileges';
+CREATE TABLE IF NOT EXISTS user (   Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Password char(41) character set latin1 collate latin1_bin DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tablespace_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL, ssl_cipher BLOB NOT NULL, x509_issuer BLOB NOT NULL, x509_subject BLOB NOT NULL, max_questions int(11) unsigned DEFAULT 0  NOT NULL, max_updates int(11) unsigned DEFAULT 0  NOT NULL, max_connections int(11) unsigned DEFAULT 0  NOT NULL, max_user_connections int(11) unsigned DEFAULT 0  NOT NULL, plugin char(64) DEFAULT '', authentication_string TEXT, password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Users and global privileges';
 
 -- Remember for later if user table already existed
 set @had_user_table= @@warning_count != 0;

=== modified file 'scripts/mysql_system_tables_data.sql'
--- a/scripts/mysql_system_tables_data.sql	2011-09-20 09:31:05 +0000
+++ b/scripts/mysql_system_tables_data.sql	2012-05-28 09:09:33 +0000
@@ -36,10 +36,10 @@ DROP TABLE tmp_db;
 -- from local machine if "users" table didn't exist before
 CREATE TEMPORARY TABLE tmp_user LIKE user;
 set @current_hostname= @@hostname;
-INSERT INTO tmp_user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
-REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','' FROM dual WHERE LOWER( @current_hostname) != 'localhost';
-REPLACE INTO tmp_user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
-REPLACE INTO tmp_user VALUES ('::1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
+INSERT INTO tmp_user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N');
+REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N' FROM dual WHERE LOWER( @current_hostname) != 'localhost';
+REPLACE INTO tmp_user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N');
+REPLACE INTO tmp_user VALUES ('::1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N');
 INSERT INTO tmp_user (host,user) VALUES ('localhost','');
 INSERT INTO tmp_user (host,user) SELECT @current_hostname,'' FROM dual WHERE LOWER(@current_hostname ) != 'localhost';
 INSERT INTO user SELECT * FROM tmp_user WHERE @had_user_table=0;

=== modified file 'scripts/mysql_system_tables_fix.sql'
--- a/scripts/mysql_system_tables_fix.sql	2012-03-06 14:29:42 +0000
+++ b/scripts/mysql_system_tables_fix.sql	2012-05-28 09:09:33 +0000
@@ -646,6 +646,16 @@ ALTER TABLE user ADD plugin char(64) DEF
 ALTER TABLE user MODIFY plugin char(64) DEFAULT '';
 ALTER TABLE user MODIFY authentication_string TEXT;
 
+-- establish if the field is already there.
+SET @hadPasswordExpired:=0;
+SELECT @hadPasswordExpired:=1 FROM user WHERE password_expired LIKE '%';
+
+ALTER TABLE user ADD password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
+UPDATE user SET password_expired = 'N' WHERE @hadPasswordExpired=0;
+
+-- need to compensate for the ALTER TABLE user .. CONVERT TO CHARACTER SET above
+ALTER TABLE user MODIFY password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
+
 -- Need to pre-fill mysql.proxies_priv with access for root even when upgrading from
 -- older versions
 

=== modified file 'sql/lex.h'
--- a/sql/lex.h	2012-05-23 05:02:04 +0000
+++ b/sql/lex.h	2012-05-28 09:09:33 +0000
@@ -208,12 +208,13 @@ static SYMBOL symbols[] = {
   { "EVENT",		SYM(EVENT_SYM)},
   { "EVENTS",		SYM(EVENTS_SYM)},
   { "EVERY",		SYM(EVERY_SYM)},
+  { "EXCHANGE",         SYM(EXCHANGE_SYM)},
   { "EXECUTE",		SYM(EXECUTE_SYM)},
   { "EXISTS",		SYM(EXISTS)},
   { "EXIT",             SYM(EXIT_SYM)},
   { "EXPANSION",	SYM(EXPANSION_SYM)},
   { "EXPORT",	        SYM(EXPORT_SYM)},
-  { "EXCHANGE",         SYM(EXCHANGE_SYM)},
+  { "EXPIRE",		SYM(EXPIRE_SYM)},
   { "EXPLAIN",		SYM(DESCRIBE)},
   { "EXTENDED",		SYM(EXTENDED_SYM)},
   { "EXTENT_SIZE",	SYM(EXTENT_SIZE_SYM)},

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2012-05-28 07:15:01 +0000
+++ b/sql/mysqld.cc	2012-05-28 09:09:33 +0000
@@ -3152,6 +3152,7 @@ SHOW_VAR com_status_vars[]= {
   {"alter_server",         (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_SERVER]), SHOW_LONG_STATUS},
   {"alter_table",          (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_TABLE]), SHOW_LONG_STATUS},
   {"alter_tablespace",     (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_TABLESPACE]), SHOW_LONG_STATUS},
+  {"alter_user",           (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ALTER_USER]), SHOW_LONG_STATUS},
   {"analyze",              (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_ANALYZE]), SHOW_LONG_STATUS},
   {"begin",                (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_BEGIN]), SHOW_LONG_STATUS},
   {"binlog",               (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_BINLOG_BASE64_EVENT]), SHOW_LONG_STATUS},

=== modified file 'sql/share/CMakeLists.txt'
--- a/sql/share/CMakeLists.txt	2012-05-23 09:54:40 +0000
+++ b/sql/share/CMakeLists.txt	2012-05-28 10:10:17 +0000
@@ -38,6 +38,7 @@ russian
 czech
 french
 serbian
+bulgarian
 )
 
 SET(files 

=== modified file 'sql/share/errmsg-utf8.txt'
--- a/sql/share/errmsg-utf8.txt	2012-05-28 09:21:40 +0000
+++ b/sql/share/errmsg-utf8.txt	2012-05-28 10:10:17 +0000
@@ -1,4 +1,4 @@
-languages czech=cze latin2, danish=dan latin1, dutch=nla latin1, english=eng latin1, estonian=est latin7, french=fre latin1, german=ger latin1, greek=greek greek, hungarian=hun latin2, italian=ita latin1, japanese=jpn ujis, japanese-sjis=jps sjis, korean=kor euckr, norwegian-ny=norwegian-ny latin1, norwegian=nor latin1, polish=pol latin2, portuguese=por latin1, romanian=rum latin2, russian=rus koi8r, serbian=serbian cp1250, slovak=slo latin2, spanish=spa latin1, swedish=swe latin1, ukrainian=ukr koi8u;
+languages czech=cze latin2, danish=dan latin1, dutch=nla latin1, english=eng latin1, estonian=est latin7, french=fre latin1, german=ger latin1, greek=greek greek, hungarian=hun latin2, italian=ita latin1, japanese=jpn ujis, japanese-sjis=jps sjis, korean=kor euckr, norwegian-ny=norwegian-ny latin1, norwegian=nor latin1, polish=pol latin2, portuguese=por latin1, romanian=rum latin2, russian=rus koi8r, serbian=serbian cp1250, slovak=slo latin2, spanish=spa latin1, swedish=swe latin1, ukrainian=ukr koi8u, bulgarian=bgn cp1251;
 
 default-language eng
 
@@ -6804,6 +6804,11 @@ ER_INVALID_YEAR_COLUMN_LENGTH
 
 ER_NOT_VALID_PASSWORD
   eng "Your password does not satisfy the current policy requirements"
+
+ER_MUST_CHANGE_PASSWORD
+  eng "You must SET PASSWORD before executing this statement"
+  bgn "������������ ����������� ������ SET PASSWORD ���� ���� �������������������"
+
 #
 #  End of 5.6 error messages.
 #

=== modified file 'sql/sql_acl.cc'
--- a/sql/sql_acl.cc	2012-05-28 09:21:40 +0000
+++ b/sql/sql_acl.cc	2012-05-28 10:10:17 +0000
@@ -314,6 +314,7 @@ public:
   const char *ssl_cipher, *x509_issuer, *x509_subject;
   LEX_STRING plugin;
   LEX_STRING auth_string;
+  bool password_expired;
 
   ACL_USER *copy(MEM_ROOT *root)
   {
@@ -620,7 +621,8 @@ static ACL_USER *find_acl_user(const cha
                                my_bool exact);
 static bool update_user_table(THD *thd, TABLE *table,
                               const char *host, const char *user,
-			      const char *new_password, uint new_password_len);
+			      const char *new_password, uint new_password_len,
+                              const char must_expire);
 static my_bool acl_load(THD *thd, TABLE_LIST *tables);
 static my_bool grant_load(THD *thd, TABLE_LIST *tables);
 static inline void get_grantor(THD *thd, char* grantor);
@@ -646,6 +648,12 @@ set_user_salt(ACL_USER *acl_user, const 
   }
   else
     acl_user->salt_len= 0;
+
+  /*
+    Since we're changing the password for the user we need to reset the
+    expiration flag.
+  */
+  acl_user->password_expired= false;
 }
 
 /*
@@ -1004,6 +1012,15 @@ static my_bool acl_load(THD *thd, TABLE_
               user.auth_string.str= const_cast<char*>("");
             user.auth_string.length= strlen(user.auth_string.str);
           }
+          else /* skip auth_string if there's no plugin */
+            next_field++;
+        }
+
+        if (table->s->fields >= 43)
+        {
+          char *tmpstr= get_field(&mem, table->field[next_field++]);
+          if (tmpstr && (*tmpstr == 'Y' || *tmpstr == 'y'))
+            user.password_expired= true;
         }
       }
       else
@@ -1449,6 +1466,8 @@ bool acl_getroot(Security_context *sctx,
       strmake(sctx->priv_host, acl_user->host.get_host(), MAX_HOSTNAME - 1);
     else
       *sctx->priv_host= 0;
+
+    sctx->password_expired= acl_user->password_expired;
   }
   mysql_mutex_unlock(&acl_cache->lock);
   DBUG_RETURN(res);
@@ -1513,7 +1532,7 @@ static void acl_update_user(const char *
 				   strdup_root(&mem,x509_subject) : 0);
 	}
 	if (password)
-	  set_user_salt(acl_user, password, password_len);
+          set_user_salt(acl_user, password, password_len);
         /* search complete: */
 	break;
       }
@@ -1885,6 +1904,11 @@ int check_change_password(THD *thd, cons
 /*
   Change a password for a user
 
+  Note : it will also reset the change_password flag.
+  This is safe to do unconditionally since the simple userless form
+  SET PASSWORD = PASSWORD('text') will be the only allowed form when
+  this flag is on. So we don't need to check user names here.
+
   SYNOPSIS
     change_password()
     thd			Thread handle
@@ -1957,6 +1981,7 @@ bool change_password(THD *thd, const cha
 
   /* update loaded acl entry: */
   set_user_salt(acl_user, new_password, new_password_len);
+  thd->security_ctx->password_expired= false;
 
   if (my_strcasecmp(system_charset_info, acl_user->plugin.str,
                     native_password_plugin_name.str) &&
@@ -1970,7 +1995,7 @@ bool change_password(THD *thd, const cha
   if (update_user_table(thd, table,
 			acl_user->host.get_host() ? acl_user->host.get_host() : "",
 			acl_user->user ? acl_user->user : "",
-			new_password, new_password_len))
+			new_password, new_password_len, 'N'))
   {
     mysql_mutex_unlock(&acl_cache->lock); /* purecov: deadcode */
     goto end;
@@ -2153,13 +2178,15 @@ bool hostname_requires_resolving(const c
       table             Pointer to TABLE object for open mysql.user table
       host/user         Hostname/username pair identifying user for which
                         new password should be set
-      new_password      New password
+      new_password      New password. Can be NULL to flag no new password
       new_password_len  Length of new password
+      password_expired  password expiration flag
 */
 
 static bool update_user_table(THD *thd, TABLE *table,
                               const char *host, const char *user,
-			      const char *new_password, uint new_password_len)
+			      const char *new_password, uint new_password_len,
+                              const char password_expired)
 {
   char user_key[MAX_KEY_LENGTH];
   int error;
@@ -2181,10 +2208,16 @@ static bool update_user_table(THD *thd, 
     DBUG_RETURN(1);				/* purecov: deadcode */
   }
   store_record(table,record[1]);
-  table->field[2]->store(new_password, new_password_len, system_charset_info);
+  if (new_password)
+  {
+    table->field[2]->store(new_password, new_password_len, system_charset_info);
+
+    if (new_password_len == SCRAMBLED_PASSWORD_CHAR_LENGTH_323)
+      WARN_DEPRECATED_41_PWD_HASH(thd);
+  }
 
-  if (new_password_len == SCRAMBLED_PASSWORD_CHAR_LENGTH_323)
-    WARN_DEPRECATED_41_PWD_HASH(thd);
+  /* password_expired */
+  table->field[42]->store(&password_expired, 1, system_charset_info);
 
   if ((error=table->file->ha_update_row(table->record[1],table->record[0])) &&
       error != HA_ERR_RECORD_IS_THE_SAME)
@@ -6819,6 +6852,123 @@ bool mysql_rename_user(THD *thd, List <L
 
 
 /*
+  Mark user's password as expired.
+
+  SYNOPSIS
+    mysql_user_password_expire()
+    thd                         The current thread.
+    list                        The user names.
+
+  RETURN
+    FALSE       OK.
+    TRUE        Error.
+*/
+
+bool mysql_user_password_expire(THD *thd, List <LEX_USER> &list)
+{
+  bool result= false;
+  String wrong_users;
+  LEX_USER *user_from, *tmp_user_from;
+  List_iterator <LEX_USER> user_list(list);
+  TABLE_LIST tables;
+  TABLE *table;
+  bool some_passwords_expired= false;
+  bool save_binlog_row_based;
+  DBUG_ENTER("mysql_user_password_expire");
+
+  tables.init_one_table("mysql", 5, "user", 4, "user", TL_WRITE);
+
+#ifdef HAVE_REPLICATION
+  /*
+    GRANT and REVOKE are applied the slave in/exclusion rules as they are
+    some kind of updates to the mysql.% tables.
+  */
+  if (thd->slave_thread && rpl_filter->is_on())
+  {
+    /*
+      The tables must be marked "updating" so that tables_ok() takes them into
+      account in tests.  It's ok to leave 'updating' set after tables_ok.
+    */
+    tables.updating= 1;
+    /* Thanks to memset, tables.next==0 */
+    if (!(thd->sp_runtime_ctx || rpl_filter->tables_ok(0, &tables)))
+      DBUG_RETURN(false);
+  }
+#endif
+  if (!(table= open_ltable(thd, &tables, TL_WRITE, MYSQL_LOCK_IGNORE_TIMEOUT)))
+    DBUG_RETURN(true);
+
+  /*
+    This statement will be replicated as a statement, even when using
+    row-based replication.  The flag will be reset at the end of the
+    statement.
+  */
+  if ((save_binlog_row_based= thd->is_current_stmt_binlog_format_row()))
+    thd->clear_current_stmt_binlog_format_row();
+
+  mysql_rwlock_wrlock(&LOCK_grant);
+  mysql_mutex_lock(&acl_cache->lock);
+
+  while ((tmp_user_from= user_list++))
+  {
+    ACL_USER *acl_user;
+
+    if (!(user_from= get_current_user(thd, tmp_user_from)))
+    {
+      result= true;
+      append_user(thd, &wrong_users, tmp_user_from, wrong_users.length() > 0,
+                  false);
+      continue;
+    }
+
+    if ((!(acl_user= find_acl_user(user_from->host.str,
+                                   user_from->user.str, TRUE))) ||
+        update_user_table(thd, table,
+                          acl_user->host.get_host() ?
+                            acl_user->host.get_host() : "",
+                          acl_user->user ? acl_user->user : "",
+                          NULL, 0, 'Y'))
+    {
+      result= true;
+      append_user(thd, &wrong_users, user_from, wrong_users.length() > 0,
+                  false);
+      continue;
+    }
+
+    acl_user->password_expired= true;
+
+    some_passwords_expired= true;
+  }
+
+  acl_cache->clear(1);				// Clear locked hostname cache
+  mysql_mutex_unlock(&acl_cache->lock);
+
+  if (!result && some_passwords_expired && mysql_bin_log.is_open())
+  {
+    const char *query= thd->rewritten_query.length() ?
+      thd->rewritten_query.c_ptr_safe() : thd->query();
+    const size_t query_length= thd->rewritten_query.length() ?
+      thd->rewritten_query.length() : thd->query_length();
+    result= (write_bin_log(thd, false, query, query_length) != 0);
+  }
+
+  mysql_rwlock_unlock(&LOCK_grant);
+
+  close_mysql_tables(thd);
+
+  /* Restore the state of binlog format */
+  DBUG_ASSERT(!thd->is_current_stmt_binlog_format_row());
+  if (save_binlog_row_based)
+    thd->set_current_stmt_binlog_format_row();
+
+  if (result)
+    my_error(ER_CANNOT_USER, MYF(0), "ALTER USER", wrong_users.c_ptr_safe());
+
+  DBUG_RETURN(result);
+}
+
+
+/*
   Revoke all privileges from a list of users.
 
   SYNOPSIS
@@ -9653,6 +9803,7 @@ acl_authenticate(THD *thd, uint com_chan
           &acl_user->user_resource))
       DBUG_RETURN(1); // The error is set by get_or_create_user_conn()
 
+    sctx->password_expired= acl_user->password_expired;
 #endif
   }
   else
@@ -9715,6 +9866,7 @@ acl_authenticate(THD *thd, uint com_chan
   if (mpvio.auth_info.external_user[0])
     sctx->external_user= my_strdup(mpvio.auth_info.external_user, MYF(0));
 
+
   if (res == CR_OK_HANDSHAKE_COMPLETE)
     thd->get_stmt_da()->disable_status();
   else

=== modified file 'sql/sql_acl.h'
--- a/sql/sql_acl.h	2012-05-23 09:54:40 +0000
+++ b/sql/sql_acl.h	2012-05-28 10:10:17 +0000
@@ -236,6 +236,7 @@ void get_mqh(const char *user, const cha
 bool mysql_create_user(THD *thd, List <LEX_USER> &list);
 bool mysql_drop_user(THD *thd, List <LEX_USER> &list);
 bool mysql_rename_user(THD *thd, List <LEX_USER> &list);
+bool mysql_user_password_expire(THD *thd, List <LEX_USER> &list);
 bool mysql_revoke_all(THD *thd, List <LEX_USER> &list);
 void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant,
                                      const char *db, const char *table);

=== modified file 'sql/sql_class.cc'
--- a/sql/sql_class.cc	2012-05-28 05:46:07 +0000
+++ b/sql/sql_class.cc	2012-05-28 09:09:33 +0000
@@ -3564,6 +3564,7 @@ void Security_context::init()
 #ifndef NO_EMBEDDED_ACCESS_CHECKS
   db_access= NO_ACCESS;
 #endif
+  password_expired= false; 
 }
 
 

=== modified file 'sql/sql_class.h'
--- a/sql/sql_class.h	2012-05-28 07:15:01 +0000
+++ b/sql/sql_class.h	2012-05-28 09:09:33 +0000
@@ -1235,6 +1235,7 @@ public:
   const char *host_or_ip;
   ulong master_access;                 /* Global privileges from mysql.user */
   ulong db_access;                     /* Privileges for current db */
+  bool password_expired;               /* password expiration flag */
 
   void init();
   void destroy();

=== modified file 'sql/sql_cmd.h'
--- a/sql/sql_cmd.h	2011-07-15 12:56:32 +0000
+++ b/sql/sql_cmd.h	2012-05-28 09:09:33 +0000
@@ -89,6 +89,7 @@ enum enum_sql_command {
   SQLCOM_SIGNAL, SQLCOM_RESIGNAL,
   SQLCOM_SHOW_RELAYLOG_EVENTS,
   SQLCOM_GET_DIAGNOSTICS,
+  SQLCOM_ALTER_USER,
 
   /*
     When a command is added here, be sure it's also added in mysqld.cc

=== modified file 'sql/sql_lex.cc'
--- a/sql/sql_lex.cc	2012-05-17 20:54:59 +0000
+++ b/sql/sql_lex.cc	2012-05-28 09:09:33 +0000
@@ -2824,7 +2824,8 @@ void Query_tables_list::destroy_query_ta
 */
 
 LEX::LEX()
-  :result(0), option_type(OPT_DEFAULT), is_lex_started(0)
+  :result(0), option_type(OPT_DEFAULT), is_change_password(false),
+  is_lex_started(0)
 {
 
   my_init_dynamic_array2(&plugins, sizeof(plugin_ref),

=== modified file 'sql/sql_lex.h'
--- a/sql/sql_lex.h	2012-05-17 20:54:59 +0000
+++ b/sql/sql_lex.h	2012-05-28 09:09:33 +0000
@@ -2322,6 +2322,7 @@ struct LEX: public Query_tables_list
   bool sp_lex_in_use;	/* Keep track on lex usage in SPs for error handling */
   bool all_privileges;
   bool proxy_priv;
+  bool is_change_password;
 
 private:
   /// Current SP parsing context.

=== modified file 'sql/sql_parse.cc'
--- a/sql/sql_parse.cc	2012-05-28 07:15:01 +0000
+++ b/sql/sql_parse.cc	2012-05-28 09:09:33 +0000
@@ -443,6 +443,7 @@ void init_update_queries(void)
   sql_command_flags[SQLCOM_CREATE_USER]=       CF_CHANGES_DATA;
   sql_command_flags[SQLCOM_RENAME_USER]=       CF_CHANGES_DATA;
   sql_command_flags[SQLCOM_DROP_USER]=         CF_CHANGES_DATA;
+  sql_command_flags[SQLCOM_ALTER_USER]=        CF_CHANGES_DATA;
   sql_command_flags[SQLCOM_GRANT]=             CF_CHANGES_DATA;
   sql_command_flags[SQLCOM_REVOKE]=            CF_CHANGES_DATA;
   sql_command_flags[SQLCOM_REVOKE_ALL]=        CF_CHANGES_DATA;
@@ -481,6 +482,7 @@ void init_update_queries(void)
   sql_command_flags[SQLCOM_CREATE_USER]|=       CF_AUTO_COMMIT_TRANS;
   sql_command_flags[SQLCOM_DROP_USER]|=         CF_AUTO_COMMIT_TRANS;
   sql_command_flags[SQLCOM_RENAME_USER]|=       CF_AUTO_COMMIT_TRANS;
+  sql_command_flags[SQLCOM_ALTER_USER]|=        CF_AUTO_COMMIT_TRANS;
   sql_command_flags[SQLCOM_REVOKE]|=            CF_AUTO_COMMIT_TRANS;
   sql_command_flags[SQLCOM_REVOKE_ALL]|=        CF_AUTO_COMMIT_TRANS;
   sql_command_flags[SQLCOM_GRANT]|=             CF_AUTO_COMMIT_TRANS;
@@ -571,6 +573,7 @@ void init_update_queries(void)
   sql_command_flags[SQLCOM_DROP_EVENT]|=       CF_DISALLOW_IN_RO_TRANS;
   sql_command_flags[SQLCOM_CREATE_USER]|=      CF_DISALLOW_IN_RO_TRANS;
   sql_command_flags[SQLCOM_RENAME_USER]|=      CF_DISALLOW_IN_RO_TRANS;
+  sql_command_flags[SQLCOM_ALTER_USER]|=       CF_DISALLOW_IN_RO_TRANS;
   sql_command_flags[SQLCOM_DROP_USER]|=        CF_DISALLOW_IN_RO_TRANS;
   sql_command_flags[SQLCOM_CREATE_SERVER]|=    CF_DISALLOW_IN_RO_TRANS;
   sql_command_flags[SQLCOM_ALTER_SERVER]|=     CF_DISALLOW_IN_RO_TRANS;
@@ -4854,6 +4857,17 @@ create_sp_error:
     DBUG_ASSERT(lex->m_sql_cmd != NULL);
     res= lex->m_sql_cmd->execute(thd);
     break;
+
+#ifndef NO_EMBEDDED_ACCESS_CHECKS
+  case SQLCOM_ALTER_USER:
+    if (check_access(thd, UPDATE_ACL, "mysql", NULL, NULL, 1, 1) &&
+        check_global_access(thd, CREATE_USER_ACL))
+      break;
+    /* Conditionally writes to binlog */
+    if (!(res= mysql_user_password_expire(thd, lex->users_list)))
+      my_ok(thd);
+    break;
+#endif
   default:
 #ifndef EMBEDDED_LIBRARY
     DBUG_ASSERT(0);                             /* Impossible */
@@ -6084,8 +6098,14 @@ void mysql_parse(THD *thd, char *rawbuf,
                                  &thd->security_ctx->priv_user[0],
                                  (char *) thd->security_ctx->host_or_ip,
                                  0);
-
-          error= mysql_execute_command(thd);
+          if (unlikely(thd->security_ctx->password_expired && 
+                       !lex->is_change_password))
+          {
+            my_error(ER_MUST_CHANGE_PASSWORD, MYF(0));
+            error= 1;
+          }
+          else
+            error= mysql_execute_command(thd);
           if (error == 0 &&
               thd->variables.gtid_next.type == GTID_GROUP &&
               thd->owned_gtid.sidno != 0 &&

=== modified file 'sql/sql_prepare.cc'
--- a/sql/sql_prepare.cc	2012-05-24 16:01:28 +0000
+++ b/sql/sql_prepare.cc	2012-05-28 09:09:33 +0000
@@ -3492,6 +3492,13 @@ Prepared_statement::execute_loop(String 
   if (set_parameters(expanded_query, packet, packet_end))
     return TRUE;
 
+  if (unlikely(thd->security_ctx->password_expired && 
+               !lex->is_change_password))
+  {
+    my_error(ER_MUST_CHANGE_PASSWORD, MYF(0));
+    return true;
+  }
+
 reexecute:
   /*
     If the free_list is not empty, we'll wrongly free some externally

=== modified file 'sql/sql_yacc.yy'
--- a/sql/sql_yacc.yy	2012-05-28 09:21:40 +0000
+++ b/sql/sql_yacc.yy	2012-05-28 10:10:17 +0000
@@ -1179,6 +1179,7 @@ bool my_yyoverflow(short **a, YYSTYPE **
 %token  EXISTS                        /* SQL-2003-R */
 %token  EXIT_SYM
 %token  EXPANSION_SYM
+%token  EXPIRE_SYM
 %token  EXPORT_SYM
 %token  EXTENDED_SYM
 %token  EXTENT_SIZE_SYM
@@ -1852,6 +1853,7 @@ bool my_yyoverflow(short **a, YYSTYPE **
         part_column_list
         server_def server_options_list server_option
         definer_opt no_definer definer get_diagnostics
+        alter_user_list
 END_OF_INPUT
 
 %type <NONE> call sp_proc_stmts sp_proc_stmts1 sp_proc_stmt
@@ -7356,6 +7358,23 @@ alter:
             lex->server_options.server_name= $3.str;
             lex->server_options.server_name_length= $3.length;
           }
+        | ALTER USER clear_privileges alter_user_list
+          {
+            Lex->sql_command= SQLCOM_ALTER_USER;
+          }
+        ;
+
+alter_user_list:
+        user PASSWORD EXPIRE_SYM
+        {
+            if (Lex->users_list.push_back($1))
+              MYSQL_YYABORT;
+        }
+        | alter_user_list ',' user PASSWORD EXPIRE_SYM
+          {
+            if (Lex->users_list.push_back($3))
+              MYSQL_YYABORT;
+          }
         ;
 
 ev_alter_on_schedule_completion:
@@ -13969,6 +13988,7 @@ keyword_sp:
         | EVERY_SYM                {}
         | EXCHANGE_SYM             {}
         | EXPANSION_SYM            {}
+        | EXPIRE_SYM               {}
         | EXPORT_SYM               {}
         | EXTENDED_SYM             {}
         | EXTENT_SIZE_SYM          {}
@@ -14546,19 +14566,26 @@ option_value_no_option_type:
 
             lex->var_list.push_back(var);
             lex->autocommit= TRUE;
+            lex->is_change_password= TRUE;
 
             if (sp)
               sp->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT;
           }
         | PASSWORD FOR_SYM user equal text_or_password
           {
-            set_var_password *var= new set_var_password($3,$5);
+            LEX_USER *user= $3;
+            LEX *lex= Lex;
+            set_var_password *var;
+
+            var= new set_var_password(user,$5);
             if (var == NULL)
               MYSQL_YYABORT;
-            Lex->var_list.push_back(var);
-            Lex->autocommit= TRUE;
-            if (Lex->sphead)
-              Lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT;
+            lex->var_list.push_back(var);
+            lex->autocommit= TRUE;
+            if (lex->sphead)
+              lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT;
+            if (!user->user.str)
+              lex->is_change_password= TRUE;
           }
         ;
 

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-trunk branch (Georgi.Kodinov:3908) Georgi Kodinov28 May