mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
e9aac09153
cmp_data(): Compare different-length CHAR fields with the new strnncollsp_nchars function that will pad spaces if needed. Any InnoDB ROW_FORMAT except the original one that was named ROW_FORMAT=REDUNDANT in MySQL 5.0.3 will internally store CHAR(n) columns as variable-length if the character encoding is variable length. Spaces may be trimmed from the end. For NOT NULL values, the minimum length is always n*mbminlen. In cmp_data() we only know the lengths in bytes and we cannot easily know the ROW_FORMAT. is_strnncoll_compatible(): Refactored from innobase_mysql_cmp(). innobase_mysql_cmp(): Merged to cmp_whole_field(). cmp_whole_field(): Invoke strnncollsp_nchars for the DATA_MYSQL (the CHAR type with any other collation than latin1_swedish_ci). Reviewed by: Alexander Barkov Tested by: Roel Roel Van de Paar
7 lines
262 B
Text
7 lines
262 B
Text
CREATE TABLE t1 (a CHAR(8), id INT, PRIMARY KEY (a,id)) COLLATE utf8_nopad_bin
|
|
ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
|
INSERT INTO t1 VALUES ('',1);
|
|
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
|
|
INSERT INTO t1 VALUES ('',2);
|
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
|
DROP TABLE t1;
|