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 Kodinov | 28 May |