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 | |