diff options
author | Alexander Nozdrin <alik@sun.com> | 2010-01-31 01:06:50 +0300 |
---|---|---|
committer | Alexander Nozdrin <alik@sun.com> | 2010-01-31 01:06:50 +0300 |
commit | 2b0f6b5ace4b455344dc25e400873d3d68c90090 (patch) | |
tree | 64c1a58bb6f6f5516fbf930759b54e0081b98b90 | |
parent | 22e0e72370ddbd95d0438b769ac5dda82b2c9b0a (diff) | |
parent | d9e9a73e8f1355a24b27d64d56d555d045ee0b4c (diff) | |
download | mariadb-git-2b0f6b5ace4b455344dc25e400873d3d68c90090.tar.gz |
Manual merge from mysql-trunk-merge.
Conflicts:
- mysql-test/suite/rpl/r/rpl_binlog_grant.result
- mysql-test/suite/rpl/r/rpl_sp.result
- mysql-test/suite/rpl/t/rpl_binlog_grant.test
- sql/sql_parse.cc
- sql/sql_table.cc
- sql/sql_test.cc
47 files changed, 2938 insertions, 469 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c index c50f2de5e7d..3f4ce1ab0af 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -290,7 +290,7 @@ static struct my_option my_long_options[] = (uchar**) &opt_events, (uchar**) &opt_events, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"extended-insert", 'e', - "Allows utilization of the new, much faster INSERT syntax.", + "Use multiple-row INSERT syntax that include several VALUES lists.", (uchar**) &extended_insert, (uchar**) &extended_insert, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"fields-terminated-by", OPT_FTB, diff --git a/mysql-test/extra/rpl_tests/rpl_current_user.test b/mysql-test/extra/rpl_tests/rpl_current_user.test new file mode 100644 index 00000000000..7ec38e0c151 --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_current_user.test @@ -0,0 +1,127 @@ +--let $count=1 +connection master; + +if (`SELECT '$diff_table' = ''`) +{ + let $diff_table= mysql.user; +} + +--echo +--echo +--echo +--echo TEST STATEMENT: '$statement' +--echo -------------------------------------------------------------------------- + +if (`SELECT '$diff_columns' = ''`) +{ + eval CREATE VIEW test.bug48321_v1 AS SELECT user FROM $diff_table + WHERE user LIKE 'bug48321%'; +} + +if (`SELECT '$diff_columns' <> ''`) +{ + eval CREATE VIEW test.bug48321_v1 AS SELECT user, $diff_columns + FROM $diff_table WHERE user LIKE 'bug48321%'; +} + +while (`SELECT $count < 6`) +{ + --echo + --echo TEST STATEMENT: '$statement' + --echo CASE $count: + --echo ------- + + let $user2= 'bug48321_2'@'localhost'; + let $user3= 'bug48321_3'@'localhost'; + + let $user1= CURRENT_USER(); + if (`SELECT '$action'='RENAME'`) + { + let $user1= $user1 TO 'bug48321_4'@'localhost'; + let $user2= $user2 TO 'bug48321_5'@'localhost'; + let $user3= $user3 TO 'bug48321_6'@'localhost'; + } + + if (`SELECT '$action'='GRANT'`) + { + let $user1= $user1 IDENTIFIED BY 'user1'; + let $user3= $user3 IDENTIFIED BY ''; + } + + if (`SELECT $count=1`) + { + --echo # Only CURRENT_USER() in the user list of the test statement. + let $users_list= $user1; + } + + if (`SELECT $count=2`) + { + --echo # Two users are in the test statement, CURRENT_USER is the first one. + let $users_list= $user1, $user2; + } + + if (`SELECT $count=3`) + { + --echo # Two users are in the test statement, CURRENT_USER is the last one. + let $users_list= $user2, $user1; + } + + if (`SELECT $count=4`) + { + --echo # Three users are in the test statement, CURRENT_USER is the second one. + let $users_list= $user2, $user1, $user3; + } + + if (`SELECT $count=5`) + { + --echo # CURRENT_USER is not in the test statement. + let $users_list= $user2, $user3; + } + + --echo users_list= $users_list + --echo + --echo # Connect to master with user1, so user1 always is the current user, + --echo # when test statement is runing. + eval GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; + eval CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + + if (`SELECT '$action'='REVOKE'`) + { + --echo + --echo # Grant some privileges to users at first when testing + --echo # 'REVOKE ...' statement. + eval GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', + 'bug48321_3'@'localhost' WITH GRANT OPTION; + eval GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', + 'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + } + + connect (conn1, 127.0.0.1, 'bug48321_1'@'localhost',,); + connection conn1; + --echo + let $temp= `SELECT "$statement"`; + eval $temp; + --echo + + disconnect conn1; + + connection master; + sync_slave_with_master; + + connection master; + let $diff_table_1= master:test.bug48321_v1; + let $diff_table_2= slave:test.bug48321_v1; + source include/diff_tables.inc; + --echo + + --echo # Delete all bug48321% users + connection master; + DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; + DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; + FLUSH PRIVILEGES; + + inc $count; +} +DROP VIEW test.bug48321_v1; diff --git a/mysql-test/lib/v1/mysql-test-run.pl b/mysql-test/lib/v1/mysql-test-run.pl index 4202334a244..b1e746dd80e 100755 --- a/mysql-test/lib/v1/mysql-test-run.pl +++ b/mysql-test/lib/v1/mysql-test-run.pl @@ -1102,14 +1102,16 @@ sub command_line_setup () { if ( ! $opt_testcase_timeout ) { - $opt_testcase_timeout= $default_testcase_timeout; + $opt_testcase_timeout= + $ENV{MTR_TESTCASE_TIMEOUT} || $default_testcase_timeout; $opt_testcase_timeout*= 10 if $opt_valgrind; $opt_testcase_timeout*= 10 if ($opt_debug and $glob_win32); } if ( ! $opt_suite_timeout ) { - $opt_suite_timeout= $default_suite_timeout; + $opt_suite_timeout= + $ENV{MTR_SUITE_TIMEOUT} || $default_suite_timeout; $opt_suite_timeout*= 6 if $opt_valgrind; $opt_suite_timeout*= 6 if ($opt_debug and $glob_win32); } diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 02404af5eea..a56ce563fab 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -217,10 +217,10 @@ my $opt_mark_progress; my $opt_sleep; -my $opt_testcase_timeout= 15; # minutes -my $opt_suite_timeout = 300; # minutes -my $opt_shutdown_timeout= 10; # seconds -my $opt_start_timeout = 180; # seconds +my $opt_testcase_timeout= $ENV{MTR_TESTCASE_TIMEOUT} || 15; # minutes +my $opt_suite_timeout = $ENV{MTR_SUITE_TIMEOUT} || 300; # minutes +my $opt_shutdown_timeout= $ENV{MTR_SHUTDOWN_TIMEOUT} || 10; # seconds +my $opt_start_timeout = $ENV{MTR_START_TIMEOUT} || 180; # seconds sub testcase_timeout { return $opt_testcase_timeout * 60; }; sub suite_timeout { return $opt_suite_timeout * 60; }; diff --git a/mysql-test/r/delete.result b/mysql-test/r/delete.result index c76937c7abd..d6eb1fbabe9 100644 --- a/mysql-test/r/delete.result +++ b/mysql-test/r/delete.result @@ -478,3 +478,16 @@ END | DELETE IGNORE FROM t1; ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. DROP TABLE t1; +# +# Bug #49552 : sql_buffer_result cause crash + not found records +# in multitable delete/subquery +# +CREATE TABLE t1(a INT); +INSERT INTO t1 VALUES (1),(2),(3); +SET SESSION SQL_BUFFER_RESULT=1; +DELETE t1 FROM (SELECT SUM(a) a FROM t1) x,t1; +SET SESSION SQL_BUFFER_RESULT=DEFAULT; +SELECT * FROM t1; +a +DROP TABLE t1; +End of 5.1 tests diff --git a/mysql-test/r/openssl_1.result b/mysql-test/r/openssl_1.result index b0dd3acd662..6389438c993 100644 --- a/mysql-test/r/openssl_1.result +++ b/mysql-test/r/openssl_1.result @@ -3,8 +3,8 @@ create table t1(f1 int); insert into t1 values (5); grant select on test.* to ssl_user1@localhost require SSL; grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA"; -grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com"; -grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com" ISSUER "/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB"; +grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB"; +grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB" ISSUER "/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB"; grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx"; flush privileges; connect(localhost,ssl_user5,,test,MASTER_PORT,MASTER_SOCKET); diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 41dd44fc4d0..65bd5183474 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -4531,6 +4531,69 @@ id select_type table type possible_keys key key_len ref rows filtered Extra Warnings: Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a` from dual where 1 DROP TABLE t1; +# +# Bug #49897: crash in ptr_compare when char(0) NOT NULL +# column is used for ORDER BY +# +SET @old_sort_buffer_size= @@session.sort_buffer_size; +SET @@sort_buffer_size= 40000; +CREATE TABLE t1(a CHAR(0) NOT NULL); +INSERT INTO t1 VALUES (0), (0), (0); +INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12; +INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12; +INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12; +EXPLAIN SELECT a FROM t1 ORDER BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 24492 +SELECT a FROM t1 ORDER BY a; +DROP TABLE t1; +CREATE TABLE t1(a CHAR(0) NOT NULL, b CHAR(0) NOT NULL, c int); +INSERT INTO t1 VALUES (0, 0, 0), (0, 0, 2), (0, 0, 1); +INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12; +INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12; +INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12; +EXPLAIN SELECT a FROM t1 ORDER BY a LIMIT 5; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 24492 +SELECT a FROM t1 ORDER BY a LIMIT 5; +a + + + + + +EXPLAIN SELECT * FROM t1 ORDER BY a, b LIMIT 5; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 24492 +SELECT * FROM t1 ORDER BY a, b LIMIT 5; +a b c + 0 + 2 + 1 + 0 + 2 +EXPLAIN SELECT * FROM t1 ORDER BY a, b, c LIMIT 5; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 24492 Using filesort +SELECT * FROM t1 ORDER BY a, b, c LIMIT 5; +a b c + 0 + 0 + 0 + 0 + 0 +EXPLAIN SELECT * FROM t1 ORDER BY c, a LIMIT 5; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 24492 Using filesort +SELECT * FROM t1 ORDER BY c, a LIMIT 5; +a b c + 0 + 0 + 0 + 0 + 0 +SET @@sort_buffer_size= @old_sort_buffer_size; +DROP TABLE t1; End of 5.0 tests create table t1(a INT, KEY (a)); INSERT INTO t1 VALUES (1),(2),(3),(4),(5); diff --git a/mysql-test/std_data/bug47142_master-bin.000001 b/mysql-test/std_data/bug47142_master-bin.000001 Binary files differnew file mode 100644 index 00000000000..d1a089a784a --- /dev/null +++ b/mysql-test/std_data/bug47142_master-bin.000001 diff --git a/mysql-test/std_data/cacert.pem b/mysql-test/std_data/cacert.pem index 5473e4b153e..e44341384e4 100644 --- a/mysql-test/std_data/cacert.pem +++ b/mysql-test/std_data/cacert.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICrTCCAhagAwIBAgIJAJXpePU0UOTVMA0GCSqGSIb3DQEBBQUAMEQxCzAJBgNV +MIICrTCCAhagAwIBAgIJAMI7xZKjhrDbMA0GCSqGSIb3DQEBBAUAMEQxCzAJBgNV BAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMRAwDgYDVQQHEwdVcHBzYWxhMREwDwYD -VQQKEwhNeVNRTCBBQjAeFw0wOTAxMjgxMDQ5NDZaFw0xNDAxMjcxMDQ5NDZaMEQx +VQQKEwhNeVNRTCBBQjAeFw0xMDAxMjkxMTQ3MTBaFw0xNTAxMjgxMTQ3MTBaMEQx CzAJBgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMRAwDgYDVQQHEwdVcHBzYWxh MREwDwYDVQQKEwhNeVNRTCBBQjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA -4XQHAe5R1+TXC8noZtWf+d5E0v1C59FWpn9SWEUCBjE5UiIwuJvi4Y+7xWGOXLAI -/JzJx5gNXLBiTsE/zh0uX9fKlajLhxB0GN+QU0ZlpQ1BeYipEcNXeI/7cT499f6v -XWabnTflivdCgHSWUOQ20/Lzs6kP6/e6OoZd/DPSjPECAwEAAaOBpjCBozAdBgNV -HQ4EFgQU8uLqVWWkmuKsnZf1RWz294wRrd8wdAYDVR0jBG0wa4AU8uLqVWWkmuKs -nZf1RWz294wRrd+hSKRGMEQxCzAJBgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxh -MRAwDgYDVQQHEwdVcHBzYWxhMREwDwYDVQQKEwhNeVNRTCBBQoIJAJXpePU0UOTV -MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAMMTE5sDN+Z0ZlV7KvH3g -6+aKvql8dTpRT3hYukeQlWua0nq74WPGVw0c4e/M/vbiMwmJcCYpB9pd4+dHqzSw -aPyoenjY6UF8n7B4quWy3SIUk2LSHeJLW+kzJn2afN9gvipFhdVh/uU2TIyLGOur -Z/vmJX2W7hF1uqPnbfa8Lrw= +wQYsOEfrN4ESP3FjsI8cghE+tZVuyK2gck61lwieVxjgFMtBd65mI5a1y9pmlOI1 +yM4SB2Ppqcuw7/e1CdV1y7lvHrGNt5yqEHbN4QX1gvsN8TQauP/2WILturk4R4Hq +rKg0ZySu7f1Xhl0ed9a48LpaEHD17IcxWEGMMJwAxF0CAwEAAaOBpjCBozAMBgNV +HRMEBTADAQH/MB0GA1UdDgQWBBSvktYQ0ahLnyxyVKqty+WpBbBrDTB0BgNVHSME +bTBrgBSvktYQ0ahLnyxyVKqty+WpBbBrDaFIpEYwRDELMAkGA1UEBhMCU0UxEDAO +BgNVBAgTB1VwcHNhbGExEDAOBgNVBAcTB1VwcHNhbGExETAPBgNVBAoTCE15U1FM +IEFCggkAwjvFkqOGsNswDQYJKoZIhvcNAQEEBQADgYEAdKN1PjwMHAKG2Ww1145g +JQGBnKxSFOUaoSvkBi/4ntTM+ysnViWh7WvxyWjR9zU9arfr7aqsDeQxm0XDOqzj +AQ/cQIla2/Li8tXyfc06bisH/IHRaSc2zWqioTKbEwMdVOdrvq4a8V8ic3xYyIWn +7F4WeS07J8LKardSvM0+hOA= -----END CERTIFICATE----- diff --git a/mysql-test/std_data/client-cert.pem b/mysql-test/std_data/client-cert.pem index 9300520793e..ee7f2ab281e 100644 --- a/mysql-test/std_data/client-cert.pem +++ b/mysql-test/std_data/client-cert.pem @@ -1,55 +1,46 @@ Certificate: Data: - Version: 3 (0x2) - Serial Number: 3 (0x3) - Signature Algorithm: sha1WithRSAEncryption + Version: 1 (0x0) + Serial Number: 1048577 (0x100001) + Signature Algorithm: md5WithRSAEncryption Issuer: C=SE, ST=Uppsala, L=Uppsala, O=MySQL AB Validity - Not Before: Jan 28 11:04:39 2009 GMT - Not After : Jan 28 11:04:39 2010 GMT - Subject: C=SE, ST=Uppsala, O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com + Not Before: Jan 29 11:50:22 2010 GMT + Not After : Jan 28 11:50:22 2015 GMT + Subject: C=SE, ST=Uppsala, O=MySQL AB Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (512 bit) - Modulus (512 bit): - 00:e1:52:30:2c:d9:be:64:28:91:5d:7a:fd:d9:e9: - 14:35:7a:d2:94:4e:91:46:e0:db:9f:6b:79:f4:4c: - ac:6e:07:61:34:86:74:62:a7:a8:44:af:fa:87:87: - a8:7d:42:61:ff:ab:50:d4:7b:bf:75:fa:d5:d5:b3: - 74:fb:56:1e:37 + Public-Key: (1024 bit) + Modulus: + 00:cc:9a:37:49:13:66:dc:cf:e3:0b:13:a1:23:ed: + 78:db:4e:bd:11:f6:8c:0d:76:f9:a3:32:56:9a:f8: + a1:21:6a:55:4e:4d:3f:e6:67:9d:26:99:b2:cd:a4: + 9a:d2:2b:59:5c:d7:8a:d3:60:68:f8:18:bd:c5:be: + 15:e1:2a:3c:a3:d4:61:cb:f5:11:94:17:81:81:f7: + 87:8c:f6:6a:d2:ee:d8:e6:77:f6:62:66:4d:2e:16: + 8d:08:81:4a:c9:c6:4b:31:e5:b9:c7:8a:84:96:48: + a7:47:8c:0d:26:90:56:4e:e6:a5:6e:8c:b3:f2:9f: + fc:3d:78:9b:49:6e:86:83:77 Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - X509v3 Subject Key Identifier: - 58:30:B5:9B:2C:05:94:06:BA:3D:3C:F0:B2:CD:1D:67:65:E3:7F:85 - X509v3 Authority Key Identifier: - keyid:F2:E2:EA:55:65:A4:9A:E2:AC:9D:97:F5:45:6C:F6:F7:8C:11:AD:DF - DirName:/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB - serial:95:E9:78:F5:34:50:E4:D5 - - Signature Algorithm: sha1WithRSAEncryption - 05:19:e3:13:14:fc:c5:28:bf:69:f8:00:b3:25:cb:bd:ca:9f: - 2f:4c:b3:a8:04:11:f0:74:27:bd:82:2c:b4:49:9b:a7:59:f0: - f7:87:d1:e0:ba:99:a2:fe:4b:1d:10:6f:e4:a2:b3:cd:7f:8b: - 68:31:46:ee:cd:9e:e2:47:e1:4c:fa:74:d1:e2:8b:cc:a0:4b: - a8:24:d1:a4:c3:6b:2a:c6:28:cd:41:e0:06:48:e6:cf:f2:3c: - ca:37:95:d7:29:64:6b:91:91:83:e7:ac:c8:0b:87:bc:da:a6: - aa:f1:44:43:c8:74:7b:15:26:91:2e:03:c4:71:50:6c:f8:68: - dc:8c + Signature Algorithm: md5WithRSAEncryption + 5e:1f:a3:53:5f:24:13:1c:f8:28:32:b0:7f:69:69:f3:0e:c0: + 34:87:10:03:7d:da:15:8b:bd:19:b8:1a:56:31:e7:85:49:81: + c9:7f:45:20:74:3e:89:c0:e0:26:84:51:cc:04:16:ce:69:99: + 01:e1:26:99:b3:e3:f5:bd:ec:5f:a0:84:e4:38:da:75:78:7b: + 89:9c:d2:cd:60:95:20:ba:8e:e3:7c:e6:df:76:3a:7c:89:77: + 02:94:86:11:3a:c4:61:7d:6f:71:83:21:8a:17:fb:17:e2:ee: + 02:6b:61:c1:b4:52:63:d7:d8:46:b2:c5:9c:6f:38:91:8a:35: + 32:0b -----BEGIN CERTIFICATE----- -MIICfzCCAeigAwIBAgIBAzANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJTRTEQ -MA4GA1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlT -UUwgQUIwHhcNMDkwMTI4MTEwNDM5WhcNMTAwMTI4MTEwNDM5WjBlMQswCQYDVQQG -EwJTRTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIxMTAvBgkq -hkiG9w0BCQEWImFic3RyYWN0Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb20wXDAN -BgkqhkiG9w0BAQEFAANLADBIAkEA4VIwLNm+ZCiRXXr92ekUNXrSlE6RRuDbn2t5 -9EysbgdhNIZ0YqeoRK/6h4eofUJh/6tQ1Hu/dfrV1bN0+1YeNwIDAQABo4GjMIGg -MAkGA1UdEwQCMAAwHQYDVR0OBBYEFFgwtZssBZQGuj088LLNHWdl43+FMHQGA1Ud -IwRtMGuAFPLi6lVlpJrirJ2X9UVs9veMEa3foUikRjBEMQswCQYDVQQGEwJTRTEQ -MA4GA1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlT -UUwgQUKCCQCV6Xj1NFDk1TANBgkqhkiG9w0BAQUFAAOBgQAFGeMTFPzFKL9p+ACz -Jcu9yp8vTLOoBBHwdCe9giy0SZunWfD3h9Hgupmi/ksdEG/korPNf4toMUbuzZ7i -R+FM+nTR4ovMoEuoJNGkw2sqxijNQeAGSObP8jzKN5XXKWRrkZGD56zIC4e82qaq -8URDyHR7FSaRLgPEcVBs+GjcjA== +MIIB5zCCAVACAxAAATANBgkqhkiG9w0BAQQFADBEMQswCQYDVQQGEwJTRTEQMA4G +A1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwg +QUIwHhcNMTAwMTI5MTE1MDIyWhcNMTUwMTI4MTE1MDIyWjAyMQswCQYDVQQGEwJT +RTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIwgZ8wDQYJKoZI +hvcNAQEBBQADgY0AMIGJAoGBAMyaN0kTZtzP4wsToSPteNtOvRH2jA12+aMyVpr4 +oSFqVU5NP+ZnnSaZss2kmtIrWVzXitNgaPgYvcW+FeEqPKPUYcv1EZQXgYH3h4z2 +atLu2OZ39mJmTS4WjQiBSsnGSzHluceKhJZIp0eMDSaQVk7mpW6Ms/Kf/D14m0lu +hoN3AgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAXh+jU18kExz4KDKwf2lp8w7ANIcQ +A33aFYu9GbgaVjHnhUmByX9FIHQ+icDgJoRRzAQWzmmZAeEmmbPj9b3sX6CE5Dja +dXh7iZzSzWCVILqO43zm33Y6fIl3ApSGETrEYX1vcYMhihf7F+LuAmthwbRSY9fY +RrLFnG84kYo1Mgs= -----END CERTIFICATE----- diff --git a/mysql-test/std_data/client-key.pem b/mysql-test/std_data/client-key.pem index 9ef464d0875..205b5f31cb9 100644 --- a/mysql-test/std_data/client-key.pem +++ b/mysql-test/std_data/client-key.pem @@ -1,9 +1,15 @@ -----BEGIN RSA PRIVATE KEY----- -MIIBOQIBAAJBAOFSMCzZvmQokV16/dnpFDV60pROkUbg259refRMrG4HYTSGdGKn -qESv+oeHqH1CYf+rUNR7v3X61dWzdPtWHjcCAwEAAQJAXYooM8ZlcuEgj+VKU1ee -qyEFIMqJJxqcMk+E/nWCM96WxCP3zHNSrqNfSpI3ld7QzMwhdRz+gFLxT2gGNpIw -MQIhAPxzM/lDihe67X3ADYtDl9ZjA8Pm430x9sXlcxI17tCZAiEA5H1SyFl4mUee -9VnfSC2XGW7lwz72ZygfVX+b7tLWF08CIEh40gzW5MfXM+KLxdea+fXjyursV5ZT -R6KcMiKiNQLRAiAcmHqlzFzFgisotai2Fc6VRkXHG7gmzOSvBJt1VjmpDQIge6jf -2N7whTdvC4ferB+zUlgWQdyvx1c3T4gnt6PYdaY= +MIICXQIBAAKBgQDMmjdJE2bcz+MLE6Ej7XjbTr0R9owNdvmjMlaa+KEhalVOTT/m +Z50mmbLNpJrSK1lc14rTYGj4GL3FvhXhKjyj1GHL9RGUF4GB94eM9mrS7tjmd/Zi +Zk0uFo0IgUrJxksx5bnHioSWSKdHjA0mkFZO5qVujLPyn/w9eJtJboaDdwIDAQAB +AoGASqk/4We2En+93y3jkIO4pXafIe3w/3zZ7caRue1ehx4RUQh5d+95djuB9u7J +HEZ7TpjM7QNyao5EueL6gvbxt0LXFvqAMni7yM9tt/HUYtHHPqYiRtUny9bKYFTm +l8szCCMal/wD9GZU9ByHDNHm7tHUMyMhARNTYSgx+SERFmECQQD/6jJocC4SXf6f +T3LqimWR02lbJ7qCoDgRglsUXh0zjrG+IIiAyE+QOCCx1GMe3Uw6bsIuYwdHT6as +WcdPs04xAkEAzKulvEvLVvN5zfa/DTYRTV7jh6aDleOxjsD5oN/oJXoACnPzVuUL +qQQMNtuAXm6Q1QItrRxpQsSKbY0UQka6JwJBAOSgoNoG5lIIYTKIMvzwGV+XBLeo +HYsXgh+6Wo4uql3mLErUG78ZtWL9kc/tE4R+ZdyKGLaCR/1gXmH5bwN4B/ECQEBb +uUH8k3REG4kojesZlVc+/00ojzgS4UKCa/yqa9VdB6ZBz8MDQydinnShkTwgiGpy +xOoqhO753o2UT0qH8wECQQC99IEJWUnwvExVMkLaZH5NjAFJkb22sjkmuT11tAgU +RQgOMoDOm6driojnOnDWOkx1r1Gy9NgMLooduja4v6cx -----END RSA PRIVATE KEY----- diff --git a/mysql-test/std_data/server-cert.pem b/mysql-test/std_data/server-cert.pem index cab54db8b23..5922fe7ded7 100644 --- a/mysql-test/std_data/server-cert.pem +++ b/mysql-test/std_data/server-cert.pem @@ -1,55 +1,41 @@ Certificate: Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: sha1WithRSAEncryption + Version: 1 (0x0) + Serial Number: 1048578 (0x100002) + Signature Algorithm: md5WithRSAEncryption Issuer: C=SE, ST=Uppsala, L=Uppsala, O=MySQL AB Validity - Not Before: Jan 28 10:55:13 2009 GMT - Not After : Jan 28 10:55:13 2010 GMT - Subject: C=SE, ST=Uppsala, O=MySQL AB, CN=localhost/emailAddress=abstract.mysql.developer@mysql.com + Not Before: Jan 29 11:56:49 2010 GMT + Not After : Jan 28 11:56:49 2015 GMT + Subject: C=SE, ST=Uppsala, O=MySQL AB, CN=localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (512 bit) - Modulus (512 bit): - 00:b6:8f:e5:b7:b4:86:83:13:8a:f9:bf:63:cb:64: - 2d:b9:51:d1:de:ab:7b:45:1f:aa:b5:66:73:13:f9: - a6:07:d5:ba:7c:fa:92:bd:37:e2:ad:87:db:3e:b6: - 6a:12:64:f8:ee:17:e3:15:06:2f:a8:82:68:bf:57: - 8d:c3:04:98:27 + Public-Key: (512 bit) + Modulus: + 00:cd:e4:87:51:9d:72:11:a0:d1:fa:f3:92:8b:13: + 1c:eb:f7:e2:9a:2f:72:a8:d6:65:48:d1:69:af:1b: + c0:4c:13:e5:60:60:51:41:e9:ab:a6:bc:13:bb:0c: + 5e:32:7c:d9:6c:9e:cd:05:24:84:78:db:80:91:2e: + d8:88:2b:c2:ed Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - X509v3 Subject Key Identifier: - D9:9A:B8:5F:22:EA:04:10:C8:25:7D:82:57:E6:2E:FD:19:29:E7:DA - X509v3 Authority Key Identifier: - keyid:F2:E2:EA:55:65:A4:9A:E2:AC:9D:97:F5:45:6C:F6:F7:8C:11:AD:DF - DirName:/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB - serial:95:E9:78:F5:34:50:E4:D5 - - Signature Algorithm: sha1WithRSAEncryption - 54:07:2d:21:0b:a5:af:3b:58:23:32:5e:56:7f:ab:58:63:48: - 91:aa:38:90:89:16:f9:cc:bf:a4:0e:78:2b:9f:c5:1b:58:a6: - e6:08:8f:2e:ae:97:03:21:9b:f1:cd:c0:26:8f:1d:d7:28:27: - a0:8e:81:09:1b:1c:0f:c9:a5:41:3a:2d:44:3f:9c:fa:87:ff: - c8:4c:2b:44:f7:1b:c1:3e:4f:01:7f:e9:26:cc:9f:1c:06:b5: - 0b:27:d1:10:90:be:93:0c:9c:e7:b0:d1:ea:27:99:4e:06:14: - 0c:7a:e9:c1:52:c5:33:68:bc:61:0d:db:81:3b:57:48:57:bf: - 42:9a + Signature Algorithm: md5WithRSAEncryption + 73:ce:9c:6e:39:46:b4:14:be:da:3f:f3:1b:ba:90:bc:23:43: + d7:82:2a:70:4e:a6:d9:5a:65:5c:b7:df:71:df:75:77:c5:80: + a4:af:fa:d2:59:e2:fd:c9:9c:f0:98:95:8e:69:a9:8c:7c:d8: + 6f:48:d2:e3:36:e0:cd:ff:3f:d1:a5:e6:ab:75:09:c4:50:10: + c4:96:dd:bf:3b:de:32:46:da:ca:4a:f1:d6:52:8a:33:2f:ab: + f5:2e:70:3f:d4:9c:be:00:c8:03:f9:39:8a:df:5b:70:3c:40: + ef:03:be:7c:3d:1d:32:32:f3:51:81:e2:83:30:6e:3d:38:9b: + fb:3c -----BEGIN CERTIFICATE----- -MIICkzCCAfygAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJTRTEQ -MA4GA1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlT -UUwgQUIwHhcNMDkwMTI4MTA1NTEzWhcNMTAwMTI4MTA1NTEzWjB5MQswCQYDVQQG -EwJTRTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIxEjAQBgNV -BAMTCWxvY2FsaG9zdDExMC8GCSqGSIb3DQEJARYiYWJzdHJhY3QubXlzcWwuZGV2 -ZWxvcGVyQG15c3FsLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQC2j+W3tIaD -E4r5v2PLZC25UdHeq3tFH6q1ZnMT+aYH1bp8+pK9N+Kth9s+tmoSZPjuF+MVBi+o -gmi/V43DBJgnAgMBAAGjgaMwgaAwCQYDVR0TBAIwADAdBgNVHQ4EFgQU2Zq4XyLq -BBDIJX2CV+Yu/Rkp59owdAYDVR0jBG0wa4AU8uLqVWWkmuKsnZf1RWz294wRrd+h -SKRGMEQxCzAJBgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMRAwDgYDVQQHEwdV -cHBzYWxhMREwDwYDVQQKEwhNeVNRTCBBQoIJAJXpePU0UOTVMA0GCSqGSIb3DQEB -BQUAA4GBAFQHLSELpa87WCMyXlZ/q1hjSJGqOJCJFvnMv6QOeCufxRtYpuYIjy6u -lwMhm/HNwCaPHdcoJ6COgQkbHA/JpUE6LUQ/nPqH/8hMK0T3G8E+TwF/6SbMnxwG -tQsn0RCQvpMMnOew0eonmU4GFAx66cFSxTNovGEN24E7V0hXv0Ka +MIIBtzCCASACAxAAAjANBgkqhkiG9w0BAQQFADBEMQswCQYDVQQGEwJTRTEQMA4G +A1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwg +QUIwHhcNMTAwMTI5MTE1NjQ5WhcNMTUwMTI4MTE1NjQ5WjBGMQswCQYDVQQGEwJT +RTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIxEjAQBgNVBAMT +CWxvY2FsaG9zdDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDN5IdRnXIRoNH685KL +Exzr9+KaL3Ko1mVI0WmvG8BME+VgYFFB6aumvBO7DF4yfNlsns0FJIR424CRLtiI +K8LtAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAc86cbjlGtBS+2j/zG7qQvCND14Iq +cE6m2VplXLffcd91d8WApK/60lni/cmc8JiVjmmpjHzYb0jS4zbgzf8/0aXmq3UJ +xFAQxJbdvzveMkbaykrx1lKKMy+r9S5wP9ScvgDIA/k5it9bcDxA7wO+fD0dMjLz +UYHigzBuPTib+zw= -----END CERTIFICATE----- diff --git a/mysql-test/std_data/server-key.pem b/mysql-test/std_data/server-key.pem index 0d8274b77f6..1083495cb96 100644 --- a/mysql-test/std_data/server-key.pem +++ b/mysql-test/std_data/server-key.pem @@ -1,9 +1,9 @@ -----BEGIN RSA PRIVATE KEY----- -MIIBOQIBAAJBALaP5be0hoMTivm/Y8tkLblR0d6re0UfqrVmcxP5pgfVunz6kr03 -4q2H2z62ahJk+O4X4xUGL6iCaL9XjcMEmCcCAwEAAQJASA5VwgNb0CKHiPm0ntOk -hG+54SRX3DmafEy6gRjZIl/bZ/asSLhXUZ+CeohyrQh7BZgYWvykd8pRISL9eKsU -GQIhAOXkUrOtP/EtjyqNluEqZdG+RZi/7p61JS3Ce13Myu+LAiEAy0uMlV34AJpM -b40FPKqlHxw8DD/Dt1iKhNVAg8+LDVUCIFjv7fbJDbW2VG63/Cj8CAwOukoP5rbL -iaicVrHBKrllAiB9+MiaXeopZXNrxDS0jQFYr8Q9yt1aJVFgUkxx4Q9HKQIgZPs0 -KlF3NNNWw78INaAEkyf0IEssnLMsuoCWw0DIOak= +MIIBOwIBAAJBAM3kh1GdchGg0frzkosTHOv34povcqjWZUjRaa8bwEwT5WBgUUHp +q6a8E7sMXjJ82WyezQUkhHjbgJEu2Igrwu0CAwEAAQJBAJuwhFbF3NzRpBbEmnqJ +4GPa1UJMQMLFJF+04tqj/HxJcAIVhOJhGmmtYNw1yjz/ZsPnfJCMz4eFOtdjvGtf +peECIQDmFFg2WLvYo+2m9w9V7z4ZIkg7ixYkI/ObUUctfZkPOQIhAOUWnrvjFrAX +bIvYT/YR50+3ZDLEc51XxNgJnWqWYl1VAiEAnTOFWgyivFC1DgF8PvDp8u5TgCt2 +A1d1GMgd490O+TECIC/WMl0/hTxOF9930vKqOGf//o9PUGkZq8QE9fcM4gtlAiAE +iOcFpnLjtWj57jrhuw214ucnB5rklkQQe+AtcARNkg== -----END RSA PRIVATE KEY----- diff --git a/mysql-test/std_data/server8k-cert.pem b/mysql-test/std_data/server8k-cert.pem index 3b86effd699..06e118cf034 100644 --- a/mysql-test/std_data/server8k-cert.pem +++ b/mysql-test/std_data/server8k-cert.pem @@ -1,138 +1,125 @@ Certificate: Data: - Version: 3 (0x2) - Serial Number: 4 (0x4) - Signature Algorithm: sha1WithRSAEncryption + Version: 1 (0x0) + Serial Number: 1048579 (0x100003) + Signature Algorithm: md5WithRSAEncryption Issuer: C=SE, ST=Uppsala, L=Uppsala, O=MySQL AB Validity - Not Before: Jan 28 11:12:27 2009 GMT - Not After : Jan 28 11:12:27 2010 GMT + Not Before: Jan 29 12:01:53 2010 GMT + Not After : Jan 28 12:01:53 2015 GMT Subject: C=SE, ST=Uppsala, O=MySQL AB, CN=server Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (8192 bit) - Modulus (8192 bit): - 00:c0:8f:22:03:24:59:67:46:14:d6:8f:60:09:58: - 06:07:45:f1:78:71:55:f1:ea:b9:30:8a:cd:c3:3c: - b9:bf:65:6e:18:ed:a0:b8:c9:19:56:6f:c4:90:19: - c8:65:09:db:ff:bf:82:a1:08:ad:01:4f:5a:a3:d4: - 3d:78:7e:4b:4a:01:a4:7d:e8:7b:05:3e:7d:d8:b9: - 55:58:60:d6:1c:ce:e8:32:62:2c:19:60:f3:ed:05: - 99:6d:c9:77:07:2e:11:6d:0b:9a:c7:68:38:46:e8: - fa:31:80:df:e8:79:f0:f1:fd:a9:94:c3:fa:0d:f5: - 78:ac:49:7e:d5:17:fd:e1:ee:44:f3:c7:0e:30:32: - 5d:a9:19:25:e4:bb:21:1d:fe:3c:84:48:40:f5:58: - f4:bf:13:8c:85:68:bb:ec:f5:dd:c6:38:d1:b0:77: - 1f:a6:8e:4f:8d:e2:6f:49:74:f5:3f:90:65:8e:99: - 1e:59:9c:1c:b5:26:24:c4:b1:de:1e:fb:96:65:c4: - 31:14:1a:53:b8:5e:62:8a:c7:04:f7:b4:36:a4:af: - 07:c8:27:06:ed:dd:e6:f4:8c:62:f1:65:40:d0:9f: - 9f:a9:14:c8:8e:8b:74:d6:67:5a:d0:c9:4d:35:a1: - d5:7b:39:3a:42:9f:e4:d0:f4:c6:0f:2e:42:30:4b: - 56:b2:3d:6d:8e:2d:58:c5:69:99:35:49:95:95:99: - b6:87:29:2b:32:d1:50:08:cd:25:14:48:6d:10:99: - 85:61:3c:41:26:21:55:cc:1f:cf:ad:b0:2f:b9:89: - d8:4e:a0:18:ff:75:1d:b6:97:7c:c5:fa:8b:dc:93: - 17:86:0a:64:d4:09:35:d5:83:34:6d:5c:6d:c6:8c: - cd:b9:ec:c2:93:c6:c1:b7:cc:04:6f:22:e0:07:bf: - e0:d9:9b:2f:d5:a0:50:cc:f9:f0:95:83:8f:f4:30: - 83:72:94:d7:b5:4b:da:cc:9f:54:3b:8d:78:77:0b: - 24:6c:0f:c2:96:61:96:2f:b8:5f:b5:7a:ab:7a:5b: - 97:7a:a9:ad:40:8b:f2:d6:c6:8d:81:d9:94:61:8f: - 9d:03:c5:b9:10:03:68:83:bf:04:81:cc:ac:bd:34: - 89:e8:d4:8d:43:20:e2:b6:a4:11:3d:15:2a:82:0c: - d6:3a:6a:8c:62:d4:93:bc:c3:80:bf:1b:b4:2b:0a: - 7a:34:f0:cd:1e:82:3f:25:0f:d1:04:a8:0a:05:19: - b0:d6:16:83:39:af:0b:45:7d:cb:14:7e:4d:aa:aa: - c2:39:a8:46:38:ab:bd:ab:2a:bd:34:43:7f:da:25: - de:2b:fb:69:3b:fe:3b:87:fd:98:94:76:4a:bf:04: - a3:31:e3:3a:ff:6f:04:fa:fa:24:e4:2a:89:e9:0e: - bf:44:4c:72:85:82:3c:89:4a:03:63:01:41:92:53: - d0:82:60:6e:d8:ff:8c:a2:b4:1a:3b:20:6d:ae:74: - 92:30:4e:48:e3:51:a6:cb:73:97:06:13:03:32:23: - 9b:7d:a2:c7:3a:a9:af:97:8c:51:ed:fe:fa:b4:b4: - 1a:a3:87:fc:cf:8c:8e:e6:80:15:03:fd:fe:7d:bd: - b1:76:f1:5f:b3:09:2b:4c:4d:a7:7c:b5:72:b1:d6: - db:38:c0:67:a4:54:bc:87:09:a5:39:ba:1a:7e:3f: - 74:60:ad:3d:4b:be:94:53:f3:64:16:c7:33:35:ec: - 41:00:95:b6:de:99:62:a2:7a:28:9a:45:4d:fa:cd: - a6:77:f6:de:58:72:50:c8:7d:69:38:db:07:04:84: - d8:4d:39:f7:50:13:43:ae:2d:af:45:a4:2a:39:56: - 3c:b8:b7:d8:26:a4:36:c9:23:aa:aa:b8:49:0b:21: - ba:9e:7a:2b:7f:4d:29:9f:0e:00:1e:b4:5e:a6:fa: - 49:fe:8d:e5:74:57:d8:ba:d9:92:2c:d2:ac:84:1d: - f2:a6:a4:44:1c:bf:88:41:32:7e:d1:c3:2f:6e:bc: - 0f:5d:19:a6:8f:74:2b:67:ba:dd:a9:db:68:b5:ce: - 9d:25:48:df:54:08:d0:1d:4f:2e:5b:24:bc:05:0f: - fb:58:46:fa:02:ca:53:93:29:cf:10:27:c2:a0:18: - d0:f5:d4:b9:3c:5e:df:8e:6c:f5:7c:b9:b4:54:cc: - 39:16:5d:3c:da:96:b3:c3:6c:d4:70:5d:d3:30:a7: - a6:bd:6f:dd:41:bc:a8:de:42:60:59:9a:85:25:0d: - 2a:45:c3:05:b4:6e:7a:4a:4d:ca:8c:0a:e5:6c:34: - bc:20:9b:6d:4a:ca:ca:b6:a6:3a:a0:db:c3:0e:20: - 1a:12:1b:77:dd:cb:1d:7f:c3:0d:0d:e7:c1:fd:96: - d2:c7:68:80:99:a0:d9:8a:33:21:a3:8b:a2:5a:a7: - 7e:27:06:02:7f:ed:60:11:37:34:54:17:7f:4d:90: - 14:1e:69:37:0d:ba:f0:2b:f0:a3:2d:62:79:c8:76: - a8:ea:c8:e7:3b:1f:c6:4f:c2:0c:d7:ac:f0:77:53: - 5d:f0:50:b4:df:9b:03:ca:4d:41:e1:18:b2:25:30: - 86:1d:63:e5:67:b1:53:cd:6b:4e:83:1a:b9:5e:2d: - 05:15:6b:d4:8e:b1:97:fc:31:03:57:cb:bf:27:7f: - cd:5f:27:7e:66:e7:3c:17:09:b6:11:2a:4f:33:cd: - eb:1a:d3:6f:d5:15:8b:8b:ce:68:6b:7e:9a:95:e5: - 74:7f:17:57:d9 + Public-Key: (8192 bit) + Modulus: + 00:ca:aa:1d:c4:11:ec:91:f0:c7:ff:5f:90:92:fc: + 40:0c:5e:b7:3d:00:c5:20:d5:0f:89:31:07:d7:41: + 4c:8b:60:80:aa:38:14:de:93:6b:9c:74:88:41:68: + b5:02:41:01:2d:86:a2:7a:95:53:5e:7b:67:2f:6c: + 1e:29:51:f9:44:fd:4a:80:be:b2:23:a1:3e:1b:38: + cf:88:c4:71:ee:f8:6b:41:c5:2d:c0:c3:52:ac:59: + 7d:81:34:19:95:32:b8:9a:51:b6:41:36:d4:c4:a1: + ae:84:e6:38:b9:e8:bf:96:be:19:7a:6b:77:4d:e0: + de:e6:b3:b6:6b:bc:3d:dd:68:bc:4b:c4:eb:f5:36: + 93:ed:56:a2:15:50:8a:10:e8:d6:22:ed:6c:b1:cd: + c3:18:c9:f6:0a:e1:de:61:65:62:d6:14:41:8c:b5: + fb:14:68:c1:cf:12:5d:41:21:9d:57:11:43:7d:bb: + 43:2c:21:bb:c3:44:7d:a8:cf:1f:c3:71:75:b5:47: + c2:7d:ce:38:3c:73:64:9e:15:d8:a7:27:cf:bd:40: + c8:45:08:e3:c8:39:a8:0b:8e:c2:5b:7b:f1:47:91: + 12:91:cc:e1:00:e0:94:5b:bd:32:e4:0c:8d:c3:be: + cc:76:32:52:12:69:b0:18:e0:b0:c2:76:34:5a:5f: + 79:d9:f6:81:9d:02:0a:61:69:1c:33:ce:49:fa:76: + 03:1e:07:5b:27:0b:bf:34:9e:34:96:b8:03:9b:50: + 3a:6a:2f:17:7a:14:cf:65:63:00:37:52:a8:73:ce: + 4b:14:40:f4:d2:9a:56:54:33:b8:77:2e:42:5b:8f: + ec:1f:18:f4:ad:ab:8a:4a:8d:6d:70:25:f3:58:e7: + cb:66:51:14:7d:16:f4:eb:6d:56:76:76:51:6e:d6: + 1d:da:d3:8d:c0:64:5a:67:4e:af:e2:bf:33:d1:b8: + f6:2a:fc:57:87:a7:35:5e:80:c9:ac:fc:87:c9:71: + 17:91:bf:b7:4d:a3:ed:3c:1b:27:f4:66:a0:f9:46: + 03:27:cc:ea:80:f6:4b:40:f6:41:94:cd:bd:0a:b3: + ef:26:be:de:6f:69:ae:0f:3f:1c:55:63:33:90:9b: + ed:ca:5a:12:4d:de:4b:06:c2:a2:92:b0:42:3d:31: + af:a4:15:12:15:f8:8a:e9:88:8d:cf:fd:85:66:50: + 6f:11:f1:9f:48:f3:b5:ba:9d:86:68:24:a2:5d:a8: + 7c:54:42:fa:d8:b5:c5:f2:dd:0e:0f:d0:68:e4:54: + 7e:c5:b9:a0:9b:65:2d:77:f4:8f:b9:30:0a:d5:86: + 5c:ed:c9:7c:d1:da:9d:0d:63:50:ee:e5:1e:92:63: + cc:a2:0c:e8:4a:96:02:4d:dc:8f:df:7c:8f:08:18: + a8:30:88:d7:af:89:ad:fc:57:4b:10:f9:f1:cb:48: + e8:b6:3b:c8:3f:fc:c2:d3:d1:4a:10:3c:1b:6b:64: + dc:e5:65:1e:5b:b2:da:b1:e2:24:97:8f:ee:c0:4b: + 8e:18:83:7c:17:a6:3c:45:b3:60:06:23:f2:2f:18: + 13:9e:17:8a:c6:72:79:8c:4d:04:f3:9d:ea:e0:25: + d3:33:8c:1e:11:47:63:1f:a5:45:3f:bd:85:b3:fe: + a5:68:ee:48:b7:0c:a4:c9:7f:72:d0:75:66:9b:6a: + f9:a0:50:f3:a8:59:6d:a3:dd:38:4f:70:2b:bb:ff: + 92:2e:71:ab:ef:e9:00:ed:0d:d1:b4:6f:f0:8e:b2: + 09:fb:4d:61:0d:d9:10:d5:54:11:cd:03:94:84:fd: + a8:68:e4:45:6e:1e:6a:1e:2f:85:a1:6d:f5:b6:c0: + f1:ee:f7:36:e9:fe:c2:f7:ad:cc:13:46:5b:88:42: + f0:2d:1f:b5:0e:7e:b5:2b:e4:8d:ab:b9:87:30:6a: + 3d:12:f4:ad:f3:1c:ac:cc:1a:48:29:2a:96:7b:80: + 00:0b:6e:59:87:bf:a3:ca:70:99:1b:1c:fd:72:3d: + b2:d3:94:4a:cf:55:75:be:1f:40:ec:55:35:48:2d: + 55:f0:00:da:3c:b0:60:ba:11:32:66:54:0b:be:06: + a4:5e:b7:c9:59:bb:4d:f4:92:06:26:48:6e:c2:12: + d4:7c:f0:20:b8:a2:e1:bc:6a:b6:19:0e:37:47:55: + c9:f2:49:0d:96:75:a2:84:64:bf:34:fc:be:b2:41: + e4:f5:88:eb:e1:b7:26:a5:e5:41:c2:20:0c:f6:e2: + a8:a5:e7:76:54:a5:fb:4b:80:05:7d:18:85:7a:ba: + bc:b7:ad:c0:2f:60:85:cc:15:12:1c:2f:0a:9e:f3: + 7c:40:cf:f4:3e:23:d2:95:ca:d0:06:58:52:f0:84: + d8:0f:3d:eb:ff:12:68:94:79:8f:be:40:29:5f:98: + c8:90:6c:05:2f:99:8c:2a:63:78:1f:23:b1:29:c5: + e7:49:c9:b2:92:0f:53:0b:d5:71:28:17:c2:19:bf: + 60:bf:7c:87:a8:ab:c1:f4:0a:c1:b8:d2:68:ee:c1: + ce:a7:13:13:17:6d:24:5d:a2:37:a6:d7:7d:48:8b: + 2b:74:2d:40:2e:ca:19:d5:b6:3e:6c:42:71:fa:cf: + 85:87:f9:de:80:73:8b:89:f4:70:f0:d8:d7:ff:40: + 41:9c:c7:15:6d:9b:6e:4c:b5:52:02:99:79:32:73: + ca:26:a0:ac:31:6f:c4:b0:f5:da:bb:c2:1f:e0:9f: + 44:ba:25:f7:9f Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - X509v3 Subject Key Identifier: - 58:12:24:59:A7:3C:29:15:89:5A:C2:12:DB:E7:A5:42:10:21:B7:BA - X509v3 Authority Key Identifier: - keyid:F2:E2:EA:55:65:A4:9A:E2:AC:9D:97:F5:45:6C:F6:F7:8C:11:AD:DF - DirName:/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB - serial:95:E9:78:F5:34:50:E4:D5 - - Signature Algorithm: sha1WithRSAEncryption - cd:cb:5c:83:35:ea:cb:cb:c3:a8:c3:95:e2:e6:6f:4d:d8:e4: - ee:41:dd:3f:35:82:ac:2f:fd:63:89:4f:3a:19:d7:81:75:b3: - a3:fc:36:b2:12:d5:c6:56:bc:13:60:37:33:6e:a0:d8:ae:7c: - 88:f9:4b:ee:7b:1f:c8:f0:56:19:07:4d:bb:45:52:1c:78:81: - 07:7c:13:86:b8:86:70:85:e4:71:25:58:78:d1:be:de:22:82: - 6d:1a:4b:06:ac:f0:e8:50:87:c7:69:64:c2:61:43:cd:96:06: - a6:7e:09:a9:02:01:2a:a2:40:f3:cd:10:80:48:d0:34:55:40: - b9:ce + Signature Algorithm: md5WithRSAEncryption + 08:75:dc:b9:3f:aa:b6:7e:81:7a:39:d1:ee:ed:44:b6:ce:1b: + 37:c4:4c:19:d0:66:e6:eb:b5:4f:2a:ef:95:58:64:21:55:01: + 12:30:ac:8a:95:d1:06:de:29:46:a4:f1:7d:7f:b0:1e:d2:4e: + fb:f6:fa:9a:74:be:85:62:db:0b:82:90:58:62:c5:5f:f1:80: + 02:9f:c5:fb:f3:6b:b0:b4:3b:04:b1:e5:53:c2:d0:00:a1:1a: + 9d:65:60:6f:73:98:67:e0:9c:c8:12:94:79:59:bf:43:7b:f5: + 77:c8:8f:df:b1:cd:11:1c:01:19:99:c2:22:42:f7:41:ae:b4: + b8:1a -----BEGIN CERTIFICATE----- -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 +sc0RHAEZmcIiQvdBrrS4Gg== -----END CERTIFICATE----- diff --git a/mysql-test/std_data/server8k-key.pem b/mysql-test/std_data/server8k-key.pem index 493ad2350c8..faf4b43fa56 100644 --- a/mysql-test/std_data/server8k-key.pem +++ b/mysql-test/std_data/server8k-key.pem @@ -1,99 +1,99 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/mysql-test/suite/rpl/r/rpl_binlog_grant.result b/mysql-test/suite/rpl/r/rpl_binlog_grant.result index 2a7e4401500..adf2175f3bb 100644 --- a/mysql-test/suite/rpl/r/rpl_binlog_grant.result +++ b/mysql-test/suite/rpl/r/rpl_binlog_grant.result @@ -25,7 +25,7 @@ master-bin.000001 # Query # # use `d1`; create table t (s1 int) engine=innodb master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `d1`; insert into t values (1) master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `d1`; grant select on t to x@y +master-bin.000001 # Query # # use `d1`; grant select on t to 'x'@'y' start transaction; insert into t values (2); revoke select on t from x@y; @@ -45,10 +45,10 @@ master-bin.000001 # Query # # use `d1`; create table t (s1 int) engine=innodb master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `d1`; insert into t values (1) master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `d1`; grant select on t to x@y +master-bin.000001 # Query # # use `d1`; grant select on t to 'x'@'y' master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `d1`; insert into t values (2) master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `d1`; revoke select on t from x@y +master-bin.000001 # Query # # use `d1`; revoke select on t from 'x'@'y' drop user x@y; drop database d1; diff --git a/mysql-test/suite/rpl/r/rpl_events.result b/mysql-test/suite/rpl/r/rpl_events.result index 11ebb760e86..1dede599071 100644 --- a/mysql-test/suite/rpl/r/rpl_events.result +++ b/mysql-test/suite/rpl/r/rpl_events.result @@ -161,3 +161,45 @@ DROP EVENT event44331_1; DROP EVENT event44331_2; DROP EVENT event44331_3; DROP EVENT event44331_4; +DROP VIEW IF EXISTS events_view; +DROP EVENT IF EXISTS event48321_1; +DROP EVENT IF EXISTS event48321_2; +DROP EVENT IF EXISTS event48321_3; +DROP EVENT IF EXISTS event48321_4; +CREATE VIEW events_view AS +SELECT EVENT_SCHEMA, EVENT_NAME, DEFINER FROM INFORMATION_SCHEMA.EVENTS +WHERE EVENT_NAME LIKE 'event48321%'; +CREATE DEFINER=CURRENT_USER() /*!50000 EVENT event48321_1 */ +ON SCHEDULE AT CURRENT_TIMESTAMP +ON COMPLETION PRESERVE DISABLE +DO SELECT 48321 as BUG; +CREATE DEFINER=CURRENT_USER() EVENT event48321_2 +ON SCHEDULE AT CURRENT_TIMESTAMP +ON COMPLETION PRESERVE DISABLE +DO SELECT 48321 as BUG; +CREATE /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3 +ON SCHEDULE AT CURRENT_TIMESTAMP +ON COMPLETION PRESERVE DISABLE +DO SELECT 48321 as BUG; +Comparing tables master:test.events_view and slave:test.events_view +ALTER DEFINER=CURRENT_USER() EVENT event48321_1 RENAME TO event48321_4; +ALTER DEFINER=CURRENT_USER() EVENT event48321_2 +ON SCHEDULE AT CURRENT_TIMESTAMP +ON COMPLETION PRESERVE DISABLE +DO SELECT 48321 as BUG; +ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3 +ON SCHEDULE AT CURRENT_TIMESTAMP +ON COMPLETION PRESERVE DISABLE +DO SELECT 48321 as BUG; +Comparing tables master:test.events_view and slave:test.events_view +ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3 +ON SCHEDULE AT CURRENT_TIMESTAMP +ON COMPLETION PRESERVE DISABLE +DO SELECT 48321 as BUG; ALTER EVENT event48321_2 ENABLE | +Comparing tables master:test.events_view and slave:test.events_view +ALTER EVENT event48321_3 ENABLE; +Comparing tables master:test.events_view and slave:test.events_view +DROP EVENT event48321_4; +DROP EVENT event48321_2; +DROP EVENT event48321_3; +DROP VIEW events_view; diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result index 88fe7bce4f6..2120a730b7d 100644 --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result @@ -750,7 +750,7 @@ test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 lat USE test_rpl; SHOW EVENTS; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -test_rpl e2 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci ==========MASTER========== SELECT COUNT(*) FROM t1; COUNT(*) @@ -1077,7 +1077,7 @@ master-bin.000001 # Query 1 # BEGIN master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') master-bin.000001 # Xid 1 # # master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1 -master-bin.000001 # Query 1 # use `test_rpl`; ALTER EVENT e1 RENAME TO e2 +master-bin.000001 # Query 1 # use `test_rpl`; ALTER DEFINER=`root`@`localhost` EVENT e1 RENAME TO e2 master-bin.000001 # Query 1 # use `test_rpl`; DROP EVENT e2 master-bin.000001 # Query 1 # BEGIN master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 diff --git a/mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result b/mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result index 386274af7b2..318c1104139 100644 --- a/mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result +++ b/mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result @@ -213,7 +213,7 @@ Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (26) master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt' +master-bin.000001 # Query # # use `test`; ALTER DEFINER=`root`@`localhost` EVENT evt COMMENT 'evt' -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b- diff --git a/mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result b/mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result index 077aba8ddb0..c67c05f4974 100644 --- a/mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result +++ b/mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result @@ -233,7 +233,7 @@ master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt' +master-bin.000001 # Query # # use `test`; ALTER DEFINER=`root`@`localhost` EVENT evt COMMENT 'evt' -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b- diff --git a/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result b/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result index 5a3748b50b0..abeb92a7d21 100644 --- a/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result +++ b/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result @@ -129,3 +129,20 @@ use b48297_db1; Comparing tables master:b48297_db1.t1 and slave:b48297_db1.t1 DROP DATABASE b48297_db1; DROP DATABASE b42897_db2; +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +use test; +CREATE TABLE t1 (`key` TEXT, `text` TEXT); +LOAD DATA INFILE '../../std_data/loaddata2.dat' REPLACE INTO TABLE `t1` FIELDS TERMINATED BY ','; +SELECT * FROM t1; +key text +Field A 'Field B' +Field 1 'Field 2' +Field 3 'Field 4' +'Field 5' 'Field 6' +Field 6 'Field 7' +DROP TABLE t1; diff --git a/mysql-test/suite/rpl/r/rpl_sp.result b/mysql-test/suite/rpl/r/rpl_sp.result index 21910302f3a..5f8a2dd127b 100644 --- a/mysql-test/suite/rpl/r/rpl_sp.result +++ b/mysql-test/suite/rpl/r/rpl_sp.result @@ -436,9 +436,9 @@ master-bin.000001 # Query # # use `mysqltest1`; create table t2 like t1 master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`() DETERMINISTIC insert into t1 values (15) -master-bin.000001 # Query # # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1 -master-bin.000001 # Query # # use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1 -master-bin.000001 # Query # # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query # # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to 'zedjzlcsjhd'@'127.0.0.1' +master-bin.000001 # Query # # use `mysqltest1`; grant SELECT on mysqltest1.t1 to 'zedjzlcsjhd'@'127.0.0.1' +master-bin.000001 # Query # # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to 'zedjzlcsjhd'@'127.0.0.1' master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`() DETERMINISTIC begin @@ -551,7 +551,7 @@ select * from t1 master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo master-bin.000001 # Query # # use `mysqltest1`; drop function fn1 master-bin.000001 # Query # # drop database mysqltest1 -master-bin.000001 # Query # # drop user "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query # # DROP USER 'zedjzlcsjhd'@'127.0.0.1' master-bin.000001 # Query # # use `test`; drop function if exists f1 master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) READS SQL DATA @@ -736,13 +736,13 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`() insert into t1 values (15) /*!*/; SET TIMESTAMP=t/*!*/; -grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1 +grant CREATE ROUTINE, EXECUTE on mysqltest1.* to 'zedjzlcsjhd'@'127.0.0.1' /*!*/; SET TIMESTAMP=t/*!*/; -grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1 +grant SELECT on mysqltest1.t1 to 'zedjzlcsjhd'@'127.0.0.1' /*!*/; SET TIMESTAMP=t/*!*/; -grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1 +grant SELECT, INSERT on mysqltest1.t2 to 'zedjzlcsjhd'@'127.0.0.1' /*!*/; SET TIMESTAMP=t/*!*/; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`() @@ -1017,7 +1017,7 @@ SET TIMESTAMP=t/*!*/; drop database mysqltest1 /*!*/; SET TIMESTAMP=t/*!*/; -drop user "zedjzlcsjhd"@127.0.0.1 +DROP USER 'zedjzlcsjhd'@'127.0.0.1' /*!*/; use test/*!*/; SET TIMESTAMP=t/*!*/; diff --git a/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result b/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result index 8e245db6c3c..5ea268556fc 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result +++ b/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result @@ -213,7 +213,7 @@ Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (26) master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt' +master-bin.000001 # Query # # use `test`; ALTER DEFINER=`root`@`localhost` EVENT evt COMMENT 'evt' -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e- -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b- diff --git a/mysql-test/suite/rpl/r/rpl_stm_until.result b/mysql-test/suite/rpl/r/rpl_stm_until.result index 9202bba0edd..b131cbc7e63 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_until.result +++ b/mysql-test/suite/rpl/r/rpl_stm_until.result @@ -248,3 +248,23 @@ one 1 drop table t1; start slave; +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +drop table if exists t1; +Warnings: +Note 1051 Unknown table 't1' +flush logs; +stop slave; +reset slave; +start slave until master_log_file='master-bin.000001', master_log_pos=294 /* to stop right before DROP */; +show tables /* t1 must exist */; +Tables_in_test +t1 +drop table t1; +stop slave; +reset slave; +reset master; diff --git a/mysql-test/suite/rpl/r/rpl_user.result b/mysql-test/suite/rpl/r/rpl_user.result index a98e7e9ca55..b1f1d73cf86 100644 --- a/mysql-test/suite/rpl/r/rpl_user.result +++ b/mysql-test/suite/rpl/r/rpl_user.result @@ -39,7 +39,1754 @@ show binlog events from <binlog_start>; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; create user 'foo'@'fakehost' master-bin.000001 # Query # # use `test`; create user 'foo'@'fakehost', 'bar'@'fakehost' -master-bin.000001 # Query # # use `test`; rename user 'foo'@'fakehost' to 'foofoo'@'fakehost' -master-bin.000001 # Query # # use `test`; rename user 'not_exist_user1'@'fakehost' to 'foobar'@'fakehost', 'bar'@'fakehost' to 'barbar'@'fakehost' -master-bin.000001 # Query # # use `test`; drop user 'foofoo'@'fakehost' -master-bin.000001 # Query # # use `test`; drop user 'not_exist_user1'@'fakehost', 'barbar'@'fakehost' +master-bin.000001 # Query # # use `test`; RENAME USER 'foo'@'fakehost' TO 'foofoo'@'fakehost' +master-bin.000001 # Query # # use `test`; RENAME USER 'not_exist_user1'@'fakehost' TO 'foobar'@'fakehost', 'bar'@'fakehost' TO 'barbar'@'fakehost' +master-bin.000001 # Query # # use `test`; DROP USER 'foofoo'@'fakehost' +master-bin.000001 # Query # # use `test`; DROP USER 'not_exist_user1'@'fakehost', 'barbar'@'fakehost' + + + +TEST STATEMENT: 'RENAME USER $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user FROM mysql.user +WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'RENAME USER $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() TO 'bug48321_4'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +RENAME USER CURRENT_USER() TO 'bug48321_4'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'RENAME USER $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER() TO 'bug48321_4'@'localhost', 'bug48321_2'@'localhost' TO 'bug48321_5'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +RENAME USER CURRENT_USER() TO 'bug48321_4'@'localhost', 'bug48321_2'@'localhost' TO 'bug48321_5'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'RENAME USER $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost' TO 'bug48321_5'@'localhost', CURRENT_USER() TO 'bug48321_4'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +RENAME USER 'bug48321_2'@'localhost' TO 'bug48321_5'@'localhost', CURRENT_USER() TO 'bug48321_4'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'RENAME USER $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost' TO 'bug48321_5'@'localhost', CURRENT_USER() TO 'bug48321_4'@'localhost', 'bug48321_3'@'localhost' TO 'bug48321_6'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +RENAME USER 'bug48321_2'@'localhost' TO 'bug48321_5'@'localhost', CURRENT_USER() TO 'bug48321_4'@'localhost', 'bug48321_3'@'localhost' TO 'bug48321_6'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'RENAME USER $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost' TO 'bug48321_5'@'localhost', 'bug48321_3'@'localhost' TO 'bug48321_6'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +RENAME USER 'bug48321_2'@'localhost' TO 'bug48321_5'@'localhost', 'bug48321_3'@'localhost' TO 'bug48321_6'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'DROP USER $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user FROM mysql.user +WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'DROP USER $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +DROP USER CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'DROP USER $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER(), 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +DROP USER CURRENT_USER(), 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'DROP USER $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +DROP USER 'bug48321_2'@'localhost', CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'DROP USER $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +DROP USER 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'DROP USER $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +DROP USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; +DROP PROCEDURE IF EXISTS f1; +CREATE PROCEDURE p1() SELECT 1; + + + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER(), 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(), 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bug48321_2'@'localhost', CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list /*With comment*/' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list /*With comment*/' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER() /*With comment*/; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list /*With comment*/' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER(), 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(), 'bug48321_2'@'localhost' /*With comment*/; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list /*With comment*/' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bug48321_2'@'localhost', CURRENT_USER() /*With comment*/; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list /*With comment*/' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost' /*With comment*/; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM $users_list /*With comment*/' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' /*With comment*/; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER(), 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ CURRENT_USER(), 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ 'bug48321_2'@'localhost', CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ 'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Select_priv, Update_priv, Create_priv, Drop_priv +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER(), 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM CURRENT_USER(), 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM 'bug48321_2'@'localhost', CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM 'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'REVOKE CREATE ROUTINE ON *.* FROM $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Create_routine_priv +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'REVOKE CREATE ROUTINE ON *.* FROM $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE CREATE ROUTINE ON *.* FROM CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE CREATE ROUTINE ON *.* FROM $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER(), 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE CREATE ROUTINE ON *.* FROM CURRENT_USER(), 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE CREATE ROUTINE ON *.* FROM $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE CREATE ROUTINE ON *.* FROM 'bug48321_2'@'localhost', CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE CREATE ROUTINE ON *.* FROM $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE CREATE ROUTINE ON *.* FROM 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE CREATE ROUTINE ON *.* FROM $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE CREATE ROUTINE ON *.* FROM 'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Routine_name, Proc_priv +FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER(), 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER(), 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM 'bug48321_2'@'localhost', CURRENT_USER(); + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM 'bug48321_2'@'localhost', CURRENT_USER(), 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +# Grant some privileges to users at first when testing +# 'REVOKE ...' statement. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', +'bug48321_3'@'localhost' WITH GRANT OPTION; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost', +'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM 'bug48321_2'@'localhost', 'bug48321_3'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list WITH GRANT OPTION' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv, Password +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list WITH GRANT OPTION' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() IDENTIFIED BY 'user1' WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list WITH GRANT OPTION' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost' WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list WITH GRANT OPTION' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1' WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list WITH GRANT OPTION' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY '' WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list WITH GRANT OPTION' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY '' WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list /* With Comment */ WITH GRANT OPTION' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv, Password +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list /* With Comment */ WITH GRANT OPTION' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() IDENTIFIED BY 'user1' /* With Comment */ WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list /* With Comment */ WITH GRANT OPTION' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost' /* With Comment */ WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list /* With Comment */ WITH GRANT OPTION' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1' /* With Comment */ WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list /* With Comment */ WITH GRANT OPTION' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY '' /* With Comment */ WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALL PRIVILEGES ON *.* TO $users_list /* With Comment */ WITH GRANT OPTION' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY '' /* With Comment */ WITH GRANT OPTION; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Select_priv, Update_priv, Create_priv, Drop_priv, Password +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO CURRENT_USER() IDENTIFIED BY 'user1'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY ''; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY ''; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; + + + +TEST STATEMENT: 'GRANT CREATE ROUTINE ON *.* TO $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Create_routine_priv +FROM mysql.user WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'GRANT CREATE ROUTINE ON *.* TO $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT CREATE ROUTINE ON *.* TO CURRENT_USER() IDENTIFIED BY 'user1'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT CREATE ROUTINE ON *.* TO $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT CREATE ROUTINE ON *.* TO CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT CREATE ROUTINE ON *.* TO $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT CREATE ROUTINE ON *.* TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT CREATE ROUTINE ON *.* TO $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT CREATE ROUTINE ON *.* TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY ''; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT CREATE ROUTINE ON *.* TO $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT CREATE ROUTINE ON *.* TO 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY ''; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; +DROP PROCEDURE p1; + + + +TEST STATEMENT: 'GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO $users_list' +-------------------------------------------------------------------------- +CREATE VIEW test.bug48321_v1 AS SELECT user, Routine_name, Proc_priv +FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; + +TEST STATEMENT: 'GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO $users_list' +CASE 1: +------- +# Only CURRENT_USER() in the user list of the test statement. +users_list= CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER() IDENTIFIED BY 'user1'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO $users_list' +CASE 2: +------- +# Two users are in the test statement, CURRENT_USER is the first one. +users_list= CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_2'@'localhost'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO $users_list' +CASE 3: +------- +# Two users are in the test statement, CURRENT_USER is the last one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1'; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO $users_list' +CASE 4: +------- +# Three users are in the test statement, CURRENT_USER is the second one. +users_list= 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_2'@'localhost', CURRENT_USER() IDENTIFIED BY 'user1', 'bug48321_3'@'localhost' IDENTIFIED BY ''; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; + +TEST STATEMENT: 'GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO $users_list' +CASE 5: +------- +# CURRENT_USER is not in the test statement. +users_list= 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY '' + +# Connect to master with user1, so user1 always is the current user, +# when test statement is runing. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost' + WITH GRANT OPTION; +CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' + IDENTIFIED BY 'user3'; + +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_2'@'localhost', 'bug48321_3'@'localhost' IDENTIFIED BY ''; + +Comparing tables master:test.bug48321_v1 and slave:test.bug48321_v1 + +# Delete all bug48321% users +DELETE FROM mysql.user WHERE user LIKE 'bug48321%'; +DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%'; +FLUSH PRIVILEGES; +DROP VIEW test.bug48321_v1; diff --git a/mysql-test/suite/rpl/t/rpl_binlog_grant.test b/mysql-test/suite/rpl/t/rpl_binlog_grant.test index da14b45d5c3..64f4e8b2eeb 100644 --- a/mysql-test/suite/rpl/t/rpl_binlog_grant.test +++ b/mysql-test/suite/rpl/t/rpl_binlog_grant.test @@ -25,7 +25,7 @@ grant select on t to x@y; # rollback; show grants for x@y; -source include/show_binlog_events.inc; +--source include/show_binlog_events.inc start transaction; insert into t values (2); revoke select on t from x@y; @@ -35,7 +35,7 @@ revoke select on t from x@y; commit; select * from t; show grants for x@y; -source include/show_binlog_events.inc; +--source include/show_binlog_events.inc drop user x@y; drop database d1; --sync_slave_with_master diff --git a/mysql-test/suite/rpl/t/rpl_events.test b/mysql-test/suite/rpl/t/rpl_events.test index 6e5bed8aa21..7f473648514 100644 --- a/mysql-test/suite/rpl/t/rpl_events.test +++ b/mysql-test/suite/rpl/t/rpl_events.test @@ -95,3 +95,85 @@ DROP EVENT event44331_2; DROP EVENT event44331_3; DROP EVENT event44331_4; sync_slave_with_master; + +# +# BUG#48321 +# This test verifies if the definer is consistent between master and slave, +# when the event is created or altered with the DEFINER clause that the +# DEFINER is set to CURRENT_USER() +# +connection master; +--disable_warnings +DROP VIEW IF EXISTS events_view; +DROP EVENT IF EXISTS event48321_1; +DROP EVENT IF EXISTS event48321_2; +DROP EVENT IF EXISTS event48321_3; +DROP EVENT IF EXISTS event48321_4; +--enable_warnings + +CREATE VIEW events_view AS + SELECT EVENT_SCHEMA, EVENT_NAME, DEFINER FROM INFORMATION_SCHEMA.EVENTS + WHERE EVENT_NAME LIKE 'event48321%'; +let $diff_table_1= master:test.events_view; +let $diff_table_2= slave:test.events_view; + +CREATE DEFINER=CURRENT_USER() /*!50000 EVENT event48321_1 */ + ON SCHEDULE AT CURRENT_TIMESTAMP + ON COMPLETION PRESERVE DISABLE + DO SELECT 48321 as BUG; + +CREATE DEFINER=CURRENT_USER() EVENT event48321_2 + ON SCHEDULE AT CURRENT_TIMESTAMP + ON COMPLETION PRESERVE DISABLE + DO SELECT 48321 as BUG; + +CREATE /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3 + ON SCHEDULE AT CURRENT_TIMESTAMP + ON COMPLETION PRESERVE DISABLE + DO SELECT 48321 as BUG; +sync_slave_with_master; + +--source include/diff_tables.inc + +connection master; +ALTER DEFINER=CURRENT_USER() EVENT event48321_1 RENAME TO event48321_4; + +ALTER DEFINER=CURRENT_USER() EVENT event48321_2 + ON SCHEDULE AT CURRENT_TIMESTAMP + ON COMPLETION PRESERVE DISABLE + DO SELECT 48321 as BUG; + +ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3 + ON SCHEDULE AT CURRENT_TIMESTAMP + ON COMPLETION PRESERVE DISABLE + DO SELECT 48321 as BUG; +sync_slave_with_master; + +--source include/diff_tables.inc + +# Two statements in on query +connection master; +DELIMITER |; +ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3 + ON SCHEDULE AT CURRENT_TIMESTAMP + ON COMPLETION PRESERVE DISABLE + DO SELECT 48321 as BUG; ALTER EVENT event48321_2 ENABLE | +DELIMITER ;| +sync_slave_with_master; + +--source include/diff_tables.inc + +#No Event boday +connection master; +ALTER EVENT event48321_3 ENABLE; +sync_slave_with_master; + +--source include/diff_tables.inc + +connection master; +DROP EVENT event48321_4; +DROP EVENT event48321_2; +DROP EVENT event48321_3; +DROP VIEW events_view; +--source include/master-slave-end.inc + diff --git a/mysql-test/suite/rpl/t/rpl_stm_until.test b/mysql-test/suite/rpl/t/rpl_stm_until.test index 72ea6ef4c1c..454ec9a0c42 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_until.test +++ b/mysql-test/suite/rpl/t/rpl_stm_until.test @@ -164,4 +164,39 @@ connection slave; start slave; sync_with_master; + # Bug #47142 "slave start until" stops 1 event too late in 4.1 to 5.0 replication +# +# testing fixes that refine the start position of prior-5.0 master's event +# and by that provide correct execution of +# START SLAVE UNTIL ... master_log_pos= x; +# Keep the test at the end of the file because it manipulates with binlog files +# to substitute the genuine one with a prepared on 4.1 server. +# + +--source include/master-slave-reset.inc + +connection master; +drop table if exists t1; # there is create table t1 in bug47142_master-bin.000001 +flush logs; +let $MYSQLD_DATADIR= `select @@datadir`; +--remove_file $MYSQLD_DATADIR/master-bin.000001 +--copy_file $MYSQL_TEST_DIR/std_data/bug47142_master-bin.000001 $MYSQLD_DATADIR/master-bin.000001 + +connection slave; +stop slave; +reset slave; +start slave until master_log_file='master-bin.000001', master_log_pos=294 /* to stop right before DROP */; +--source include/wait_for_slave_sql_to_stop.inc + +show tables /* t1 must exist */; + +# clean-up of Bug #47142 testing + +drop table t1; # drop on slave only, master does not have t1. +stop slave; +reset slave; + +connection master; +reset master; + # End of tests diff --git a/mysql-test/suite/rpl/t/rpl_user.test b/mysql-test/suite/rpl/t/rpl_user.test index b8fe41d03c4..2adb822839a 100644 --- a/mysql-test/suite/rpl/t/rpl_user.test +++ b/mysql-test/suite/rpl/t/rpl_user.test @@ -54,8 +54,85 @@ drop user 'not_exist_user1'@'fakehost', 'not_exist_user2'@'fakehost'; sync_slave_with_master; select Host,User from mysql.user where Host='fakehost'; -# -# show the binlog events on the master -# connection master; source include/show_binlog_events.inc; + +# +# BUG#48321 +# +let $action= RENAME; +let $statement= RENAME USER \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +let $action= DROP; +let $statement= DROP USER \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +--disable_warnings +DROP PROCEDURE IF EXISTS f1; +--enable_warnings +CREATE PROCEDURE p1() SELECT 1; +#REVOKE ALL PRIVILEGES +let $action= REVOKE; +let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv; +let $statement= REVOKE ALL PRIVILEGES, GRANT OPTION FROM \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +#REVOKE ALL PRIVILEGES with comment +let $action= REVOKE; +let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv; +let $statement= REVOKE ALL PRIVILEGES, GRANT OPTION FROM \$users_list /*With comment*/; +source extra/rpl_tests/rpl_current_user.test; + +#REVOKE ALL PRIVILEGES with comment +let $action= REVOKE; +let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv; +let $statement= REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv; +#REVOKE ON TABLE +let $statement= REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +#REVOKE ON CREATE ROUTINE +let $diff_columns= Create_routine_priv; +let $statement= REVOKE CREATE ROUTINE ON *.* FROM \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +#REVOKE ON ROUTINE +let $diff_table= mysql.procs_priv; +let $diff_columns= Routine_name, Proc_priv; +let $statement= REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +let $diff_table= mysql.user; +#GRANT ALL PRIVILEGES +let $action= GRANT; +let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv, Password; +let $statement= GRANT ALL PRIVILEGES ON *.* TO \$users_list WITH GRANT OPTION; +source extra/rpl_tests/rpl_current_user.test; + +#GRANT ALL PRIVILEGES with comment +let $action= GRANT; +let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv, Password; +let $statement= GRANT ALL PRIVILEGES ON *.* TO \$users_list /* With Comment */ WITH GRANT OPTION; +source extra/rpl_tests/rpl_current_user.test; + +#GRANT ON TABLE +let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Password; +let $statement= GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +#GRANT ON CREATE ROUTINE +let $diff_columns= Create_routine_priv; +let $statement= GRANT CREATE ROUTINE ON *.* TO \$users_list; +source extra/rpl_tests/rpl_current_user.test; + +#GRANT ON ROUTINE +let $diff_table= mysql.procs_priv; +let $diff_columns= Routine_name, Proc_priv; +let $statement= GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO \$users_list; + +DROP PROCEDURE p1; +source extra/rpl_tests/rpl_current_user.test; diff --git a/mysql-test/suite/sys_vars/r/sql_log_update_basic.result b/mysql-test/suite/sys_vars/r/sql_log_update_basic.result index f48cf6870da..b6329b2820c 100644 --- a/mysql-test/suite/sys_vars/r/sql_log_update_basic.result +++ b/mysql-test/suite/sys_vars/r/sql_log_update_basic.result @@ -22,13 +22,13 @@ VARIABLE_NAME VARIABLE_VALUE SQL_LOG_UPDATE ON set global sql_log_update=1; Warnings: -Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored +Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6. select @@global.sql_log_update; @@global.sql_log_update 1 set session sql_log_update=ON; Warnings: -Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored +Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6. select @@session.sql_log_update; @@session.sql_log_update 1 @@ -40,7 +40,7 @@ set global sql_log_update="foo"; ERROR 42000: Variable 'sql_log_update' can't be set to the value of 'foo' SET @@global.sql_log_update = @start_global_value; Warnings: -Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored +Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6. SELECT @@global.sql_log_update; @@global.sql_log_update 1 diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test index fde98ab7e97..3b73a47534e 100644 --- a/mysql-test/t/delete.test +++ b/mysql-test/t/delete.test @@ -510,4 +510,21 @@ END | --error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG DELETE IGNORE FROM t1; -DROP TABLE t1;
\ No newline at end of file +DROP TABLE t1; + + +--echo # +--echo # Bug #49552 : sql_buffer_result cause crash + not found records +--echo # in multitable delete/subquery +--echo # + +CREATE TABLE t1(a INT); +INSERT INTO t1 VALUES (1),(2),(3); +SET SESSION SQL_BUFFER_RESULT=1; +DELETE t1 FROM (SELECT SUM(a) a FROM t1) x,t1; + +SET SESSION SQL_BUFFER_RESULT=DEFAULT; +SELECT * FROM t1; +DROP TABLE t1; + +--echo End of 5.1 tests diff --git a/mysql-test/t/openssl_1.test b/mysql-test/t/openssl_1.test index baa1603faab..8ca70258bc0 100644 --- a/mysql-test/t/openssl_1.test +++ b/mysql-test/t/openssl_1.test @@ -15,8 +15,8 @@ insert into t1 values (5); grant select on test.* to ssl_user1@localhost require SSL; grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA"; -grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com"; -grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB/emailAddress=abstract.mysql.developer@mysql.com" ISSUER "/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB"; +grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB"; +grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB" ISSUER "/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB"; grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx"; flush privileges; diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index dad7405835b..80a714882be 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -3841,6 +3841,46 @@ EXPLAIN EXTENDED SELECT x.a, y.a, z.a FROM t1 x DROP TABLE t1; +--echo # +--echo # Bug #49897: crash in ptr_compare when char(0) NOT NULL +--echo # column is used for ORDER BY +--echo # +SET @old_sort_buffer_size= @@session.sort_buffer_size; +SET @@sort_buffer_size= 40000; + +CREATE TABLE t1(a CHAR(0) NOT NULL); +--disable_warnings +INSERT INTO t1 VALUES (0), (0), (0); +--enable_warnings +INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12; +INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12; +INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12; +EXPLAIN SELECT a FROM t1 ORDER BY a; +--disable_result_log +SELECT a FROM t1 ORDER BY a; +--enable_result_log +DROP TABLE t1; + +CREATE TABLE t1(a CHAR(0) NOT NULL, b CHAR(0) NOT NULL, c int); +--disable_warnings +INSERT INTO t1 VALUES (0, 0, 0), (0, 0, 2), (0, 0, 1); +--enable_warnings +INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12; +INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12; +INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12; +EXPLAIN SELECT a FROM t1 ORDER BY a LIMIT 5; +SELECT a FROM t1 ORDER BY a LIMIT 5; +EXPLAIN SELECT * FROM t1 ORDER BY a, b LIMIT 5; +SELECT * FROM t1 ORDER BY a, b LIMIT 5; +EXPLAIN SELECT * FROM t1 ORDER BY a, b, c LIMIT 5; +SELECT * FROM t1 ORDER BY a, b, c LIMIT 5; +EXPLAIN SELECT * FROM t1 ORDER BY c, a LIMIT 5; +SELECT * FROM t1 ORDER BY c, a LIMIT 5; + +SET @@sort_buffer_size= @old_sort_buffer_size; +DROP TABLE t1; + + --echo End of 5.0 tests # diff --git a/sql/events.cc b/sql/events.cc index 73f3427607d..35fbca871bb 100644 --- a/sql/events.cc +++ b/sql/events.cc @@ -246,31 +246,48 @@ common_1_lev_code: } -/** - Create a new query string for removing executable comments - for avoiding leak and keeping consistency of the execution - on master and slave. - +/* + Binlog '{CREATE|ALTER} EVENT' statements. + Definer part is always rewritten, for definer can be CURRENT_USER() function. + @param[in] thd Thread handler - @param[in] buf Query string + @param[in] create CREATE or ALTER statement @return - 0 ok - 1 error + FASE ok + TRUE error */ -static int -create_query_string(THD *thd, String *buf) +static bool event_write_bin_log(THD *thd, bool create) { - /* Append the "CREATE" part of the query */ - if (buf->append(STRING_WITH_LEN("CREATE "))) - return 1; - /* Append definer */ - append_definer(thd, buf, &(thd->lex->definer->user), &(thd->lex->definer->host)); + String log_query; + if (create) + { + /* Append the "CREATE" part of the query */ + if (log_query.append(STRING_WITH_LEN("CREATE "))) + return TRUE; + } + else + { + /* Append the "ALETR " part of the query */ + if (log_query.append(STRING_WITH_LEN("ALTER "))) + return TRUE; + } + + /* Append definer + If the definer is not set or set to CURRENT_USER, the value of CURRENT_USER + will be written into the binary log as the definer for the SQL thread. + */ + append_definer(thd, &log_query, &(thd->lex->definer->user), + &(thd->lex->definer->host)); + /* Append the left part of thd->query after "DEFINER" part */ - if (buf->append(thd->lex->stmt_definition_begin)) - return 1; - - return 0; + if (log_query.append(thd->lex->stmt_definition_begin, + thd->lex->stmt_definition_end - + thd->lex->stmt_definition_begin)) + return TRUE; + + return write_bin_log(thd, TRUE, log_query.c_ptr_safe(), log_query.length()) + != 0; } /** @@ -285,8 +302,7 @@ create_query_string(THD *thd, String *buf) @sa Events::drop_event for the notes about locking, pre-locking and Events DDL. - @retval FALSE OK - @retval TRUE Error (reported) + @retval FALSE OK @retval TRUE Error (reported) */ bool @@ -368,22 +384,7 @@ Events::create_event(THD *thd, Event_parse_data *parse_data, binlog the create event unless it's been successfully dropped */ if (!dropped) - { - /* Binlog the create event. */ - DBUG_ASSERT(thd->query() && thd->query_length()); - String log_query; - if (create_query_string(thd, &log_query)) - { - sql_print_error("Event Error: An error occurred while creating query string, " - "before writing it into binary log."); - /* Restore the state of binlog format */ - thd->current_stmt_binlog_row_based= save_binlog_row_based; - DBUG_RETURN(TRUE); - } - /* If the definer is not set or set to CURRENT_USER, the value of CURRENT_USER - will be written into the binary log as the definer for the SQL thread. */ - ret= write_bin_log(thd, TRUE, log_query.c_ptr(), log_query.length()); - } + ret= event_write_bin_log(thd, TRUE); } mysql_mutex_unlock(&LOCK_event_metadata); /* Restore the state of binlog format */ @@ -502,9 +503,7 @@ Events::update_event(THD *thd, Event_parse_data *parse_data, if (event_queue) event_queue->update_event(thd, parse_data->dbname, parse_data->name, new_element); - /* Binlog the alter event. */ - DBUG_ASSERT(thd->query() && thd->query_length()); - ret= write_bin_log(thd, TRUE, thd->query(), thd->query_length()); + ret= event_write_bin_log(thd, FALSE); } } mysql_mutex_unlock(&LOCK_event_metadata); diff --git a/sql/filesort.cc b/sql/filesort.cc index c6156b8243f..79887577f8f 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -145,6 +145,8 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length, error= 1; bzero((char*) ¶m,sizeof(param)); param.sort_length= sortlength(thd, sortorder, s_length, &multi_byte_charset); + /* filesort cannot handle zero-length records. */ + DBUG_ASSERT(param.sort_length); param.ref_length= table->file->ref_length; param.addon_field= 0; param.addon_length= 0; diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 0286a51683a..c33e0f4c6fb 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1765,19 +1765,19 @@ String *Item_func_encode::val_str(String *str) null_value= 0; res= copy_if_not_alloced(str, res, res->length()); - transform(res); + crypto_transform(res); sql_crypt.reinit(); return res; } -void Item_func_encode::transform(String *res) +void Item_func_encode::crypto_transform(String *res) { sql_crypt.encode((char*) res->ptr(),res->length()); res->set_charset(&my_charset_bin); } -void Item_func_decode::transform(String *res) +void Item_func_decode::crypto_transform(String *res) { sql_crypt.decode((char*) res->ptr(),res->length()); } diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index ced164554e4..09a7da021c0 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -366,7 +366,7 @@ public: void fix_length_and_dec(); const char *func_name() const { return "encode"; } protected: - virtual void transform(String *); + virtual void crypto_transform(String *); private: /** Provide a seed for the PRNG sequence. */ bool seed(); @@ -379,7 +379,7 @@ public: Item_func_decode(Item *a, Item *seed): Item_func_encode(a, seed) {} const char *func_name() const { return "decode"; } protected: - void transform(String *); + void crypto_transform(String *); }; diff --git a/sql/log_event.cc b/sql/log_event.cc index c92a528dfab..be167451cb3 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2297,10 +2297,22 @@ bool Query_log_event::write(IO_CACHE* file) int8store(start, table_map_for_update); start+= 8; } + if (master_data_written != 0) + { + /* + Q_MASTER_DATA_WRITTEN_CODE only exists in relay logs where the master + has binlog_version<4 and the slave has binlog_version=4. See comment + for master_data_written in log_event.h for details. + */ + *start++= Q_MASTER_DATA_WRITTEN_CODE; + int4store(start, master_data_written); + start+= 4; + } + /* NOTE: When adding new status vars, please don't forget to update - the MAX_SIZE_LOG_EVENT_STATUS in log_event.h and update function - code_name in this file. + the MAX_SIZE_LOG_EVENT_STATUS in log_event.h and update the function + code_name() in this file. Here there could be code like if (command-line-option-which-says-"log_this_variable" && inited) @@ -2376,7 +2388,8 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg, auto_increment_offset(thd_arg->variables.auto_increment_offset), lc_time_names_number(thd_arg->variables.lc_time_names->number), charset_database_number(0), - table_map_for_update((ulonglong)thd_arg->table_map_for_update) + table_map_for_update((ulonglong)thd_arg->table_map_for_update), + master_data_written(0) { time_t end_time; @@ -2605,6 +2618,7 @@ code_name(int code) case Q_LC_TIME_NAMES_CODE: return "Q_LC_TIME_NAMES_CODE"; case Q_CHARSET_DATABASE_CODE: return "Q_CHARSET_DATABASE_CODE"; case Q_TABLE_MAP_FOR_UPDATE_CODE: return "Q_TABLE_MAP_FOR_UPDATE_CODE"; + case Q_MASTER_DATA_WRITTEN_CODE: return "Q_MASTER_DATA_WRITTEN_CODE"; } sprintf(buf, "CODE#%d", code); return buf; @@ -2642,7 +2656,7 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, flags2_inited(0), sql_mode_inited(0), charset_inited(0), auto_increment_increment(1), auto_increment_offset(1), time_zone_len(0), lc_time_names_number(0), charset_database_number(0), - table_map_for_update(0) + table_map_for_update(0), master_data_written(0) { ulong data_len; uint32 tmp; @@ -2698,6 +2712,18 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, DBUG_PRINT("info", ("Query_log_event has status_vars_len: %u", (uint) status_vars_len)); tmp-= 2; + } + else + { + /* + server version < 5.0 / binlog_version < 4 master's event is + relay-logged with storing the original size of the event in + Q_MASTER_DATA_WRITTEN_CODE status variable. + The size is to be restored at reading Q_MASTER_DATA_WRITTEN_CODE-marked + event from the relay log. + */ + DBUG_ASSERT(description_event->binlog_version < 4); + master_data_written= data_written; } /* We have parsed everything we know in the post header for QUERY_EVENT, @@ -2789,6 +2815,11 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, table_map_for_update= uint8korr(pos); pos+= 8; break; + case Q_MASTER_DATA_WRITTEN_CODE: + CHECK_SPACE(pos, end, 4); + data_written= master_data_written= uint4korr(pos); + pos+= 4; + break; default: /* That's why you must write status vars in growing order of code */ DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\ diff --git a/sql/log_event.h b/sql/log_event.h index 9f14b30d2e2..5530444b0d4 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -264,7 +264,8 @@ struct sql_ex_info 1 + 1 + 255 /* type, length, time_zone */ + \ 1 + 2 /* type, lc_time_names_number */ + \ 1 + 2 /* type, charset_database_number */ + \ - 1 + 8 /* type, table_map_for_update */) + 1 + 8 /* type, table_map_for_update */ + \ + 1 + 4 /* type, master_data_written */) #define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \ LOG_EVENT_HEADER_LEN + /* write_header */ \ QUERY_HEADER_LEN + /* write_data */ \ @@ -331,6 +332,10 @@ struct sql_ex_info #define Q_TABLE_MAP_FOR_UPDATE_CODE 9 +#define Q_MASTER_DATA_WRITTEN_CODE 10 + +/* Intvar event post-header */ + /* Intvar event data */ #define I_TYPE_OFFSET 0 #define I_VAL_OFFSET 1 @@ -1681,6 +1686,16 @@ public: statement, for other query statements, this will be zero. */ ulonglong table_map_for_update; + /* + Holds the original length of a Query_log_event that comes from a + master of version < 5.0 (i.e., binlog_version < 4). When the IO + thread writes the relay log, it augments the Query_log_event with a + Q_MASTER_DATA_WRITTEN_CODE status_var that holds the original event + length. This field is initialized to non-zero in the SQL thread when + it reads this augmented event. SQL thread does not write + Q_MASTER_DATA_WRITTEN_CODE to the slave's server binlog. + */ + uint32 master_data_written; #ifndef MYSQL_CLIENT diff --git a/sql/rpl_injector.cc b/sql/rpl_injector.cc index ac879b5033f..64f79092057 100644 --- a/sql/rpl_injector.cc +++ b/sql/rpl_injector.cc @@ -112,8 +112,8 @@ int injector::transaction::write_row (server_id_type sid, table tbl, { DBUG_ENTER("injector::transaction::write_row(...)"); - int error= 0; - if (error= check_state(ROW_STATE)) + int error= check_state(ROW_STATE); + if (error) DBUG_RETURN(error); server_id_type save_id= m_thd->server_id; @@ -131,8 +131,8 @@ int injector::transaction::delete_row(server_id_type sid, table tbl, { DBUG_ENTER("injector::transaction::delete_row(...)"); - int error= 0; - if (error= check_state(ROW_STATE)) + int error= check_state(ROW_STATE); + if (error) DBUG_RETURN(error); server_id_type save_id= m_thd->server_id; @@ -150,8 +150,8 @@ int injector::transaction::update_row(server_id_type sid, table tbl, { DBUG_ENTER("injector::transaction::update_row(...)"); - int error= 0; - if (error= check_state(ROW_STATE)) + int error= check_state(ROW_STATE); + if (error) DBUG_RETURN(error); server_id_type save_id= m_thd->server_id; diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 012542a9467..8283123f51c 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -196,6 +196,7 @@ static bool compare_hostname(const acl_host_and_ip *host,const char *hostname, const char *ip); static my_bool acl_load(THD *thd, TABLE_LIST *tables); static my_bool grant_load(THD *thd, TABLE_LIST *tables); +static bool acl_write_bin_log(THD *thd, List <LEX_USER> &list, bool clear_error); /* Convert scrambled password to binary form, according to scramble type, @@ -3270,7 +3271,8 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list, if (!result) /* success */ { - result= write_bin_log(thd, TRUE, thd->query(), thd->query_length()); + if (acl_write_bin_log(thd, user_list, TRUE)) + result= -1; } mysql_rwlock_unlock(&LOCK_grant); @@ -3446,8 +3448,7 @@ bool mysql_routine_grant(THD *thd, TABLE_LIST *table_list, bool is_proc, if (write_to_binlog) { - if (write_bin_log(thd, FALSE, thd->query(), thd->query_length())) - result= TRUE; + result|= acl_write_bin_log(thd, user_list, FALSE); } mysql_rwlock_unlock(&LOCK_grant); @@ -3576,7 +3577,7 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list, if (!result) { - result= write_bin_log(thd, TRUE, thd->query(), thd->query_length()); + result= acl_write_bin_log(thd, list, TRUE); } mysql_rwlock_unlock(&LOCK_grant); @@ -5755,9 +5756,9 @@ static int handle_grant_data(TABLE_LIST *tables, bool drop, } -static void append_user(String *str, LEX_USER *user) +static void append_user(String *str, LEX_USER *user, bool comma= TRUE) { - if (str->length()) + if (comma && str->length()) str->append(','); str->append('\''); str->append(user->user.str); @@ -5766,6 +5767,65 @@ static void append_user(String *str, LEX_USER *user) str->append('\''); } +/* + The operations(DROP, RENAME, REVOKE, GRANT) will cause inconsistency between + master and slave, when CURRENT_USER() is used. To solve this problem, we + construct a new binlog statement in which CURRENT_USER() is replaced by + the real user name and host name. + */ +static bool acl_write_bin_log(THD *thd, List <LEX_USER> &list, bool clear_error) +{ + String log_query; + LEX *lex= thd->lex; + List_iterator <LEX_USER> user_list(list); + LEX_USER *user, *tmp_user; + + if (!mysql_bin_log.is_open()) + return FALSE; + + if (log_query.append(lex->stmt_begin, lex->stmt_user_begin - lex->stmt_begin)) + return TRUE; + while ((tmp_user= user_list++)) + { + if (!(user= get_current_user(thd, tmp_user))) + continue; + + /* + No User, but a password? + They did GRANT ... TO CURRENT_USER() IDENTIFIED BY ... ! + Get the current user, and shallow-copy the new password to them! + */ + if (!tmp_user->user.str && tmp_user->password.str) + user->password= tmp_user->password; + + if (log_query.append(" ", 1)) + return TRUE; + append_user(&log_query, user, FALSE); + /* Only 'GRANT' have password */ + if (user->password.str) + { + if (log_query.append(STRING_WITH_LEN(" IDENTIFIED BY ")) || + log_query.append(STRING_WITH_LEN("PASSWORD ")) || + log_query.append("'", 1) || + log_query.append(user->password.str, + user->password.length) || + log_query.append("'", 1)) + return TRUE; + } + if (log_query.append(",", 1)) + return TRUE; + } + /* It is binlogged only when at least one user is in the query */ + if (log_query.c_ptr()[log_query.length()-1] == ',') + { + log_query.length(log_query.length()-1); + if (log_query.append(lex->stmt_user_end, lex->stmt_end - lex->stmt_user_end)) + return TRUE; + return write_bin_log(thd, clear_error, log_query.c_ptr_safe(), + log_query.length()) != 0; + } + return FALSE; +} /* Create a list of users. @@ -5872,6 +5932,7 @@ bool mysql_drop_user(THD *thd, List <LEX_USER> &list) { int result; String wrong_users; + String log_query; LEX_USER *user_name, *tmp_user_name; List_iterator <LEX_USER> user_list(list); TABLE_LIST tables[GRANT_TABLES]; @@ -5901,6 +5962,7 @@ bool mysql_drop_user(THD *thd, List <LEX_USER> &list) mysql_rwlock_wrlock(&LOCK_grant); mysql_mutex_lock(&acl_cache->lock); + log_query.append(STRING_WITH_LEN("DROP USER")); while ((tmp_user_name= user_list++)) { if (!(user_name= get_current_user(thd, tmp_user_name))) @@ -5908,6 +5970,17 @@ bool mysql_drop_user(THD *thd, List <LEX_USER> &list) result= TRUE; continue; } + + /* + The operation will cause inconsistency between master and slave, when + CURRENT_USER() is used. To solve this problem, we construct a new + binlog statement in which CURRENT_USER() is replaced by the real user + name and host name. + */ + log_query.append(STRING_WITH_LEN(" ")); + append_user(&log_query, user_name, FALSE); + log_query.append(STRING_WITH_LEN(",")); + if (handle_grant_data(tables, 1, user_name, NULL) <= 0) { append_user(&wrong_users, user_name); @@ -5926,7 +5999,13 @@ bool mysql_drop_user(THD *thd, List <LEX_USER> &list) my_error(ER_CANNOT_USER, MYF(0), "DROP USER", wrong_users.c_ptr_safe()); if (some_users_deleted) - result |= write_bin_log(thd, FALSE, thd->query(), thd->query_length()); + { + if (log_query.c_ptr()[log_query.length()-1] == ',') + { + log_query.length(log_query.length()-1); + result|= write_bin_log(thd, FALSE, log_query.c_ptr_safe(), log_query.length()); + } + } mysql_rwlock_unlock(&LOCK_grant); close_thread_tables(thd); @@ -5954,6 +6033,7 @@ bool mysql_rename_user(THD *thd, List <LEX_USER> &list) { int result; String wrong_users; + String log_query; LEX_USER *user_from, *tmp_user_from; LEX_USER *user_to, *tmp_user_to; List_iterator <LEX_USER> user_list(list); @@ -5981,6 +6061,7 @@ bool mysql_rename_user(THD *thd, List <LEX_USER> &list) mysql_rwlock_wrlock(&LOCK_grant); mysql_mutex_lock(&acl_cache->lock); + log_query.append(STRING_WITH_LEN("RENAME USER")); while ((tmp_user_from= user_list++)) { if (!(user_from= get_current_user(thd, tmp_user_from))) @@ -5997,6 +6078,18 @@ bool mysql_rename_user(THD *thd, List <LEX_USER> &list) DBUG_ASSERT(user_to != 0); /* Syntax enforces pairs of users. */ /* + The operation will cause inconsistency between master and slave, when + CURRENT_USER() is used. To solve this problem, we construct a new + binlog statement in which CURRENT_USER() is replaced by the real user + name and host name. + */ + log_query.append(STRING_WITH_LEN(" ")); + append_user(&log_query, user_from, FALSE); + log_query.append(STRING_WITH_LEN(" TO ")); + append_user(&log_query, user_to, FALSE); + log_query.append(STRING_WITH_LEN(",")); + + /* Search all in-memory structures and grant tables for a mention of the new user name. */ @@ -6017,9 +6110,15 @@ bool mysql_rename_user(THD *thd, List <LEX_USER> &list) if (result) my_error(ER_CANNOT_USER, MYF(0), "RENAME USER", wrong_users.c_ptr_safe()); - - if (some_users_renamed && mysql_bin_log.is_open()) - result |= write_bin_log(thd, FALSE, thd->query(), thd->query_length()); + + if (some_users_renamed) + { + if (log_query.c_ptr()[log_query.length()-1] == ',') + { + log_query.length(log_query.length()-1); + result|= write_bin_log(thd, FALSE, log_query.c_ptr_safe(), log_query.length()); + } + } mysql_rwlock_unlock(&LOCK_grant); close_thread_tables(thd); @@ -6209,8 +6308,9 @@ bool mysql_revoke_all(THD *thd, List <LEX_USER> &list) mysql_mutex_unlock(&acl_cache->lock); - int binlog_error= - write_bin_log(thd, FALSE, thd->query(), thd->query_length()); + int binlog_error= 0; + if (acl_write_bin_log(thd, list, FALSE)) + binlog_error= 1; mysql_rwlock_unlock(&LOCK_grant); close_thread_tables(thd); diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 6713a8f58f8..1be84751581 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -854,7 +854,7 @@ bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create_info) qinfo.db_len = strlen(db); /* These DDL methods and logging protected with LOCK_mysql_create_db */ - if (error= mysql_bin_log.write(&qinfo)) + if ((error= mysql_bin_log.write(&qinfo))) goto exit; } my_ok(thd, result); diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 800a16cf2b6..67e1861a993 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -1986,6 +1986,8 @@ struct LEX: public Query_tables_list - CREATE TRIGGER (points to "TRIGGER"); - CREATE PROCEDURE (points to "PROCEDURE"); - CREATE FUNCTION (points to "FUNCTION" or "AGGREGATE"); + - CREATE VIEW(points to "VIEW"); + - CREATE EVENT(points to "EVENT"); This pointer is required to add possibly omitted DEFINER-clause to the DDL-statement before dumping it to the binlog. @@ -1994,6 +1996,29 @@ struct LEX: public Query_tables_list const char *stmt_definition_end; + /* + stmt_begin is intended to point to the begin of every statement. + It is now used in the following statements: + - GRANT ALL PRIVELEGES ON *.* (points to "GRANT"); + - REVOKE ALL PRIVELEGES ON *.* (points to "REVOKE"); + */ + const char *stmt_begin; + const char *stmt_end; + + /* + stmt_user_begin is intended to point to the begin of the user list in + the following statements: + - GRANT ALL PRIVELEGES ON *.* TO 'username'@'hostname' + (points to "'username'"); + - REVOKE ALL PRIVELEGES ON *.* FROM 'username'@'hostname' + (points to "'username'"); + + these pointers are required to replace the CURRENT_USER() + function by the real user before dumping it to the binlog. + */ + const char *stmt_user_begin; + const char *stmt_user_end; + /** During name resolution search only in the table list given by Name_resolution_context::first_name_resolution_table and diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index dd7101a46bb..73ed2e3f017 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3260,9 +3260,9 @@ end_with_restore_list: select_lex->where, 0, (ORDER *)NULL, (ORDER *)NULL, (Item *)NULL, (ORDER *)NULL, - select_lex->options | thd->variables.option_bits | + (select_lex->options | thd->variables.option_bits | SELECT_NO_JOIN_CACHE | SELECT_NO_UNLOCK | - OPTION_SETUP_TABLES_DONE, + OPTION_SETUP_TABLES_DONE) & ~OPTION_BUFFER_RESULT, del_result, unit, select_lex); res|= thd->is_error(); MYSQL_MULTI_DELETE_DONE(res, del_result->num_deleted()); @@ -3883,7 +3883,7 @@ end_with_restore_list: */ if (!lex->no_write_to_binlog && write_to_binlog) { - if (res= write_bin_log(thd, FALSE, thd->query(), thd->query_length())) + if ((res= write_bin_log(thd, FALSE, thd->query(), thd->query_length()))) break; } my_ok(thd); diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 5cef405fe53..edeeb143333 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -542,13 +542,26 @@ JOIN::prepare(Item ***rref_pointer_array, if (order) { + bool real_order= FALSE; ORDER *ord; for (ord= order; ord; ord= ord->next) { Item *item= *ord->item; + /* + Disregard sort order if there's only "{VAR}CHAR(0) NOT NULL" fields + there. Such fields don't contain any data to sort. + */ + if (!real_order && + (item->type() != Item::Item::FIELD_ITEM || + ((Item_field *) item)->field->maybe_null() || + ((Item_field *) item)->field->sort_length())) + real_order= TRUE; + if (item->with_sum_func && item->type() != Item::SUM_FUNC_ITEM) item->split_sum_func(thd, ref_pointer_array, all_fields); } + if (!real_order) + order= NULL; } if (having && having->with_sum_func) diff --git a/sql/sql_test.cc b/sql/sql_test.cc index 8dc4b4ffeb6..fe56d6acf3e 100644 --- a/sql/sql_test.cc +++ b/sql/sql_test.cc @@ -168,6 +168,21 @@ TEST_join(JOIN *join) uint i,ref; DBUG_ENTER("TEST_join"); + /* + Assemble results of all the calls to full_name() first, + in order not to garble the tabular output below. + */ + String ref_key_parts[MAX_TABLES]; + for (i= 0; i < join->tables; i++) + { + JOIN_TAB *tab= join->join_tab + i; + for (ref= 0; ref < tab->ref.key_parts; ref++) + { + ref_key_parts[i].append(tab->ref.items[ref]->full_name()); + ref_key_parts[i].append(" "); + } + } + DBUG_LOCK_FILE; (void) fputs("\nInfo about JOIN\n",DBUG_FILE); for (i=0 ; i < join->tables ; i++) @@ -199,13 +214,8 @@ TEST_join(JOIN *join) } if (tab->ref.key_parts) { - (void) fputs(" refs: ",DBUG_FILE); - for (ref=0 ; ref < tab->ref.key_parts ; ref++) - { - Item *item=tab->ref.items[ref]; - fprintf(DBUG_FILE,"%s ", item->full_name()); - } - (void) fputc('\n',DBUG_FILE); + fprintf(DBUG_FILE, + " refs: %s\n", ref_key_parts[i].ptr()); } } DBUG_UNLOCK_FILE; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index ab128a9b701..9f4bad45ce5 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1681,7 +1681,11 @@ opt_end_of_input: ; verb_clause: - statement + remember_name statement remember_end + { + Lex->stmt_begin= $1; + Lex->stmt_end= $3; + } | begin ; @@ -6192,7 +6196,7 @@ alter: } view_tail {} - | ALTER definer_opt EVENT_SYM sp_name + | ALTER definer_opt remember_name EVENT_SYM sp_name { /* It is safe to use Lex->spname because @@ -6204,7 +6208,8 @@ alter: if (!(Lex->event_parse_data= Event_parse_data::new_instance(YYTHD))) MYSQL_YYABORT; - Lex->event_parse_data->identifier= $4; + Lex->event_parse_data->identifier= $5; + Lex->stmt_definition_begin= $3; Lex->sql_command= SQLCOM_ALTER_EVENT; } @@ -6214,7 +6219,7 @@ alter: opt_ev_comment opt_ev_sql_stmt { - if (!($6 || $7 || $8 || $9 || $10)) + if (!($7 || $8 || $9 || $10 || $11)) { my_parse_error(ER(ER_SYNTAX_ERROR)); MYSQL_YYABORT; @@ -6275,7 +6280,16 @@ opt_ev_rename_to: ; opt_ev_sql_stmt: - /* empty*/ { $$= 0;} + /* empty*/ + { + $$= 0; + /* + Lex->sp_head is not initialized when event body is empty. + So we can not use Lex->sp_head->set_stmt_end() to set + stmt_definition_end. + */ + Lex->stmt_definition_end= (char*) YYLIP->get_cpp_tok_end(); + } | DO_SYM ev_sql_stmt { $$= 1; } ; @@ -12054,6 +12068,7 @@ user: $$->user = $1; $$->host.str= (char *) "%"; $$->host.length= 1; + Lex->stmt_user_end= YYLIP->get_cpp_ptr(); if (check_string_char_length(&$$->user, ER(ER_USERNAME), USERNAME_CHAR_LENGTH, @@ -12066,6 +12081,7 @@ user: if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) MYSQL_YYABORT; $$->user = $1; $$->host=$3; + Lex->stmt_user_end= YYLIP->get_cpp_ptr(); if (check_string_char_length(&$$->user, ER(ER_USERNAME), USERNAME_CHAR_LENGTH, @@ -12075,6 +12091,7 @@ user: } | CURRENT_USER optional_braces { + Lex->stmt_user_end= YYLIP->get_cpp_ptr(); if (!($$=(LEX_USER*) YYTHD->alloc(sizeof(st_lex_user)))) MYSQL_YYABORT; /* @@ -13280,9 +13297,10 @@ user_list: ; grant_list: + { Lex->stmt_user_begin= YYLIP->get_cpp_ptr(); } grant_user { - if (Lex->users_list.push_back($1)) + if (Lex->users_list.push_back($2)) MYSQL_YYABORT; } | grant_list ',' grant_user @@ -13295,6 +13313,7 @@ grant_list: grant_user: user IDENTIFIED_SYM BY TEXT_STRING { + Lex->stmt_user_end= YYLIP->get_cpp_ptr(); $$=$1; $1->password=$4; if ($4.length) { @@ -13321,7 +13340,10 @@ grant_user: } } | user IDENTIFIED_SYM BY PASSWORD TEXT_STRING - { $$= $1; $1->password= $5; } + { + Lex->stmt_user_end= YYLIP->get_cpp_ptr(); + $$= $1; $1->password= $5; + } | user { $$= $1; $1->password= null_lex_str; } ; |