-
-
Notifications
You must be signed in to change notification settings - Fork 19
KunlunBase 与 PG 的兼容
kunlundb edited this page Jul 13, 2022
·
1 revision
KunlunBase 支持大多数 PostgreSQL 功能,下文列出的功能点除外。
- create table 语句的所有 'storage params'(存储参数),以及表空间设置。这些选项会被忽略并返回警告消息给客户端。
-
exclude
约束:忽略并返回警告 - 索引的
include
字段 - 分区表的
default
分区:不支持 -
'create table select from'
语句 - 针对数据表的存储管理操作,包括
cluster
,vacuum
,reindex
,analyze
,etc
。
这些操作不可以针对用户数据表执行操作,可以针对计算节点本地存储的元数据表执行操作。
KunlunBase不支持这些索引选项和功能:
- 表达式作为索引字段
-
partial index
(忽略某些数据行不为它们插入索引行) -
CONCURRENT
选项:忽略 -
include
子句:忽略 -
'COLLATE'
子句 :禁止, -
'nulls first' / 'nulls last' :
禁止指定,总是使用MySQL的默认方式,与 PostgreSQL的默认方式刚好相反。 -
opclass:
禁止 -
hash
索引类型:mysql不支持,及时指定了,仍然使用b+tree -
rtree
索引类型:不支持 -
'exclude'
子句:不支持
ALTER TABLE
不支持的功能
KunlunDB自动忽略这些选项:
- SET { WITH | WITHOUT } OIDS
- SET { LOGGED | UNLOGGED }
- 列和表级别的外键约束
- CLUSTER 选项:CLUSTER ON index_name SET WITHOUT CLUSTER
- 触发器选项
DISABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE TRIGGER [ trigger_name | ALL | USER ]
- 自定义约束
ADD CONSTRAINT ALTER CONSTRAINT VALIDATE CONSTRAINT
- 对表空间和存储参数的修改
- 流复制设置(含有
REPLICA
关键字的子句)
对已有的表新加的列,如果有缺省值的话,缺省值不可以是MySQL无法执行的表达式,只能是常量或者MySQL可以执行的表达式。例如,表达式中的函数和运算符必须在mysql中存在和支持。
另外,如果这个新增列是sequence类型,那么这个表只能新增一列这样的sequence列,因为KunlunDB会使用mysql的自增列为已有的行的新字段赋值。而mysql的每个表只允许一个自增列。
总是使用MySQL的默认方式,与PostgreSQL的默认方式刚好相反。
- 时间戳的有效范围缩小到了
[ '0000-01-01 00:00:00.000000' , '9999-12-31 23:59:59.999999' ].
- 日期类型的有效范围缩小到了
[ '0000-01-01' , '9999-12-31' ].