天天看点

Greenplum 函数内嵌套查询在query中调用的替代方案

在使用数据库过程中,用户可能会封装一些函数,用来返回一些映射值。

例如,有一张表存储了学号和学生名字,写一个函数,根据学号,返回学生名字。

Greenplum 函数内嵌套查询在query中调用的替代方案

sql如下 :

使用greenplum时,可能需要注意,因为如果函数中有query,但是这个函数又在query中调用的话,可能会报错。

目前执行计划还不支持这种查询:

出错原因,在检查segment节点query tree时,如果发现树中还有非catalog类的对象,则报错。

可能是master节点对这种query的处理没有彻底。

使用with也不能解决这个问题,因为不会等收到master节点后再调用f1

怎么解决这个问题呢?

可以用子查询(括号中的部分)替代 function 。