更新时间:2024-10-25 GMT+08:00

与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差异

表1 GaussDB(DWS)不支持的PostgreSQL数据库语言

分类

GaussDB(DWS)不支持

说明

数据类型

几何类型line

GaussDB(DWS)所支持的数据类型参见数据类型

pg_node_tree

函数

枚举支持函数:

  • enum_first(anyenum)
  • enum_last(anyenum)
  • enum_range(anyenum)
  • enum_range(anyenum, anyenum)

GaussDB(DWS)所支持的函数参见函数和操作符

访问权限查询函数:

  • has_sequence_privilege(user, sequence, privilege)
  • has_sequence_privilege(sequence, privilege)
系统目录信息函数:
  • pg_get_triggerdef(trigger_oid)
  • pg_get_triggerdef(trigger_oid, pretty_bool)

几何类型转换函数:

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支持的用户自定义函数参见用户自定义函数