与PostgreSQL的差异
DWS与PostgreSQL的差异基于PostgreSQL 9.X版本整理,具体差异如下:
客户端差异
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:
DWS在开发某些功能,如客户端连接工具gsql时,对PostgreSQL libpq进行了较大修改,但并未对此接口在应用程序开发场景下的使用做验证。因此对使用此接口做应用程序开发存在的风险未知,故不推荐用户使用此套接口做应用程序开发。推荐用户使用ODBC或JDBC接口来替代。
SQL差异
分类 | DWS不支持 | 说明 |
|---|---|---|
数据类型 | 几何类型line | DWS所支持的数据类型参见数据类型。 |
pg_node_tree | ||
函数 | 枚举支持函数:
| 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 | 为了权限的隔离,DWS禁用COPY FROM FILE和COPY TO FILE。 | |
其他 | 自定义C函数 | DWS支持的用户自定义函数可参见《数据仓库服务开发指南》中“用户自定义函数”章节。 |

