Greenplum对CTE表达式的支持及如何启用

CTE表达式大家应该都不陌生,很多从Oracle迁移到Greenplum的小伙伴查询如何实现递归的时候,都会查到这个语法。CTE功能在Greenplum 5.x版本被引入,默认在5.x版本中禁用了该功能,这里对版本的配置及如何启用做一下简单记录,方便大家使用。

1.Greenplum不同版本对CTE的支持

  • Greenplum 5.x版本,默认禁用该功能;需要开启参数gp_recursive_cte_prototype才能使用;
  • Greenplum 6.x版本,默认启用该功能,无需额外配置。

2.如何开启CTE支持

在Greenplum 5.x版本中,我们可以通过在psql命令行执行命令查看是否开启对CTE的支持,如下:

postgres=# show gp_recursive_cte_prototype;
 gp_recursive_cte_prototype
----------------------------
 off
(1 row)

off表示为开启,on表示开启。

开启方式分为两种,一种是在session级别临时开启,一种是在数据库级别全局开启。

临时开启方法

在执行CTE表达式之前,添加一句set gp_recursive_cte_prototype to true;

例如:

set gp_recursive_cte_prototype to true; -- 部分低版本greenplum必须加
insert into neworg
(
    id, name, pid, path_id, path_name, leve, is_leaf
)
with recursive result_ as -- 递归主体开始
(
    select id -- 首先是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿福Chris

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值