在使用数据库过程中,用户可能会封装一些函数,用来返回一些映射值。
例如,有一张表存储了学号和学生名字,写一个函数,根据学号,返回学生名字。

sql如下 :
使用greenplum时,可能需要注意,因为如果函数中有query,但是这个函数又在query中调用的话,可能会报错。
目前执行计划还不支持这种查询:
出错原因,在检查segment节点query tree时,如果发现树中还有非catalog类的对象,则报错。
可能是master节点对这种query的处理没有彻底。
使用with也不能解决这个问题,因为不会等收到master节点后再调用f1
怎么解决这个问题呢?
可以用子查询(括号中的部分)替代 function 。