You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-5005 Add charset number to system catalog - Part 2.
1. Extend the calpontsys.syscolumn system catalog table with a new column, 'charsetnum'. 'charsetnum' field is set to the 'number' member of the 'charset_info_st' struct defined in the server in m_ctype.h. For CHAR/VARCHAR/TEXT column types, 'charset_info_st' is initialized to the charset/collation of the column, which is set at the column-level or at the table-level in the DDL. For BLOB/VARBINARY binary column types, 'charset_info_st' is initialized to my_charset_bin (charsetnum=63). For all other column types, charsetnum is set to 0. 2. Add support for the newly added 'charsetnum' column in the automatic system catalog upgrade logic in dbbuilder. For existing table definitions, charsetnum for the column is defaulted to 0. 3. Add MTR test case that creates a few table definitions with a range of charset/collation combinations and queries the calpontsys.syscolumn system catalog table with the charsetnum field for the columns in the table DDLs.
This commit is contained in:
85
mysql-test/columnstore/basic/r/mcol-5005.result
Normal file
85
mysql-test/columnstore/basic/r/mcol-5005.result
Normal file
@ -0,0 +1,85 @@
|
||||
DROP DATABASE IF EXISTS mcol5005;
|
||||
CREATE DATABASE mcol5005;
|
||||
USE mcol5005;
|
||||
CREATE TABLE t1 (
|
||||
a VARCHAR(15) collate utf8mb4_romanian_ci,
|
||||
b VARCHAR(15) charset 'utf8mb3',
|
||||
c VARCHAR(15),
|
||||
d BLOB(15),
|
||||
e INT
|
||||
) ENGINE=columnstore collate=latin2_croatian_ci;
|
||||
ALTER TABLE t1 ADD COLUMN (f VARCHAR(15) collate 'utf8mb4_icelandic_ci');
|
||||
ALTER TABLE t1 ADD COLUMN (g VARCHAR(15));
|
||||
CREATE TABLE t2 ENGINE=columnstore AS SELECT * FROM t1;
|
||||
CREATE TABLE t3 LIKE t1;
|
||||
CREATE TABLE t4 (a varchar(15)) ENGINE=InnoDB charset=latin2;
|
||||
SHOW CREATE TABLE t4;
|
||||
Table Create Table
|
||||
t4 CREATE TABLE `t4` (
|
||||
`a` varchar(15) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin2 COLLATE=latin2_general_ci
|
||||
ALTER TABLE t4 ENGINE=columnstore;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_romanian_ci DEFAULT NULL,
|
||||
`b` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
|
||||
`c` varchar(15) DEFAULT NULL,
|
||||
`d` tinyblob DEFAULT NULL,
|
||||
`e` int(11) DEFAULT NULL,
|
||||
`f` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci DEFAULT NULL,
|
||||
`g` varchar(15) DEFAULT NULL
|
||||
) ENGINE=Columnstore DEFAULT CHARSET=latin2 COLLATE=latin2_croatian_ci
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_romanian_ci DEFAULT NULL,
|
||||
`b` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
|
||||
`c` varchar(15) CHARACTER SET latin2 COLLATE latin2_croatian_ci DEFAULT NULL,
|
||||
`d` tinyblob DEFAULT NULL,
|
||||
`e` int(11) DEFAULT NULL,
|
||||
`f` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci DEFAULT NULL,
|
||||
`g` varchar(15) CHARACTER SET latin2 COLLATE latin2_croatian_ci DEFAULT NULL
|
||||
) ENGINE=Columnstore DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
SHOW CREATE TABLE t3;
|
||||
Table Create Table
|
||||
t3 CREATE TABLE `t3` (
|
||||
`a` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_romanian_ci DEFAULT NULL,
|
||||
`b` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
|
||||
`c` varchar(15) DEFAULT NULL,
|
||||
`d` tinyblob DEFAULT NULL,
|
||||
`e` int(11) DEFAULT NULL,
|
||||
`f` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_icelandic_ci DEFAULT NULL,
|
||||
`g` varchar(15) DEFAULT NULL
|
||||
) ENGINE=Columnstore DEFAULT CHARSET=latin2 COLLATE=latin2_croatian_ci
|
||||
SHOW CREATE TABLE t4;
|
||||
Table Create Table
|
||||
t4 CREATE TABLE `t4` (
|
||||
`a` varchar(15) DEFAULT NULL
|
||||
) ENGINE=Columnstore DEFAULT CHARSET=latin2 COLLATE=latin2_general_ci
|
||||
SELECT `schema`, tablename, columnname, charsetnum FROM calpontsys.syscolumn
|
||||
WHERE `schema`='mcol5005' AND tablename in ('t1', 't2', 't3', 't4');
|
||||
schema tablename columnname charsetnum
|
||||
mcol5005 t1 a 227
|
||||
mcol5005 t1 b 33
|
||||
mcol5005 t1 c 27
|
||||
mcol5005 t1 d 63
|
||||
mcol5005 t1 e 0
|
||||
mcol5005 t1 f 225
|
||||
mcol5005 t1 g 27
|
||||
mcol5005 t2 a 227
|
||||
mcol5005 t2 b 33
|
||||
mcol5005 t2 c 27
|
||||
mcol5005 t2 d 63
|
||||
mcol5005 t2 e 0
|
||||
mcol5005 t2 f 225
|
||||
mcol5005 t2 g 27
|
||||
mcol5005 t3 a 227
|
||||
mcol5005 t3 b 33
|
||||
mcol5005 t3 c 27
|
||||
mcol5005 t3 d 63
|
||||
mcol5005 t3 e 0
|
||||
mcol5005 t3 f 225
|
||||
mcol5005 t3 g 27
|
||||
mcol5005 t4 a 9
|
||||
DROP DATABASE mcol5005;
|
67
mysql-test/columnstore/basic/t/mcol-5005.test
Normal file
67
mysql-test/columnstore/basic/t/mcol-5005.test
Normal file
@ -0,0 +1,67 @@
|
||||
#
|
||||
# MCOL-5005 Add charset number to the calpontsys.syscolumn system
|
||||
# catalog table
|
||||
#
|
||||
--source ../include/have_columnstore.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
#
|
||||
# If the calpontsys database does not exist, let's create it.
|
||||
# It's possible if we're running mtr without --extern.
|
||||
#
|
||||
let $calpontsys_exists=`SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='calpontsys' AND TABLE_NAME='syscolumn';`;
|
||||
--disable_query_log
|
||||
if (!$calpontsys_exists)
|
||||
{
|
||||
--exec $MYSQL < $MCS_SYSCATALOG_MYSQL_SQL
|
||||
use test;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mcol5005;
|
||||
--enable_warnings
|
||||
|
||||
CREATE DATABASE mcol5005;
|
||||
|
||||
USE mcol5005;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a VARCHAR(15) collate utf8mb4_romanian_ci,
|
||||
b VARCHAR(15) charset 'utf8mb3',
|
||||
c VARCHAR(15),
|
||||
d BLOB(15),
|
||||
e INT
|
||||
) ENGINE=columnstore collate=latin2_croatian_ci;
|
||||
|
||||
ALTER TABLE t1 ADD COLUMN (f VARCHAR(15) collate 'utf8mb4_icelandic_ci');
|
||||
ALTER TABLE t1 ADD COLUMN (g VARCHAR(15));
|
||||
|
||||
CREATE TABLE t2 ENGINE=columnstore AS SELECT * FROM t1;
|
||||
|
||||
CREATE TABLE t3 LIKE t1;
|
||||
|
||||
CREATE TABLE t4 (a varchar(15)) ENGINE=InnoDB charset=latin2;
|
||||
SHOW CREATE TABLE t4;
|
||||
ALTER TABLE t4 ENGINE=columnstore;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
SHOW CREATE TABLE t3;
|
||||
SHOW CREATE TABLE t4;
|
||||
|
||||
SELECT `schema`, tablename, columnname, charsetnum FROM calpontsys.syscolumn
|
||||
WHERE `schema`='mcol5005' AND tablename in ('t1', 't2', 't3', 't4');
|
||||
|
||||
DROP DATABASE mcol5005;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
if (!$calpontsys_exists)
|
||||
{
|
||||
drop table calpontsys.systable restrict;
|
||||
drop table calpontsys.syscolumn restrict;
|
||||
drop database calpontsys;
|
||||
}
|
||||
--enable_query_log
|
Reference in New Issue
Block a user