与PostgreSQL的差异
GaussDB(DWS)与PostgreSQL的差异基于PostgreSQL 9.X版本整理,具体差异如下:
客户端差异
GaussDB(DWS) gsql相较于PostgreSQL psql做了如下安全加固变更:
- 取消通过元命令\password设置用户密码。
- 新增元命令\i+、 \ir+、\include_relative+和输入输出参数-k,以支持给导入导出的文件加密。
- 取消打印命令行历史到文件的元命令\s。
- 涉及敏感操作SQL历史不再记录,如含有密码操作。即用户通过翻页/上下键查阅SQL历史将不能查到对应的记录。
- 支持连接后在屏幕上给出用户密码过期提示以及版本信息。
gsql在psql基础上还增加了如下功能:
- 新增输出格式参数-r。支持用户输入命令时的tab补齐和方向键调整焦点。
- 新增并行操作元命令\parallel,以提升执行性能。
- 新增\set RETRY支持语句出错重试。
- 新增PLSQL默认结束符功能,将“/”作为PLSQL语句(create or replace function/procedure)的默认结束符,增加便利性。
libpq:
GaussDB(DWS)在开发某些功能,如客户端连接工具gsql时,对PostgreSQL libpq进行了较大修改,但并未对此接口在应用程序开发场景下的使用做验证。因此对使用此接口做应用程序开发存在的风险未知,故不推荐用户使用此套接口做应用程序开发。推荐用户使用ODBC或JDBC接口来替代。
SQL差异
分类 |
GaussDB(DWS)不支持 |
说明 |
---|---|---|
数据类型 |
几何类型line |
GaussDB(DWS)所支持的数据类型参见数据类型。 |
pg_node_tree |
||
函数 |
枚举支持函数:
|
GaussDB(DWS)所支持的函数参见函数和操作符。 |
访问权限查询函数:
|
||
系统目录信息函数:
|
||
几何类型转换函数: line(point, point) |
||
pg_node_tree函数 |
||
SQL语法 |
CREATE TABLE子句: INHERITS ( parent_table [, ... ] ) |
继承表。 |
CREATE TABLE的列约束: REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] |
列约束中用REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] 为表创建外键约束。 |
|
CREATE TABLE的表约束: EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) |
表约束中用EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] )为表创建排除约束。 |
|
CREATE/ALTER/DROP EXTENSION |
扩展的加载、修改和删除。 |
|
CREATE/ALTER/DROP AGGREGATE |
聚集函数的定义、修改和删除。 |
|
CREATE/ALTER/DROP OPERATOR |
操作符(OPERATOR)的创建、修改和删除。 |
|
CREATE/ALTER/DROP OPERATOR CLASS |
操作符类(OPERATOR CLASS)的创建、修改和删除。 |
|
CREATE/ALTER/DROP OPERATOR FAMILY |
操作符族(OPERATOR FAMILY)的创建、修改和删除。 |
|
CREATE/ALTER/DROP TEXT SEARCH PARSER |
文本检索解析器(TEXT SEARCH PARSER)的创建、修改和删除。 |
|
CREATE/ALTER/DROP TEXT SEARCH TEMPLATE |
文本检索模板(TEXT SEARCH TEMPLATE)的创建、修改和删除。 |
|
CREATE/ALTER/DROP COLLATION |
排序规则(COLLATION)的创建、修改和删除 |
|
CREATE/ALTER/DROP CONVERSION |
字符集编码转换(CONVERSION)的定义、修改和删除。 |
|
CREATE/ALTER/DROP RULE |
规则(RULE)的创建、修改和删除。 |
|
CREATE/ALTER/DROP LANGUAGE |
过程语言(LANGUAGE)的注册、修改和删除。 |
|
CREATE/ALTER/DROP DOMAIN |
域(DOMAIN)的创建、修改和删除。 |
|
CREATE/DROP CAST |
类型转换(CAST)的定义和删除。 |
|
CREATE/ALTER/DROP USER MAPPING |
用户映射(USER MAPPING)的定义、修改和删除。 |
|
SECURITY LABEL |
定义或更改对象的安全标签。 |
|
NOTIFY |
生成一个通知。 |
|
LISTEN |
监听一个通知。 |
|
UNLISTEN |
停止监听通知信息。 |
|
LOAD |
加载或重新加载一个共享库文件。 |
|
DISCARD |
释放一个数据库的会话资源(8.2.0及以上集群版本已支持DISCARD) 。 |
|
MOVE BACKWARD |
反向移动游标。 |
|
COPY的COPY FROM FILE和COPY TO FILE |
为了权限的隔离,GaussDB(DWS)禁用COPY FROM FILE和COPY TO FILE。 |
|
其他 |
自定义C函数 |
DWS支持的用户自定义函数参见“开发指南>用户自定义函数”用户自定义函数。 |