55 changed files with 1028 additions and 300 deletions
-
2VERSION
-
11extra/yassl/README
-
1extra/yassl/include/crypto_wrapper.hpp
-
2extra/yassl/include/openssl/ssl.h
-
11extra/yassl/src/crypto_wrapper.cpp
-
15extra/yassl/src/yassl_imp.cpp
-
15extra/yassl/src/yassl_int.cpp
-
6include/welcome_copyright_notice.h
-
35mysql-test/r/func_time.result
-
33mysql-test/r/merge_innodb.result
-
18mysql-test/r/sp.result
-
5mysql-test/r/ssl_cert_verify.result
-
20mysql-test/r/view.result
-
20mysql-test/std_data/ca-cert-verify.pem
-
19mysql-test/std_data/server-cert-verify-fail.pem
-
19mysql-test/std_data/server-cert-verify-pass.pem
-
27mysql-test/std_data/server-key-verify-fail.pem
-
27mysql-test/std_data/server-key-verify-pass.pem
-
29mysql-test/suite/rpl/r/rpl_autogen_query_multi_byte_char.result
-
53mysql-test/suite/rpl/r/rpl_unsafe_statements.result
-
87mysql-test/suite/rpl/t/rpl_autogen_query_multi_byte_char.test
-
176mysql-test/suite/rpl/t/rpl_unsafe_statements.test
-
18mysql-test/t/func_time.test
-
31mysql-test/t/merge_innodb.test
-
43mysql-test/t/ssl_cert_verify.test
-
10mysql-test/t/view.test
-
10mysql-test/valgrind.supp
-
3mysys/lf_hash.c
-
3mysys/my_wincond.c
-
4plugin/semisync/semisync_master.cc
-
89sql-common/client.c
-
12sql/field_conv.cc
-
2sql/item.cc
-
2sql/item.h
-
2sql/item_cmpfunc.cc
-
2sql/item_cmpfunc.h
-
2sql/item_timefunc.cc
-
2sql/log.cc
-
10sql/log_event.cc
-
14sql/sql_admin.cc
-
166sql/sql_base.cc
-
135sql/sql_class.cc
-
2sql/sql_class.h
-
2sql/sql_lex.cc
-
9sql/sql_lex.h
-
2sql/sql_select.cc
-
25sql/sql_show.cc
-
3sql/sql_show.h
-
27sql/sql_table.cc
-
3sql/sql_time.h
-
9storage/innobase/buf/buf0flu.c
-
33storage/innobase/srv/srv0srv.c
-
12storage/xtradb/handler/ha_innodb.cc
-
4storage/xtradb/include/univ.i
-
6storage/xtradb/log/log0recv.c
@ -1,4 +1,4 @@ |
|||
MYSQL_VERSION_MAJOR=5 |
|||
MYSQL_VERSION_MINOR=5 |
|||
MYSQL_VERSION_PATCH=47 |
|||
MYSQL_VERSION_PATCH=48 |
|||
MYSQL_VERSION_EXTRA= |
|||
@ -0,0 +1,5 @@ |
|||
#T1: Host name (/CN=localhost/) as OU name in the server certificate, server certificate verification should fail. |
|||
#T2: Host name (localhost) as common name in the server certificate, server certificate verification should pass. |
|||
Variable_name Value |
|||
Ssl_version TLS_VERSION |
|||
# restart server using restart |
|||
@ -0,0 +1,20 @@ |
|||
-----BEGIN CERTIFICATE----- |
|||
MIIDWzCCAkOgAwIBAgIJAO/QdKLEDQdXMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNV |
|||
BAYTAklOMREwDwYDVQQIDAhLYXJuYXRrYTESMBAGA1UEBwwJQmFuZ2Fsb3JlMQ4w |
|||
DAYDVQQKDAVNeVNRTDAeFw0xNjAxMDUxMDA1MDhaFw0yNTExMTMxMDA1MDhaMEQx |
|||
CzAJBgNVBAYTAklOMREwDwYDVQQIDAhLYXJuYXRrYTESMBAGA1UEBwwJQmFuZ2Fs |
|||
b3JlMQ4wDAYDVQQKDAVNeVNRTDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC |
|||
ggEBAKdOCuS2CzfBTJ2x8SAzY0J7cYJfNJvMDF1cvANnhkIhtnkWt/HZ5DJ9NxeX |
|||
q5h7FJLAi4gddqdk/tvQJw0V6gZepJr/mKVnMPivF5+oHPc9ZJQMX6B3FBNwWylm |
|||
ACd5GKx8I/H/MXyuhQTcoV//Ab+2pI8RHeYbBsm3lHH+tX7bRU6mUFjneqMpiCkb |
|||
JHt6BWZiWR10O6pMuGQ9+dDdsLhEV1fj3CctEPwW6rs4IZzD8xl5n+8cy7qu6eYH |
|||
Wt/snwsTzkrufeMRqTtqelxON9eoQwYOR1oH3vNEVlcbuoJAvaWOqBROUBdf12SP |
|||
TYSdP9nlRh7lTKQOywN4kYt6LqUCAwEAAaNQME4wHQYDVR0OBBYEFJ4c9tKaUU0P |
|||
EjBq5G207jjXI7RAMB8GA1UdIwQYMBaAFJ4c9tKaUU0PEjBq5G207jjXI7RAMAwG |
|||
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBABRnUyj21oFi0SGJg/K5+8Lc |
|||
4n6OwVU/NgLOysIB0baIP/Rqeaze59xG/v9FPQgBlWcJK3RabOywx5bxAxdcus+1 |
|||
yp5j4h37Qq1/qkgqmevvdSAPa0OBQbLb+58/naV+ywUpCYZ6flLdCMH3fXuDSlSq |
|||
qrCznextjojtWbnzrBmCmJmXWGd2gSaJDvb90ZZp/Elt3vN1sgjW0M/JEkb4MJ1r |
|||
6nfD/FHr2lUwBHm2yk7Blovx7x4d/Ip3pglk63cNO/Rn0SBTdoVDS2LB9du3Phq2 |
|||
TZiL3NrRMGUNwmdaavyrJxaPq5D+Sfa4LYP3MMYD4KhLogNzIl299n5joyizlJw= |
|||
-----END CERTIFICATE----- |
|||
@ -0,0 +1,19 @@ |
|||
-----BEGIN CERTIFICATE----- |
|||
MIIDJzCCAg8CAQEwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCSU4xETAPBgNV |
|||
BAgMCEthcm5hdGthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBU15U1FM |
|||
MB4XDTE2MDEwNTEwMDgyN1oXDTI1MTExMzEwMDgyN1owbzELMAkGA1UEBhMCSU4x |
|||
EjAQBgNVBAgMCTpLYXJuYXRrYTETMBEGA1UEBwwKOkJhbmdhbG9yZTEPMA0GA1UE |
|||
CgwGOk15U1FMMRcwFQYDVQQLDA4vQ049bG9jYWxob3N0LzENMAsGA1UEAwwEZmFp |
|||
bDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3wnWuJodzZYq9TAJRm |
|||
HU7995FA3TEWdUinYTgGP79aTVQ4M9aeINlB6whWXOI8seh9Ja7C6kMzqOgYbgCl |
|||
WlDPAVJWktFYeWXOLxbpzh1KWkS6jBkWT02t7H7JcYbil7xjlJUxLz4UOOUDUDIP |
|||
6yqdA9VE3osESttjzj57Zm2xPqzbIHVJfORn7EexH4pryS7439p6i4XtfL31NJ8V |
|||
07M3j3a8GqbcEqXYvcUCrLnywDQ1igP817b6ta52nbgYWiqdn0mJs535UJ/p/rSl |
|||
D4Ae/6G3BSEY7whir6xY6vsd4KJ6w+wRCHnY0ky6OdDJVJLH1iqh7si7P3RBGkxw |
|||
Y7MCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAggbw1jj2b7H5KDdeGJGIoOGkQAcs |
|||
GNSJussCfdk7qnzYXKmjyNppC86jjaOrXona5f+SNCuujdu86Tv8V69EH57k4lUc |
|||
DW7J4AD3vUb/tBzB0tsI/76Z4gm1XoCsnCGGpWd8GQAg/QNn/ZfJB2Vb/9ObN6rH |
|||
0HV7ouB6OGZSsb71+grKiN6mDyB1lZynCGvqBxOCKFISfcRbCNFHo/pONlHaNGPE |
|||
vjDH1bPZbEHj8owYgkdcQe0a8EbJYeQfm6fH8V8bmUcG7N60DrCnq4l1qwwVkh1S |
|||
7RpIDgrWkU+esIIdYZIIbtDxQP1Sm7kUh++7b+bcHnyw3KtDVSCw7MIedA== |
|||
-----END CERTIFICATE----- |
|||
@ -0,0 +1,19 @@ |
|||
-----BEGIN CERTIFICATE----- |
|||
MIIDEzCCAfsCAQEwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCSU4xETAPBgNV |
|||
BAgMCEthcm5hdGthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBU15U1FM |
|||
MB4XDTE2MDEwNTEwMDU1OVoXDTI1MTExMzEwMDU1OVowWzELMAkGA1UEBhMCSU4x |
|||
EjAQBgNVBAgMCTpLYXJuYXRrYTETMBEGA1UEBwwKOkJhbmdhbG9yZTEPMA0GA1UE |
|||
CgwGOk15U1FMMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUA |
|||
A4IBDwAwggEKAoIBAQDAmkbUwDe+nrqL8A8uwlIZk74HHCDjUAWrskKF9leEIQsB |
|||
5exFZ8JEo1u6mdR4laQWsxizGdTPqIEidkDyyEMh4+joHgyQEPD/G3rFVW8yEFHb |
|||
42O04O96BEPFXNPDRuX3MxI+lGbYDjxTS/WhVub4/3SqLjC28FJmEUXIHA0/A+c5 |
|||
hlYXK0u+aPAqXxHIjBgB4BxxHXZKqecmvR3LhXoVmhJmndsVfKajB27nDKc8/OTI |
|||
H2SXb6h3nRPDXRfwB/C5i+004tEsVeIgkYshcCgLSyDdeVieUP2pm3EAmDSjmtLF |
|||
6CgY/EBSfH+JCKFUk75bA4k8CCGzBfIeOcsKHwgFAgMBAAEwDQYJKoZIhvcNAQEL |
|||
BQADggEBAInDuHtDkeT6dkWmRJCP56c4xiQqib2QuYUuMSrAhf07xlLHc6iHnD2X |
|||
hCWCrja6uwF90DnPjeouKMAUe5txq/uKA8/Y/NfXN6nPiAeHLI0qnTv7Mr9TQ8zU |
|||
DNDwRz6onlI2cS4GhrwAnlpiaxu7AjMUWHtfBFGFrgn3PawjDQpsBZNcxw1QsLc0 |
|||
E0hFrWLOd0vDETEhoRge88N7a0jqK0Rd9cvRWnvjI+IsjQMLZzKufivIHPzI9K+9 |
|||
Wtp8iRHcaBr5DpsBjgsO7dqVRbsNyaWsdHdLt+CQSGXpv7P6fq3K6nJFTBeIgSfS |
|||
gflrHVKYZRkKDDDpX4yHNdnIqrvy4RU= |
|||
-----END CERTIFICATE----- |
|||
@ -0,0 +1,27 @@ |
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIIEpQIBAAKCAQEAvfCda4mh3Nlir1MAlGYdTv33kUDdMRZ1SKdhOAY/v1pNVDgz |
|||
1p4g2UHrCFZc4jyx6H0lrsLqQzOo6BhuAKVaUM8BUlaS0Vh5Zc4vFunOHUpaRLqM |
|||
GRZPTa3sfslxhuKXvGOUlTEvPhQ45QNQMg/rKp0D1UTeiwRK22POPntmbbE+rNsg |
|||
dUl85GfsR7EfimvJLvjf2nqLhe18vfU0nxXTszePdrwaptwSpdi9xQKsufLANDWK |
|||
A/zXtvq1rnaduBhaKp2fSYmznflQn+n+tKUPgB7/obcFIRjvCGKvrFjq+x3gonrD |
|||
7BEIedjSTLo50MlUksfWKqHuyLs/dEEaTHBjswIDAQABAoIBAQCSUyNzDPydXvsf |
|||
hhoUOParPAvU4tuETYDdD9Vdi7Lgf3jDQOjulbNIq/ec3KuBvrBwIrk9APvn+YxO |
|||
AUP9S2Vgi5jBDeDdVgNv4n90b3pSJk2UVQJI8V72wN5Ibnf/KeErSKvWo6V5daq/ |
|||
AuZtKsZIdd3WFtA62HuyuBjTGc23Alj1C0EKnN0Rx1uBwDvx/OVQ266Us/x8jJqW |
|||
ZxIOfcvfNzBQEa5hAzbQCReVaC+rBLRAcMM2yGP7aDa+8cRkwuVlSqpX8CXBdLoU |
|||
PqmU49etcW72Rb1AFt9WgEu1Oh9UYbHFSB+FEbO8IGcGBsuYHf9zkxQyjpy/iKyT |
|||
H5dTu7YBAoGBAOWqEGepZVrfB+P6X18n3vbJhgYmF0sa0mCmwkFYgk36yNqsZ8at |
|||
lQjm5mbn4wjEKHIcQ/T1taq73W471M+PxMnn0WTwoG5jsyarZGgy6/95YXiyZtQe |
|||
qgA4P3aKkCteRP22DjG7uxmm9Hoqx8Z31vfRTLAHN1IEHPHHkg/J3gPTAoGBANO4 |
|||
aqKeY4vcDvVkvxVbADrw++tZGwA+RuxfO4HKKru59VdA2PsAxhXwb3Dfejwj7hYW |
|||
yE9edHjGpMr1+dpf8YJYs7qjajHe1HxBOYqQGHycIdw+Gv56R4HpaS9eW3x8l/Pi |
|||
b4xnAodv2qIriACOe7br+rll4wKX46Wt64zdvpShAoGAT0r3HQM0Vjp4u/J+qRjX |
|||
9za+yjKuiiS5i9snaG5JlujGHhG2Rrc5pHgsBk17alRnbnZp1BJdZZQ1MFEB+aO2 |
|||
mssp1YLqsRJFEU3NfdhO+MaMq6JUtFnd8fN5ndDbU83ZXgtUPUGGqKWm9OL+VHyd |
|||
wLQHmSL0q6F16Ngxirf0qjcCgYEAtSmiJVA+gdhk/FmeoBlkEwtNpM50Kjsf2PaM |
|||
Jrzk4Al5A5Y7lFvPI8q+sOio4XklKsWH1VJPe2EOdZUQnGlocE6SS+u03MN9Mm1l |
|||
XUl7inTXDGwgEQx0z5b4KE4nHlhGdauWI5+pLFbrz8RL9Z32AkneGnIyU2/AnW46 |
|||
lijQAMECgYEAmgp/88ndIw49RCtMhYhtXQ87AsEAP6kzXQyKppDkn0os+xI5igIL |
|||
i/UDxB33hx3yjrUZwoGDV9MwlMhZNX5Tf5bwjPmmh1NR6KdEpPt5AkklX4s6uil2 |
|||
Bxl1P5l1jl/PbEYtv5LDZKIPANWRzViMSIWqjUWlbdqE7/vjx+Oo+cc= |
|||
-----END RSA PRIVATE KEY----- |
|||
@ -0,0 +1,27 @@ |
|||
-----BEGIN RSA PRIVATE KEY----- |
|||
MIIEowIBAAKCAQEAwJpG1MA3vp66i/APLsJSGZO+Bxwg41AFq7JChfZXhCELAeXs |
|||
RWfCRKNbupnUeJWkFrMYsxnUz6iBInZA8shDIePo6B4MkBDw/xt6xVVvMhBR2+Nj |
|||
tODvegRDxVzTw0bl9zMSPpRm2A48U0v1oVbm+P90qi4wtvBSZhFFyBwNPwPnOYZW |
|||
FytLvmjwKl8RyIwYAeAccR12SqnnJr0dy4V6FZoSZp3bFXymowdu5wynPPzkyB9k |
|||
l2+od50Tw10X8AfwuYvtNOLRLFXiIJGLIXAoC0sg3XlYnlD9qZtxAJg0o5rSxego |
|||
GPxAUnx/iQihVJO+WwOJPAghswXyHjnLCh8IBQIDAQABAoIBAHPQUSc9LkgBSks7 |
|||
XuXPE28t1+aOk3gcdkx4NGg5aQaal/PcPea+LaL4WAAs4AZidPjxWLjZn43+1SfT |
|||
09opcbS/Rx3Mc+FtTn0YGQrwBJ0mExMV+K6bU2Ubi2TyHKQfzciHfUEEG5Nve/ba |
|||
hikuCFVRxuVOQRzABcw6NqvNsmlg892lfw6/+RDwMBcz7ocwzmiOUoIxgjyFo9G4 |
|||
aJvRmHLij5892H6qveik+A/Xr+8leGQHiQET2wW/F9MFP5ypIT7aeE6remeZH7fG |
|||
f4/Zfei/TE4xK2ElNR/91byzeKIVY4vjtTndAiBuqpfYuICb40MC02LNW5Oe6VN2 |
|||
3mQ6EgECgYEA7O4ndBnbs/00gyTGyNg6I+3wRTibhNH4R8RZFJiLfKRKOlUiLhUo |
|||
+bQeO4bCQ6YY++TYDvMEXTlA3jow9R9Mj2AWc6bNmQmJd/065QyFHftywT66I+V4 |
|||
rz1ohSJyHXcv4DxqNk3o3Vb4N8GFjZKcodSgTv2Lk+9ipDYFcQiZop0CgYEA0BrF |
|||
SIyLTnjoVht/7RbIGEqhMQUiz5mx7qQ1TPB+YTG77G2xXJNg5d6S7WT4LN+cqbxN |
|||
YdndIbW4NdV7bH7FlG9q7jfkuZ+AY2BPU047tcDeyO0HYYEhVY+EyZqHci/26mvt |
|||
JrawdqS5HQS1y/rKfytm7YBGTvqoNZHvOHc6aokCgYEAxcjlbJkte+pyzMuFmiJP |
|||
HrFBczeXM+BoJ9j0GCpjvvAS+vEYsGl/pDvFRSHwx7I/hv/5kTkzOnNSAHGJbwbq |
|||
zYGEHJVxakC43k6pvI2gDnBa0pD/qHmmLnvP5dvkcU6Oy90DOUP+kc9JNJo7V/y8 |
|||
/qdWD7q+qwcaTETAdCSexE0CgYA/DN1Y7bwHOnqqHArWOmDFe1b7EyNI4rgWJYpA |
|||
lVy09eyJ5XInKj/hZV3+rujCL723b2XCj89/tx7osJWEeaRDJL6xDh4uXzT25uch |
|||
xkIw/w6Asc/aqtT+p00EB92hqwaUX76qTA+K4r1zHUo3UvSnMu8sZgDnTOpJ0L05 |
|||
zmXUgQKBgDT+IFrAzOty4B0mJncTCC/TulpW704bEZwNJfQSdtiBQr/vqoXygBQc |
|||
bHfpncpSfhzHB5lhRUv02TqXgl53D70nM7JD5nx98WYTTBxsbvxPlt4gBRZkfgq5 |
|||
tHKclAArc1SbfW5Z8oYyl7h33LQJK116QSyiIIGieH5VXNPwnqUs |
|||
-----END RSA PRIVATE KEY----- |
|||
@ -0,0 +1,29 @@ |
|||
include/master-slave.inc |
|||
[connection master] |
|||
Test case 1:- table name with one character latin name. |
|||
SET @s:=CONCAT("CREATE TABLE `",REPEAT(CHAR(131),1),"` (a INT)"); |
|||
PREPARE STMT FROM @s; |
|||
EXECUTE stmt; |
|||
SET @s:=CONCAT("INSERT INTO `",REPEAT(CHAR(131),1),"` VALUES (1)"); |
|||
PREPARE STMT FROM @s; |
|||
EXECUTE stmt; |
|||
SET @s:=CONCAT("DROP TABLE `",REPEAT(CHAR(131),1), "`"); |
|||
PREPARE STMT FROM @s; |
|||
EXECUTE stmt; |
|||
Test case 2:- table name and database names with one character latin name. |
|||
SET @s:=CONCAT("CREATE DATABASE `",REPEAT(CHAR(131),1),"`"); |
|||
PREPARE STMT FROM @s; |
|||
EXECUTE stmt; |
|||
SET @s:=CONCAT("CREATE TABLE `",REPEAT(CHAR(131),1),"`.`",REPEAT(CHAR(131),1),"` (a INT)"); |
|||
PREPARE STMT FROM @s; |
|||
EXECUTE stmt; |
|||
SET @s:=CONCAT("INSERT INTO `",REPEAT(CHAR(131),1),"`.`",REPEAT(CHAR(131),1),"` VALUES (1)"); |
|||
PREPARE STMT FROM @s; |
|||
EXECUTE stmt; |
|||
SET @s:=CONCAT("DROP TABLE `",REPEAT(CHAR(131),1),"`.`",REPEAT(CHAR(131),1), "`"); |
|||
PREPARE STMT FROM @s; |
|||
EXECUTE stmt; |
|||
SET @s:=CONCAT("DROP DATABASE `",REPEAT(CHAR(131),1),"`"); |
|||
PREPARE STMT FROM @s; |
|||
EXECUTE stmt; |
|||
include/rpl_end.inc |
|||
@ -0,0 +1,53 @@ |
|||
include/master-slave.inc |
|||
[connection master] |
|||
CREATE TABLE t1(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB; |
|||
CREATE TABLE t2(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB; |
|||
CREATE TRIGGER trig1 AFTER INSERT ON t1 |
|||
FOR EACH ROW |
|||
INSERT INTO t2(i) VALUES(new.i); |
|||
START TRANSACTION; |
|||
INSERT INTO t2(i) VALUES (1); |
|||
ROLLBACK; |
|||
INSERT INTO t1(i) VALUES(2); |
|||
START TRANSACTION; |
|||
LOCK TABLES t1 WRITE, t2 WRITE; |
|||
INSERT INTO t1(i) VALUES(3); |
|||
UNLOCK TABLES; |
|||
COMMIT; |
|||
include/diff_tables.inc [master:t1, slave:t1] |
|||
include/diff_tables.inc [master:t2, slave:t2] |
|||
DROP TABLE t1,t2; |
|||
CREATE TABLE t1(i INT) ENGINE=INNODB; |
|||
CREATE TABLE t2(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB; |
|||
INSERT INTO t1 values (1), (2), (3); |
|||
START TRANSACTION; |
|||
INSERT INTO t2(i) VALUES (1); |
|||
ROLLBACK; |
|||
INSERT INTO t2(i) SELECT i FROM t1; |
|||
START TRANSACTION; |
|||
LOCK TABLES t2 WRITE, t1 READ; |
|||
INSERT INTO t2(i) SELECT i FROM t1; |
|||
UNLOCK TABLES; |
|||
COMMIT; |
|||
include/diff_tables.inc [master:t1, slave:t1] |
|||
include/diff_tables.inc [master:t2, slave:t2] |
|||
DROP TABLE t1,t2; |
|||
CREATE TABLE t1(i int, id INT AUTO_INCREMENT, PRIMARY KEY (i, id)) ENGINE=MYISAM; |
|||
INSERT INTO t1 (i) values (1); |
|||
START TRANSACTION; |
|||
LOCK TABLES t1 WRITE; |
|||
INSERT INTO t1 (i) values (2); |
|||
UNLOCK TABLES; |
|||
COMMIT; |
|||
include/diff_tables.inc [master:t1, slave:t1] |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1(i INT, j INT, UNIQUE KEY(i), UNIQUE KEY(j)) ENGINE=INNODB; |
|||
INSERT INTO t1 (i,j) VALUES (1,2) ON DUPLICATE KEY UPDATE j=j+1; |
|||
START TRANSACTION; |
|||
LOCK TABLES t1 WRITE; |
|||
INSERT INTO t1 (i,j) VALUES (1,2) ON DUPLICATE KEY UPDATE j=j+1; |
|||
UNLOCK TABLES; |
|||
COMMIT; |
|||
include/diff_tables.inc [master:t1, slave:t1] |
|||
DROP TABLE t1; |
|||
include/rpl_end.inc |
|||
@ -0,0 +1,87 @@ |
|||
############################################################################### |
|||
# Bug#21205695 DROP TABLE MAY CAUSE SLAVES TO BREAK |
|||
# |
|||
# Problem: |
|||
# ======== |
|||
# 1) Drop table queries are re-generated by server |
|||
# before writing the events(queries) into binlog |
|||
# for various reasons. If table name/db name contains |
|||
# a non regular characters (like latin characters), |
|||
# the generated query is wrong. Hence it breaks the |
|||
# replication. |
|||
# 2) In the edge case, when table name contains |
|||
# 64 latin characters (latin takes 2 bytes), server is |
|||
# throwing an assert (M_TBLLEN < 128) |
|||
# |
|||
# 3) In the edge case, when db name contains 64 latin |
|||
# characters, binlog contents are interpreted wrongly |
|||
# which is leading to replication issues. |
|||
# |
|||
############################################################################### |
|||
|
|||
--source include/not_windows.inc |
|||
--source include/master-slave.inc |
|||
|
|||
--let iter=1 |
|||
# Change iteration to 4 after fixing Bug #22280214 |
|||
while ($iter <= 2) |
|||
{ |
|||
--connection master |
|||
if ($iter == 1) |
|||
{ |
|||
--echo Test case 1:- table name with one character latin name. |
|||
--let $tblname= REPEAT(CHAR(131),1) |
|||
} |
|||
if ($iter == 2) |
|||
{ |
|||
--echo Test case 2:- table name and database names with one character latin name. |
|||
--let $tblname= REPEAT(CHAR(131),1),"`.`",REPEAT(CHAR(131),1) |
|||
--eval SET @s:=CONCAT("CREATE DATABASE `",REPEAT(CHAR(131),1),"`") |
|||
PREPARE STMT FROM @s; EXECUTE stmt; |
|||
} |
|||
# After fixing Bug #22280214 DATADIR LOCATION IS LIMITING |
|||
# IDENTIFIER MAX LENGTH, the following two tests (iter 3 and 4) can be |
|||
# uncommented. |
|||
#if ($iter == 3) |
|||
#{ |
|||
# --echo Test case 3:- table name and database names with 64 latin characters name. |
|||
# --let $tblname= REPEAT(CHAR(131),64),"`.`", REPEAT(CHAR(131),64) |
|||
# --eval SET @s:=CONCAT("CREATE DATABASE `",REPEAT(CHAR(131),64),"`") |
|||
# PREPARE STMT FROM @s; EXECUTE stmt; |
|||
#} |
|||
#if ($iter == 4) |
|||
#{ |
|||
# --echo Test case 4:- table name and database names with 64 Euro(€) characters. |
|||
# --let $tblname= REPEAT(CHAR(226,130,172),64),"`.`", REPEAT(CHAR(226,130,172),64) |
|||
# --eval SET @s:=CONCAT("CREATE DATABASE `",REPEAT(CHAR(226,130,172),64),"`") |
|||
# PREPARE STMT FROM @s; EXECUTE stmt; |
|||
#} |
|||
--eval SET @s:=CONCAT("CREATE TABLE `",$tblname,"` (a INT)") |
|||
PREPARE STMT FROM @s; EXECUTE stmt; |
|||
--eval SET @s:=CONCAT("INSERT INTO `",$tblname,"` VALUES (1)") |
|||
PREPARE STMT FROM @s; EXECUTE stmt; |
|||
--eval SET @s:=CONCAT("DROP TABLE `",$tblname, "`") |
|||
PREPARE STMT FROM @s; EXECUTE stmt; |
|||
if ($iter == 2) |
|||
{ |
|||
--eval SET @s:=CONCAT("DROP DATABASE `",REPEAT(CHAR(131),1),"`") |
|||
PREPARE STMT FROM @s; EXECUTE stmt; |
|||
} |
|||
# After fixing Bug #22280214 DATADIR LOCATION IS LIMITING |
|||
# IDENTIFIER MAX LENGTH, the following two tests (iter 3 and 4) can be |
|||
# uncommented. |
|||
#if ($iter == 3) |
|||
#{ |
|||
# --eval SET @s:=CONCAT("DROP DATABASE `",REPEAT(CHAR(131),64),"`") |
|||
# PREPARE STMT FROM @s; EXECUTE stmt; |
|||
#} |
|||
#if ($iter == 4) |
|||
#{ |
|||
# --eval SET @s:=CONCAT("DROP DATABASE `",REPEAT(CHAR(226,130,172),64),"`") |
|||
# PREPARE STMT FROM @s; EXECUTE stmt; |
|||
#} |
|||
--sync_slave_with_master |
|||
--inc $iter |
|||
} |
|||
|
|||
--source include/rpl_end.inc |
|||
@ -0,0 +1,176 @@ |
|||
################################################################################ |
|||
# Bug#17047208 REPLICATION DIFFERENCE FOR MULTIPLE TRIGGERS |
|||
# Problem: If DML invokes a trigger or a stored function that inserts into an |
|||
# AUTO_INCREMENT column, that DML has to be marked as 'unsafe' statement. If the |
|||
# tables are locked in the transaction prior to DML statement (using LOCK |
|||
# TABLES), then the DML statement is not marked as 'unsafe' statement. |
|||
|
|||
# Steps to reproduce the reported test case (BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS) |
|||
# Case-1: |
|||
# > Create a trigger on a table and do a insert in the trigger that updates |
|||
# auto increment column |
|||
# > A DML that executes the trigger in step.1 and check that DML is marked |
|||
# as unsafe and DML is written into binlog using row format (in MBR) |
|||
# > Execute the step 2 by locking the required tables prior to DML and check |
|||
# that DML is marked as unsafe and DML is written into binlog using row |
|||
# format (in MBR) |
|||
# |
|||
# This test script also adds test cases to cover few other unsafe statements. |
|||
# Case-2: BINLOG_STMT_UNSAFE_WRITE_AUTOINC_SELECT |
|||
# Case-3: BINLOG_STMT_UNSAFE_AUTOINC_NOT_FIRST |
|||
# Case-4: BINLOG_STMT_UNSAFE_INSERT_TWO_KEYS |
|||
################################################################################ |
|||
|
|||
--source include/have_innodb.inc |
|||
--source include/have_binlog_format_mixed.inc |
|||
--source include/master-slave.inc |
|||
|
|||
# Case-1: BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS |
|||
# Statement is unsafe because it invokes a trigger or a |
|||
# stored function that inserts into an AUTO_INCREMENT column. |
|||
|
|||
# Step-1.1: Create two tables, one with AUTO_INCREMENT column. |
|||
CREATE TABLE t1(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB; |
|||
CREATE TABLE t2(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB; |
|||
|
|||
# Step-1.2: Create a trigger that inserts into an AUTO_INCREMENT column. |
|||
CREATE TRIGGER trig1 AFTER INSERT ON t1 |
|||
FOR EACH ROW |
|||
INSERT INTO t2(i) VALUES(new.i); |
|||
|
|||
# Step-1.3: Create some gap in auto increment value on master's t2 table |
|||
# but not on slave (by doing rollback). Just in case if the unsafe statements |
|||
# are written in statement format, diff tables will fail. |
|||
START TRANSACTION; |
|||
INSERT INTO t2(i) VALUES (1); |
|||
ROLLBACK; |
|||
|
|||
# Step-1.4: Insert a tuple into table t1 that triggers trig1 which inserts |
|||
# into an AUTO_INCREMENT column. |
|||
INSERT INTO t1(i) VALUES(2); |
|||
|
|||
# Step-1.5: Repeat step 1.4 but using 'LOCK TABLES' logic. |
|||
START TRANSACTION; |
|||
LOCK TABLES t1 WRITE, t2 WRITE; |
|||
INSERT INTO t1(i) VALUES(3); |
|||
UNLOCK TABLES; |
|||
COMMIT; |
|||
|
|||
# Step-1.6: Sync slave with master |
|||
--sync_slave_with_master |
|||
|
|||
# Step-1.7: Diff master-slave tables to make sure everything is in sync. |
|||
--let $diff_tables=master:t1, slave:t1 |
|||
--source include/diff_tables.inc |
|||
|
|||
--let $diff_tables=master:t2, slave:t2 |
|||
--source include/diff_tables.inc |
|||
|
|||
# Step-1.8: Cleanup |
|||
--connection master |
|||
DROP TABLE t1,t2; |
|||
|
|||
# Case-2: BINLOG_STMT_UNSAFE_WRITE_AUTOINC_SELECT |
|||
# Statements writing to a table with an auto-increment column after selecting |
|||
# from another table are unsafe because the order in which rows are retrieved |
|||
# determines what (if any) rows will be written. This order cannot be |
|||
# predicted and may differ on master and the slave. |
|||
|
|||
# Step-2.1: Create two tables, one with AUTO_INCREMENT column. |
|||
CREATE TABLE t1(i INT) ENGINE=INNODB; |
|||
CREATE TABLE t2(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB; |
|||
|
|||
# Step-2.2: Create some tuples in table t1. |
|||
INSERT INTO t1 values (1), (2), (3); |
|||
|
|||
# Step-2.3: Create some gap in auto increment value on master's t2 table |
|||
# but not on slave (by doing rollback). Just in case if the unsafe statements |
|||
# are written in statement format, diff tables will fail. |
|||
START TRANSACTION; |
|||
INSERT INTO t2(i) VALUES (1); |
|||
ROLLBACK; |
|||
|
|||
# Step-2.4: Insert into t2 (table with an auto-increment) by selecting tuples |
|||
# from table t1. |
|||
INSERT INTO t2(i) SELECT i FROM t1; |
|||
|
|||
# Step-2.5: Repeat step 2.4 but now with 'LOCK TABLES' logic. |
|||
START TRANSACTION; |
|||
LOCK TABLES t2 WRITE, t1 READ; |
|||
INSERT INTO t2(i) SELECT i FROM t1; |
|||
UNLOCK TABLES; |
|||
COMMIT; |
|||
|
|||
# Step-2.6: Sync slave with master |
|||
--sync_slave_with_master |
|||
|
|||
# Step-2.7: Diff master-slave tables to make sure everything is in sync. |
|||
--let $diff_tables=master:t1, slave:t1 |
|||
--source include/diff_tables.inc |
|||
|
|||
--let $diff_tables=master:t2, slave:t2 |
|||
--source include/diff_tables.inc |
|||
|
|||
# Step-2.8: Cleanup |
|||
--connection master |
|||
DROP TABLE t1,t2; |
|||
|
|||
# Case-3: BINLOG_STMT_UNSAFE_AUTOINC_NOT_FIRST |
|||
# INSERT into autoincrement field which is not the first part in the |
|||
# composed primary key is unsafe |
|||
# |
|||
# Step-3.1: Create a table with auto increment column and a composed primary key |
|||
# (second column is auto increment column). Such a definition is allowed only |
|||
# with 'myisam' engine. |
|||
CREATE TABLE t1(i int, id INT AUTO_INCREMENT, PRIMARY KEY (i, id)) ENGINE=MYISAM; |
|||
|
|||
# Step-3.2: Inserting into such a table is unsafe. |
|||
INSERT INTO t1 (i) values (1); |
|||
|
|||
# Step-3.3: Repeat step 3.2, now with 'LOCK TABLES' logic. |
|||
START TRANSACTION; |
|||
LOCK TABLES t1 WRITE; |
|||
INSERT INTO t1 (i) values (2); |
|||
UNLOCK TABLES; |
|||
COMMIT; |
|||
|
|||
# Step-3.4: Sync slave with master |
|||
--sync_slave_with_master |
|||
|
|||
# Step-3.5: Diff master-slave tables to make sure everything is in sync. |
|||
--let $diff_tables=master:t1, slave:t1 |
|||
--source include/diff_tables.inc |
|||
|
|||
# Step-3.6: Cleanup |
|||
--connection master |
|||
DROP TABLE t1; |
|||
|
|||
# Case-4: BINLOG_STMT_UNSAFE_INSERT_TWO_KEYS |
|||
# INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY |
|||
# is unsafe Statement |
|||
|
|||
# Step-4.1: Create a table with two unique keys |
|||
CREATE TABLE t1(i INT, j INT, UNIQUE KEY(i), UNIQUE KEY(j)) ENGINE=INNODB; |
|||
|
|||
# Step-4.2: Inserting into such a table is unsafe. |
|||
INSERT INTO t1 (i,j) VALUES (1,2) ON DUPLICATE KEY UPDATE j=j+1; |
|||
|
|||
# Step-4.3: Repeat step 3.2, now with 'LOCK TABLES' logic. |
|||
START TRANSACTION; |
|||
LOCK TABLES t1 WRITE; |
|||
INSERT INTO t1 (i,j) VALUES (1,2) ON DUPLICATE KEY UPDATE j=j+1; |
|||
UNLOCK TABLES; |
|||
COMMIT; |
|||
|
|||
# Step-4.4: Sync slave with master |
|||
--sync_slave_with_master |
|||
|
|||
# Step-4.5: Diff master-slave tables to make sure everything is in sync. |
|||
--let $diff_tables=master:t1, slave:t1 |
|||
--source include/diff_tables.inc |
|||
|
|||
# Step-4.6: Cleanup |
|||
--connection master |
|||
DROP TABLE t1; |
|||
|
|||
--source include/rpl_end.inc |
|||
@ -0,0 +1,43 @@ |
|||
# Want to skip this test from Valgrind execution |
|||
--source include/no_valgrind_without_big.inc |
|||
# This test should work in embedded server after we fix mysqltest |
|||
-- source include/not_embedded.inc |
|||
-- source include/have_ssl_communication.inc |
|||
# Save the initial number of concurrent sessions |
|||
--source include/count_sessions.inc |
|||
|
|||
let $ssl_verify_fail_path = --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-key=$MYSQL_TEST_DIR/std_data/server-key-verify-fail.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/server-cert-verify-fail.pem; |
|||
let $ssl_verify_pass_path = --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-key=$MYSQL_TEST_DIR/std_data/server-key-verify-pass.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/server-cert-verify-pass.pem; |
|||
|
|||
--echo #T1: Host name (/CN=localhost/) as OU name in the server certificate, server certificate verification should fail. |
|||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect |
|||
--shutdown_server |
|||
--source include/wait_until_disconnected.inc |
|||
|
|||
--exec echo "restart:" $ssl_verify_fail_path > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect |
|||
--enable_reconnect |
|||
--source include/wait_until_connected_again.inc |
|||
|
|||
--error 1 |
|||
--exec $MYSQL --protocol=tcp --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-verify-server-cert -e "SHOW STATUS like 'Ssl_version'" |
|||
|
|||
--echo #T2: Host name (localhost) as common name in the server certificate, server certificate verification should pass. |
|||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect |
|||
--shutdown_server |
|||
--source include/wait_until_disconnected.inc |
|||
|
|||
--exec echo "restart:" $ssl_verify_pass_path > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect |
|||
--enable_reconnect |
|||
--source include/wait_until_connected_again.inc |
|||
|
|||
--replace_result TLSv1.2 TLS_VERSION TLSv1.1 TLS_VERSION TLSv1 TLS_VERSION |
|||
--exec $MYSQL --protocol=tcp --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-verify-server-cert -e "SHOW STATUS like 'Ssl_version'" |
|||
|
|||
--echo # restart server using restart |
|||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect |
|||
--shutdown_server |
|||
--source include/wait_until_disconnected.inc |
|||
|
|||
--exec echo "restart: " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect |
|||
--enable_reconnect |
|||
--source include/wait_until_connected_again.inc |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue