MariaDB ColumnStore一些限制和BUG总结
admin
2023-05-13 13:42:20
0

字段属性限制
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官方回复:覆盖写目前优先级较低,因为这是一个非常大的项目,预计执行成本很高。




相关内容

热门资讯

父亲70岁,从癌症手里“抠”时... 作者 | 祖晓谦秦叔特意请儿媳买了两把国光牌口琴,他不仅吹给自己听,也吹给家人听。那是2023年,他...
参加国宴的中国企业家,个个都有... 文 | 陶叔015月14日晚上,人民大会堂金色大厅举行国宴,两国领导人都发表了热情洋溢的讲话。电视画...
能繁母猪调控目标再下调,释放什... 【大河财立方 记者 徐兵】生猪行业新一轮产能调控正式落地。5月14日,农业农村部印发《生猪产能综合调...
赓续仲景千年文脉,南阳以“中医... 【大河财立方 记者 李雯雯】 红墙黛瓦承古韵,药香悠悠润宛城。5月13日,由中国新闻社河南分社、河南...
从国宴菜单一窥中美外交:清淡中... 中国为特朗普访华举行国宴图 路透/Evan Vucci当中美元首周四在北京出席一场盛大国宴时,菜单本...
赖清德公开呛台北没为台湾加分,... 海峡导报综合报道 民进党日前征召民代沈伯洋参选台北市长,党主席赖清德更称,台北市拥有全台最好、最多资...
外交部发言人就伊朗局势答记者问 问:据报道,特朗普总统访华期间,中美两国元首就中东局势等重大国际和地区问题交换了意见。请问双方是否谈...
强势介入调查座车追踪器疑云,检... 海峡导报综合报道 中国国民党副主席李乾龙日前遭媒体爆料,去年11月座车遭安装追踪器和收到恐吓信,事后...
没上专机的库克,提前到了北京 特朗普这次访华代表团的工商界人士中,英伟达创始人兼首席执行官(CEO)黄仁勋是在最后一刻登上了美国总...
女子总遇见“面熟”大姐一查竟是...   64岁的郑招莲说起这话时,语气里藏不住感慨与遗憾:“我经常在街上遇到我的姐姐,只是觉得面熟,但从...