交互式分析Hologres兼容PostgreSQL,除了支持创建、查询及更新数据库的表和Schema等对象的SQL语句外,同时还支持其他SQL语句。本文为您介绍Hologres支持的其他SQL语句。

Hologres已支持的其他PostgreSQL功能语句如下表所示,您可以参考PostgreSQL官网文档的用法示例进行使用。
命令 说明
ALTER TABLE 修改表,仅支持PostgreSQL的部分功能,详情请参见如下:
ALTER ROLE 修改角色。
ANALYZE 更新统计信息。
BEGIN 事务开始,Hologres的BEGIN仅对DDL语句生效。
COMMIT 事务确认,Hologres的COMMIT仅对DDL语句生效。
CREATE DATABASE 创建数据库。
CREATE EXTENSION 创建扩展。
CREATE FOREIGN DATA WRAPPER 创建外部访问接口。
CREATE FOREIGN TABLE 创建外部表,Hologres仅支持创建MaxCompute外部表。
CREATE GROUP 创建组。
CREATE SERVER 创建外部服务器。
CREATE TABLE 创建表,Hologres仅支持PostgreSQL中CREATE TABLE语句的部分功能。其中,不支持的功能如下:
  • UNLOGGED
  • TEMP
  • IF NOT EXISTS
  • LIKE
  • CHECK
  • DEFAULT
  • GENERATED
  • UNIQUE
  • EXCLUDE
  • FOREIGN KEY
  • DEFERRABLE
  • WITH OIDS
  • GLOBAL
  • LOCAL

Hologres的PARTITION仅支持LIST类型,并且PARTITION LIST只能取类型为STRING的唯一值。

CREATE VIEW 创建视图。
CREATE USER 创建用户。
CREATE USER MAPPING 创建用户映射。
DROP DATABASE 删除数据库。
DROP FOREIGN DATA WRAPPER 删除外部访问接口。
DROP FOREIGN TABLE 删除外部表。
DROP GROUP 删除组。
DROP OWNED 删除所有权。
DROP ROLE 删除角色。
DROP SERVER 删除外部服务器。
DROP TABLE 删除表。
DROP USER 删除用户。
DROP USER MAPPING 删除用户映射。
END 事务结束,Hologres的END仅支持与DDL语句配合使用。
EXPLAIN 查看执行计划。
INSERT 导入。
ROLLBACK 事务回滚。
SELECT Hologres仅支持PostgreSQL中SELECT语句的部分语句功能。其中,不支持的功能如下:
  • 递归查询
  • TABLESAMPLE
  • LOCKING
  • ONLY
SET 执行GUC参数,详情请参见GUC参数
CALL set_table_property('<tablename>', 'time_to_live_in_seconds', '<values>'); 设置表数据生命周期,表数据的生存时间TTL的单位为秒,必须是非负数字类型,整数或浮点数均可。使用限制如下:
  • 若是没有显式指定TTL,则默认数据保留永久(100年),从1.3.24版本开始,允许设置的TTL最小值是1天,即86400秒。
  • TTL过期时间以数据第一次写入的时间为准,而不是数据最后一次修改的时间;当到达TTL后,表数据会在某一段时间内被清除(没有固定时间段),只是数据被清除,表不会被删除。
  • 可以单独执行该语句,表示修改表数据生命周期。
  • TTL相比于DELETE FROM命令几乎不占资源,也不会锁表。但是对于过期的数据不能保证数据一致性。这意味着:
    • 读取过期数据,可能能读到,可能读不到,也可能读到某个历史版本。
    • 修改或删除过期数据,可能能正常工作,也可能出现PK重复之类的意外结果。
    • 所以使用TTL功能,最好要保证不会读取或修改过期的数据,或者对过期数据的一致性不关心。