summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2022-11-22 14:03:23 +0400
committerAlexander Barkov <bar@mariadb.com>2022-11-22 14:03:23 +0400
commit931549ff6685f370f6b2fc356769dcab97f0c6e4 (patch)
tree810d9618bb1aaac327fcc815c5686322c24aa57d /mysql-test
parent3e0fd5e8a72ec8c6d48153113fb2987c2b456d17 (diff)
downloadmariadb-git-931549ff6685f370f6b2fc356769dcab97f0c6e4.tar.gz
MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
Also fixes: MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit The "strnncollsp_nchars" virtual function pointer for tis620_thai_nopad_ci was incorrectly initialized to a generic function my_strnncollsp_nchars_generic_8bit(), which crashed on assert. Implementing a tis620 specific function version.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/main/ctype_tis620.result25
-rw-r--r--mysql-test/main/ctype_tis620.test31
-rw-r--r--mysql-test/suite/innodb/r/innodb_ctype_tis620.result66
-rw-r--r--mysql-test/suite/innodb/t/innodb_ctype_tis620.test62
-rw-r--r--mysql-test/suite/parts/r/part_ctype_tis620.result47
-rw-r--r--mysql-test/suite/parts/t/part_ctype_tis620.test52
6 files changed, 283 insertions, 0 deletions
diff --git a/mysql-test/main/ctype_tis620.result b/mysql-test/main/ctype_tis620.result
index cb27b857f43..5655eb124b2 100644
--- a/mysql-test/main/ctype_tis620.result
+++ b/mysql-test/main/ctype_tis620.result
@@ -4432,3 +4432,28 @@ HEX(WEIGHT_STRING(_tis620 'a\0b' COLLATE tis620_thai_nopad_ci))
#
# End of 10.2 tests
#
+#
+# Start of 10.4 tests
+#
+#
+# MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
+#
+CREATE OR REPLACE TABLE t1
+(
+a VARCHAR(250) COLLATE tis620_thai_nopad_ci,
+UNIQUE KEY(a(100)) USING HASH
+) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('a'),('A');
+ERROR 23000: Duplicate entry 'A' for key 'a'
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1
+(
+a CHAR(250) COLLATE tis620_thai_nopad_ci,
+UNIQUE KEY(a(100)) USING HASH
+) ENGINE=MyISAM;
+INSERT INTO t1 VALUES ('a'),('A');
+ERROR 23000: Duplicate entry 'A' for key 'a'
+DROP TABLE t1;
+#
+# End of 10.4 tests
+#
diff --git a/mysql-test/main/ctype_tis620.test b/mysql-test/main/ctype_tis620.test
index f432b23d71c..39908b995b2 100644
--- a/mysql-test/main/ctype_tis620.test
+++ b/mysql-test/main/ctype_tis620.test
@@ -223,3 +223,34 @@ SELECT HEX(WEIGHT_STRING(_tis620 'a\0b' COLLATE tis620_thai_nopad_ci));
--echo #
--echo # End of 10.2 tests
--echo #
+
+--echo #
+--echo # Start of 10.4 tests
+--echo #
+
+--echo #
+--echo # MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
+--echo #
+
+CREATE OR REPLACE TABLE t1
+(
+ a VARCHAR(250) COLLATE tis620_thai_nopad_ci,
+ UNIQUE KEY(a(100)) USING HASH
+) ENGINE=MyISAM;
+--error ER_DUP_ENTRY
+INSERT INTO t1 VALUES ('a'),('A');
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1
+
+(
+ a CHAR(250) COLLATE tis620_thai_nopad_ci,
+ UNIQUE KEY(a(100)) USING HASH
+) ENGINE=MyISAM;
+--error ER_DUP_ENTRY
+INSERT INTO t1 VALUES ('a'),('A');
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.4 tests
+--echo #
diff --git a/mysql-test/suite/innodb/r/innodb_ctype_tis620.result b/mysql-test/suite/innodb/r/innodb_ctype_tis620.result
index 07de1892a19..b58c7952331 100644
--- a/mysql-test/suite/innodb/r/innodb_ctype_tis620.result
+++ b/mysql-test/suite/innodb/r/innodb_ctype_tis620.result
@@ -26,3 +26,69 @@ DROP TABLE t1;
#
# End of 10.2 tests
#
+#
+# Start of 10.4 tests
+#
+#
+# MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
+#
+CREATE TABLE t1 (id INT PRIMARY KEY, a CHAR(8), KEY(a)) ENGINE=InnoDB COLLATE tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
+DROP TABLE t1;
+#
+# MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
+#
+CREATE TABLE t1 (a INT KEY,b INT,c CHAR,KEY(b),KEY(c)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
+INSERT INTO t1 VALUES (3,4,4);
+DROP TABLE t1;
+CREATE TABLE t1 (C1 CHAR KEY,B1 BIT,B2 BIT,C2 CHAR DEFAULT'') ROW_FORMAT=DYNAMIC COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
+SELECT HEX(c1),HEX (c2) FROM t1 WHERE c1>=''AND c1<''AND c2=''LIMIT 2;
+HEX(c1) HEX (c2)
+DROP TABLE t1;
+SET sql_mode='';
+CREATE TABLE t1 (a INT UNSIGNED,b INT,c CHAR(1),d BINARY (1),e VARCHAR(1),f VARBINARY(1),g BLOB,h BLOB,id INT,KEY(b),KEY(e)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
+INSERT INTO t1 VALUES (4386060749083099108,157,0,0,0,0,0,0,12);
+Warnings:
+Warning 1264 Out of range value for column 'a' at row 1
+INSERT INTO t1 VALUES (104,15158706241929488558,0,0,0,0,0,0,13);
+Warnings:
+Warning 1264 Out of range value for column 'b' at row 1
+SELECT GROUP_CONCAT(DISTINCT a,b ORDER BY c,b) FROM t1;
+GROUP_CONCAT(DISTINCT a,b ORDER BY c,b)
+4294967295157,1042147483647
+DROP TABLE t1;
+SET sql_mode=DEFAULT;
+CREATE TABLE t1 (a CHAR(9),b CHAR(7)) COLLATE=tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0);
+ALTER TABLE t1 ADD INDEX kb (b),ADD INDEX kab (a,b),ALGORITHM=INPLACE;
+DROP TABLE t1;
+SET sql_mode='';
+CREATE TABLE t1 (a INT UNSIGNED,b INT UNSIGNED,c CHAR(1),d CHAR(1),e VARCHAR(1),f VARCHAR(1),g BLOB,h BLOB,id INT,KEY(b),KEY(e)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (15842995496588415350,5339224446865937973,0,0,0,0,0,0,4);
+Warnings:
+Warning 1264 Out of range value for column 'a' at row 1
+Warning 1264 Out of range value for column 'b' at row 1
+INSERT INTO t1 VALUES (8118894032862615316,5299008984764990929,0,0,0,0,0,0,1);
+Warnings:
+Warning 1264 Out of range value for column 'a' at row 1
+Warning 1264 Out of range value for column 'b' at row 1
+SELECT GROUP_CONCAT(DISTINCT a,c ORDER BY a) FROM t1;
+GROUP_CONCAT(DISTINCT a,c ORDER BY a)
+42949672950
+DROP TABLE t1;
+SET sql_mode=DEFAULT;
+CREATE TABLE t1 (a CHAR,b CHAR,KEY(a,b)) ROW_FORMAT=DYNAMIC COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
+INSERT INTO t1 VALUES (0,0);
+DROP TABLE t1;
+CREATE TABLE t1 (a CHAR,b CHAR) COLLATE=tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (0,0);
+SELECT a,SUM(DISTINCT a),MIN(b) FROM t1 GROUP BY a;
+a SUM(DISTINCT a) MIN(b)
+0 0 0
+DROP TABLE t1;
+CREATE TABLE t1 (a CHAR,KEY(a)) ENGINE=InnoDB COLLATE=tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (0);
+DROP TABLE t1;
+#
+# End of 10.4 tests
+#
diff --git a/mysql-test/suite/innodb/t/innodb_ctype_tis620.test b/mysql-test/suite/innodb/t/innodb_ctype_tis620.test
index fee1b283ac3..c5fc8238e10 100644
--- a/mysql-test/suite/innodb/t/innodb_ctype_tis620.test
+++ b/mysql-test/suite/innodb/t/innodb_ctype_tis620.test
@@ -27,3 +27,65 @@ DROP TABLE t1;
--echo #
--echo # End of 10.2 tests
--echo #
+
+--echo #
+--echo # Start of 10.4 tests
+--echo #
+
+--echo #
+--echo # MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
+--echo #
+
+CREATE TABLE t1 (id INT PRIMARY KEY, a CHAR(8), KEY(a)) ENGINE=InnoDB COLLATE tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
+--echo #
+
+CREATE TABLE t1 (a INT KEY,b INT,c CHAR,KEY(b),KEY(c)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
+INSERT INTO t1 VALUES (3,4,4);
+DROP TABLE t1;
+
+CREATE TABLE t1 (C1 CHAR KEY,B1 BIT,B2 BIT,C2 CHAR DEFAULT'') ROW_FORMAT=DYNAMIC COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
+SELECT HEX(c1),HEX (c2) FROM t1 WHERE c1>=''AND c1<''AND c2=''LIMIT 2;
+DROP TABLE t1;
+
+SET sql_mode='';
+CREATE TABLE t1 (a INT UNSIGNED,b INT,c CHAR(1),d BINARY (1),e VARCHAR(1),f VARBINARY(1),g BLOB,h BLOB,id INT,KEY(b),KEY(e)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
+INSERT INTO t1 VALUES (4386060749083099108,157,0,0,0,0,0,0,12);
+INSERT INTO t1 VALUES (104,15158706241929488558,0,0,0,0,0,0,13);
+SELECT GROUP_CONCAT(DISTINCT a,b ORDER BY c,b) FROM t1;
+DROP TABLE t1;
+SET sql_mode=DEFAULT;
+
+CREATE TABLE t1 (a CHAR(9),b CHAR(7)) COLLATE=tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0);
+ALTER TABLE t1 ADD INDEX kb (b),ADD INDEX kab (a,b),ALGORITHM=INPLACE;
+DROP TABLE t1;
+
+SET sql_mode='';
+CREATE TABLE t1 (a INT UNSIGNED,b INT UNSIGNED,c CHAR(1),d CHAR(1),e VARCHAR(1),f VARCHAR(1),g BLOB,h BLOB,id INT,KEY(b),KEY(e)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (15842995496588415350,5339224446865937973,0,0,0,0,0,0,4);
+INSERT INTO t1 VALUES (8118894032862615316,5299008984764990929,0,0,0,0,0,0,1);
+SELECT GROUP_CONCAT(DISTINCT a,c ORDER BY a) FROM t1;
+DROP TABLE t1;
+SET sql_mode=DEFAULT;
+
+CREATE TABLE t1 (a CHAR,b CHAR,KEY(a,b)) ROW_FORMAT=DYNAMIC COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
+INSERT INTO t1 VALUES (0,0);
+DROP TABLE t1;
+
+CREATE TABLE t1 (a CHAR,b CHAR) COLLATE=tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (0,0);
+SELECT a,SUM(DISTINCT a),MIN(b) FROM t1 GROUP BY a;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a CHAR,KEY(a)) ENGINE=InnoDB COLLATE=tis620_thai_nopad_ci;
+INSERT INTO t1 VALUES (0);
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.4 tests
+--echo #
diff --git a/mysql-test/suite/parts/r/part_ctype_tis620.result b/mysql-test/suite/parts/r/part_ctype_tis620.result
new file mode 100644
index 00000000000..48a8a95f40e
--- /dev/null
+++ b/mysql-test/suite/parts/r/part_ctype_tis620.result
@@ -0,0 +1,47 @@
+#
+# MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
+#
+CREATE TABLE t1 (
+a CHAR
+) COLLATE=tis620_thai_nopad_ci
+PARTITION BY RANGE COLUMNS (a)
+(
+PARTITION p0 VALUES LESS THAN (''),
+PARTITION p VALUES LESS THAN ('')
+);
+ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
+CREATE TABLE t1 (
+a CHAR
+) COLLATE=tis620_thai_nopad_ci
+PARTITION BY RANGE COLUMNS (a)
+(
+PARTITION p0 VALUES LESS THAN (''),
+PARTITION p VALUES LESS THAN (' ')
+);
+ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
+CREATE TABLE t1 (
+a CHAR
+) COLLATE=tis620_thai_nopad_ci
+PARTITION BY RANGE COLUMNS (a)
+(
+PARTITION p0 VALUES LESS THAN (' '),
+PARTITION p VALUES LESS THAN ('')
+);
+ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
+CREATE TABLE t1
+(
+id INT NOT NULL,
+data VARCHAR(2),
+KEY data_id (data(1),id)
+) COLLATE tis620_thai_nopad_ci ENGINE=MyISAM
+PARTITION BY RANGE (id)
+(
+PARTITION p10 VALUES LESS THAN (10),
+PARTITION p20 VALUES LESS THAN (20)
+);
+INSERT INTO t1 VALUES (4, 'ab'), (14, 'ab'), (19,''),(9,'') ;
+SELECT id FROM t1 WHERE data='' ORDER BY id;
+id
+9
+19
+DROP TABLE t1;
diff --git a/mysql-test/suite/parts/t/part_ctype_tis620.test b/mysql-test/suite/parts/t/part_ctype_tis620.test
new file mode 100644
index 00000000000..2e5bcd651b1
--- /dev/null
+++ b/mysql-test/suite/parts/t/part_ctype_tis620.test
@@ -0,0 +1,52 @@
+--source include/have_partition.inc
+--source include/have_tis620.inc
+
+--echo #
+--echo # MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
+--echo #
+
+--error ER_RANGE_NOT_INCREASING_ERROR
+CREATE TABLE t1 (
+ a CHAR
+) COLLATE=tis620_thai_nopad_ci
+PARTITION BY RANGE COLUMNS (a)
+(
+ PARTITION p0 VALUES LESS THAN (''),
+ PARTITION p VALUES LESS THAN ('')
+);
+
+--error ER_RANGE_NOT_INCREASING_ERROR
+CREATE TABLE t1 (
+ a CHAR
+) COLLATE=tis620_thai_nopad_ci
+PARTITION BY RANGE COLUMNS (a)
+(
+ PARTITION p0 VALUES LESS THAN (''),
+ PARTITION p VALUES LESS THAN (' ')
+);
+
+--error ER_RANGE_NOT_INCREASING_ERROR
+CREATE TABLE t1 (
+ a CHAR
+) COLLATE=tis620_thai_nopad_ci
+PARTITION BY RANGE COLUMNS (a)
+(
+ PARTITION p0 VALUES LESS THAN (' '),
+ PARTITION p VALUES LESS THAN ('')
+);
+
+
+CREATE TABLE t1
+(
+ id INT NOT NULL,
+ data VARCHAR(2),
+ KEY data_id (data(1),id)
+) COLLATE tis620_thai_nopad_ci ENGINE=MyISAM
+PARTITION BY RANGE (id)
+(
+ PARTITION p10 VALUES LESS THAN (10),
+ PARTITION p20 VALUES LESS THAN (20)
+);
+INSERT INTO t1 VALUES (4, 'ab'), (14, 'ab'), (19,''),(9,'') ;
+SELECT id FROM t1 WHERE data='' ORDER BY id;
+DROP TABLE t1;