欄位屬性限制
1、不支援CHARACTER SET語法
MariaDB [test]> create table t1(id int,name varchar(10) CHARACTER SET utf8)
-> engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
2、不支援COLLATE語法
MariaDB [test]> create table t1(id int)
-> engine=Columnstore COLLATE=utf8_bin;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
MariaDB [test]> create table t1(id int,name varchar(10) COLLATE utf8_bin)
-> engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
3、不支援TEXT/BLOB
MariaDB [test]> create table t1(id int,info text)
-> engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
MariaDB [test]>
MariaDB [test]> create table t1(id int,info blob)
-> engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
4、不支援timestamp,後面的DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP全部刪除
MariaDB [test]> create table t1(update_time timestamp)engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
MariaDB [test]> create table t1(update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)
-> engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
5、decimal不能大於18
MariaDB [test]> create table t1(money decimal(19,2)) engine=Columnstore;
ERROR 1815 (HY000): Internal error: CAL0009: (3)Create table failed due to Syntax error: The maximum precision (total number of digits) that can be specified is 18
6、不支援ROW_FORMAT=COMPACT
MariaDB [test]> create table t1(id int)engine=Columnstore ROW_FORMAT=COMPACT;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
7、varchar最大8000
MariaDB [test]> create table t1(name varchar(8001))engine=Columnstore;
ERROR 1815 (HY000): Internal error: CAL0009: (3)Create table failed due to char, varchar and varbinary length may not exceed 8000
8、不支援bit型別
MariaDB [test]> create table t1(status bit)engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn`t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
9、comment不能攜帶“引號
MariaDB [test]> create table t3(id int comment `主鍵“ID`)engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn`t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
10、行溢位,一行varchar不能大於65535(UTF8要除以3)
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
11、不支援enum列舉型別
MariaDB [test]> create table t1(`type` enum(`HOLIDAY`,`WORKDAY`) DEFAULT NULL)engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn`t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
12、不支援zerofill
MariaDB [test]> create table t2(id int(6) zerofill)engine=columnstore;
ERROR 1178 (42000): The storage engine for the table doesn`t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
BUG
不支援Reserved keywords保留關鍵字user、comment、match、key、update、status
https://jira.mariadb.org/browse/MCOL-1022
MariaDB [test]> create table user(id int)engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
MariaDB [test]> create table t1(comment varchar(100))engine=Columnstore;
ERROR 1178 (42000): The storage engine for the table doesn’t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
SQL語句限制
1、distinct的欄位不在order by裡,就不能排序
MariaDB [test]> select distinct apply_time from test ORDER BY id limit 1;
ERROR 1178 (42000): The storage engine for the table doesn`t support IDB-2022: ORDER BY column not in DISTINCT list.
https://jira.mariadb.org/browse/MCOL-1036
2、查詢的欄位不在group by裡,就不能分組統計
MariaDB [test]> select id from test group by qq;
ERROR 1815 (HY000): Internal error: IDB-2021: `test.id` is not in GROUP BY clause. All non-aggregate columns in the SELECT and ORDER BY clause must be included in the GROUP BY clause.
3、alter不支援change/modify更改欄位屬性
MariaDB [test]> alter table t1 change id id bigint;
ERROR 1815 (HY000): Internal error: CAL0001: Alter table Failed: Changing the datatype of a column is not supported
4、alter不支援多列操作和不支援after
MariaDB [test]> alter table t1 add age tinyint,add address varchar(100);
ERROR 1178 (42000): The storage engine for the table doesn`t support Multiple actions in alter table statement is currently not supported by Columnstore.
MariaDB [test]> alter table t1 add age tinyint after id;
ERROR 1178 (42000): The storage engine for the table doesn`t support The syntax or the data type(s) is not supported by Columnstore. Please check the Columnstore syntax guide for supported syntax or data types.
5、欄位型別不同 join 關聯查詢報錯
MariaDB [test]> select t1.id from t1 join t2 on t1.id=t2.cid;
ERROR 1815 (HY000): Internal error: IDB-1002: `t1` and `t2` have incompatible column type specified for join condition.
6、DML語句會非常慢
DML, i.e. INSERT, UPDATE, and DELETE, provide row level changes.
ColumnStore is optimized towards bulk modifications and so these
operations are slower than they would be in say InnoDB.
-
Currently ColumnStore does not support operating as a replication slave target.
https://mariadb.com/kb/en/library/columnstore-data-ingestion/
7、大批量資料匯入text欄位報記憶體不足
Internal error: CAL0001: Insert Failed: IDB-2008: The version buffer overflowed.
https://jira.mariadb.org/browse/MCOL-1056
8、不支援replace into和load data infile replace into
https://jira.mariadb.org/browse/MCOL-1080
MariaDB官方回覆:覆蓋寫目前優先順序較低,因為這是一個非常大的專案,預計執行成本很高。