Logo
SQL 兼容性

SQL 兼容性 #

SQL 是使用者与数据库交流的标准语言。SQL 解析引擎负责将 SQL 字符串解析为抽象语法树,供 SphereEx-DBPlusEngine 理解并实现其增量功能。SphereEx-DBPlusEngine 目前支持 MySQL、PostgreSQL、SQLServer、Oracle、openGauss、Presto 以及符合 SQL92 规范的 SQL 方言。由于 SQL 语法的复杂性,目前仍然存在少量不支持的 SQL。此外,SphereEx-DBPlusEngine 为数据库提供了分布式协作的能力,同时将一部分数据库特性抽象到了上层,进行统一管理,以降低用户的使用难度。因此,对于统一提供的特性,原生的 SQL 将不再下发到数据库,并提示该操作不被支持,用户可使用 SphereEx-DBPlusEngine 提供的的方式进行代替。

不兼容情况 #

MySQL #

SQL说明
SELECT CAST(-1.1 AS YEAR)暂不支持 CAST 函数
SELECT * FROM json_table(’[]’, ‘$[*]’ COLUMNS (p NCHAR PATH ‘$.a’)) AS t暂不支持 json_table
CREATE TABLE t1 ( a CHAR(1) CHARACTER SET ucs2 COLLATE ucs2_persian_ci)暂不支持 COLLATE
GET DIAGNOSTICS @n = NUMBER暂不支持 GET DIAGNOSTICS
SELECT ‘x’ ‘x’暂不支持 ‘x’ ‘x’
SELECT 8.p暂不支持 8.p
SELECT max(all a) FROM t1暂不支持 max(all a)
SELECT substring(1.111111111111111111 FROM ‘2n’)暂不支持 substring(x from y)
INSERT INTO t1 VALUES (GEOMCOLLECTION(POINT(0, 0)))暂不支持 GEOMCOLLECTION POINT
SELECT * FROM slow ORDER BY slow保留字不能作为标识符, 需要使用 ``, 完整保留字请参考 keywords

PostgreSQL #

SQL说明
CREATE TABLE agg_data_2k AS SELECT g FROM generate_series(0,1999) g
CREATE SERVER alt_ferv1 FOREIGN DATA WRAPPER alt_fdw1
CREATE STATISTICS alt_stat1 ON a,b FROM alt_regress_1
ALTER TABLE alterlock SET(toast.autovacuum_enabled=off)
CREATE PUBLICATION pub1 FOR TABLE alter1.t1,ALL TABLES IN SCHEMA alter2

openGauss #

SQL说明
CREATE TABLE agg_data_2k AS SELECT g FROM generate_series(0,1999) g
CREATE FOREIGN DATA WRAPPER alt_fdw1
CREATE SERVER alt_ferv1 FOREIGN DATA WRAPPER alt_fdw1
CREATE STATISTICS alt_stat1 ON a,b FROM alt_regress_1
ALTER TABLE alterlock SET(toast.autovacuum_enabled=off)
CREATE PUBLICATION pub1 FOR TABLE alter1.t1,ALL TABLES IN SCHEMA alter2

Presto #

SQL说明
CREATE TABLE orders_by_date COMMENT ‘Summary of orders by date’ WITH (format = ‘ORC’) AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate
CALL test(name => ‘apple’, id => 123)
ALTER TABLE IF EXISTS users RENAME column IF EXISTS id to user_id
DEALLOCATE PREPARE my_query
DESCRIBE table_name
REVOKE GRANT OPTION FOR SELECT ON nation FROM ROLE PUBLIC