获得技术资料内容,请访问Greenplum中文社区网站
新特性
PostgreSQL内核新特性
Greenplum 6结合了许多从PostgreSQL8.4到9.4的新特性
区间数据类型处理
PostgreSQL 8.4依照SQL标准,增强了解析INTERVAL文本。这个改变了对于INTERVAL标记的查询在 5.x和6.x里的输出。
$ psql
psql (8.3.23)
Type "help" for help.
gpadmin=# select INTERVAL '1' YEAR;
interval
----------
00:00:00
(1 row)
```
``` sql
$ psql
psql (9.2beta2)
Type "help" for help.
gpadmin=# select INTERVAL '1' YEAR;
interval
----------
1 year
(1 row)
新增的PostgresSQL特性
Greenplum 6.0包含了如下来自PostgreSQL的特性
1. 支持unnest() 数组函数,可以将数组转换成行的集合(PostgreSQL 8.4引入)
2. 支持用户自定义的I/O conversion casts. (PostgreSQL 8.4引入)
3. 支持列级别的权限(PostgreSQL 8.4引入)
4. 增加了pg_db_role_setting系统表,为特定数据库和角色组合的配置提供了支持(PostgreSQL 9.0引入)
5. pg_class系统表里的relkind列的值已改成与PostgreSQL 9.3的条目相同
6. 支持GIN索引方法(PostgreSQL 8.3引入)
7. 支持jsonb数据类型(PostgreSQL 9.4引入)
8. DELETE,INSERT和UPDATE语句支持WITH子句,即CTE (common table expression) (PostgreSQL 9.1引入)
对于WITH子句,RECURSIVE关键字还处于试验阶段
9. 列(column)级别支持指定排序规则和字符集的Collation(PostgreSQL 9.1引入)
Zstandard压缩算法
Greenplum 6.0增加了数据库某些操作和AO表存储的zstd (Zstandard)压缩。
放宽指定分布列的规则
在之前的版本,如果在建表的时候同时指定了分布列和唯一索引,则分布列必须和唯一索引列相同,或者是唯一索引列集的左前缀。Greenplum 6.x里取消了该限制,分布列可以是索引列的任何子集。
这个改变同时影响了Greenplum 6.x选择默认分布键的规则。如果gp_create_table_random_default_distribution是关闭的(默认值),并且建表时未指定DISTRIBUTED BY子句,Greenplum会根据如下规则选择分布键:
1. 如果使用了LIKE或INHERITS,则依照源表或父表的