Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDEV-29562 Spider table charset error should happen correctly.
When trying to create a spider table with banned charsets including utf32, utf16, ucs2 and utf16le[1], spider should emit an error immediately, rather than wait until a separate statement that establishes a connection (e.g. SELECT). This also applies to ALTER TABLE statement that changes charsets. [1] https://mariadb.com/kb/en/server-system-variables/#character_set_client Signed-off-by: Yuchen Pei <yuchen.pei@mariadb.com> Reviewed-by: Nayuta Yanagisawa <nayuta.yanagisawa@mariadb.com>
- Loading branch information
1 parent
e9e6c7a
commit 3f63aa1
Showing
4 changed files
with
114 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
47 changes: 47 additions & 0 deletions
47
storage/spider/mysql-test/spider/bugfix/r/mdev_29562.result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# | ||
# MDEV-29562 Spider table with charset utf32/utf16/ucs2 tries to set client charset to unsupported value | ||
# | ||
for master_1 | ||
for child2 | ||
child2_1 | ||
child2_2 | ||
child2_3 | ||
for child3 | ||
connection child2_1; | ||
CREATE DATABASE auto_test_remote; | ||
USE auto_test_remote; | ||
CREATE TABLE tbl_a ( | ||
a INT | ||
) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||
connection master_1; | ||
CREATE DATABASE auto_test_local; | ||
USE auto_test_local; | ||
CREATE TABLE tbl_a ( | ||
a INT | ||
) ENGINE=Spider CHARSET utf32 COMMENT='table "tbl_a", srv "s_2_1"'; | ||
ERROR HY000: Table storage engine 'SPIDER' does not support the create option 'CHARSET utf32' | ||
ALTER DATABASE auto_test_local CHARSET="ucs2"; | ||
CREATE TABLE tbl_a ( | ||
a INT | ||
) ENGINE=Spider COMMENT='table "tbl_a", srv "s_2_1"'; | ||
ERROR HY000: Table storage engine 'SPIDER' does not support the create option 'CHARSET ucs2' | ||
CREATE TABLE tbl_a ( | ||
a INT | ||
) ENGINE=Spider CHARSET utf8 COMMENT='table "tbl_a", srv "s_2_1"'; | ||
SELECT * FROM tbl_a; | ||
a | ||
ALTER TABLE tbl_a CONVERT TO CHARACTER SET utf16; | ||
ERROR HY000: Table storage engine 'SPIDER' does not support the create option 'CHARSET utf16' | ||
ALTER TABLE tbl_a CONVERT TO CHARACTER SET utf16le; | ||
ERROR HY000: Table storage engine 'SPIDER' does not support the create option 'CHARSET utf16le' | ||
ALTER TABLE tbl_a CONVERT TO CHARACTER SET latin1; | ||
connection master_1; | ||
DROP DATABASE IF EXISTS auto_test_local; | ||
connection child2_1; | ||
DROP DATABASE IF EXISTS auto_test_remote; | ||
for master_1 | ||
for child2 | ||
child2_1 | ||
child2_2 | ||
child2_3 | ||
for child3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
!include include/default_mysqld.cnf | ||
!include ../my_1_1.cnf | ||
!include ../my_2_1.cnf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
--echo # | ||
--echo # MDEV-29562 Spider table with charset utf32/utf16/ucs2 tries to set client charset to unsupported value | ||
--echo # | ||
|
||
--disable_query_log | ||
--disable_result_log | ||
--source ../../t/test_init.inc | ||
--enable_result_log | ||
--enable_query_log | ||
|
||
--connection child2_1 | ||
CREATE DATABASE auto_test_remote; | ||
USE auto_test_remote; | ||
eval CREATE TABLE tbl_a ( | ||
a INT | ||
) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; | ||
|
||
--connection master_1 | ||
CREATE DATABASE auto_test_local; | ||
USE auto_test_local; | ||
--error ER_ILLEGAL_HA_CREATE_OPTION | ||
eval CREATE TABLE tbl_a ( | ||
a INT | ||
) $MASTER_1_ENGINE CHARSET utf32 COMMENT='table "tbl_a", srv "s_2_1"'; | ||
|
||
ALTER DATABASE auto_test_local CHARSET="ucs2"; | ||
--error ER_ILLEGAL_HA_CREATE_OPTION | ||
eval CREATE TABLE tbl_a ( | ||
a INT | ||
) $MASTER_1_ENGINE COMMENT='table "tbl_a", srv "s_2_1"'; | ||
|
||
eval CREATE TABLE tbl_a ( | ||
a INT | ||
) $MASTER_1_ENGINE CHARSET utf8 COMMENT='table "tbl_a", srv "s_2_1"'; | ||
SELECT * FROM tbl_a; | ||
|
||
--error ER_ILLEGAL_HA_CREATE_OPTION | ||
ALTER TABLE tbl_a CONVERT TO CHARACTER SET utf16; | ||
--error ER_ILLEGAL_HA_CREATE_OPTION | ||
ALTER TABLE tbl_a CONVERT TO CHARACTER SET utf16le; | ||
|
||
ALTER TABLE tbl_a CONVERT TO CHARACTER SET latin1; | ||
|
||
--connection master_1 | ||
DROP DATABASE IF EXISTS auto_test_local; | ||
|
||
--connection child2_1 | ||
DROP DATABASE IF EXISTS auto_test_remote; | ||
|
||
--disable_query_log | ||
--disable_result_log | ||
--source ../t/test_deinit.inc | ||
--enable_query_log | ||
--enable_result_log |