天天看點

Greenplum 函數内嵌套查詢在query中調用的替代方案

在使用資料庫過程中,使用者可能會封裝一些函數,用來傳回一些映射值。

例如,有一張表存儲了學号和學生名字,寫一個函數,根據學号,傳回學生名字。

Greenplum 函數内嵌套查詢在query中調用的替代方案

sql如下 :

使用greenplum時,可能需要注意,因為如果函數中有query,但是這個函數又在query中調用的話,可能會報錯。

目前執行計劃還不支援這種查詢:

出錯原因,在檢查segment節點query tree時,如果發現樹中還有非catalog類的對象,則報錯。

可能是master節點對這種query的處理沒有徹底。

使用with也不能解決這個問題,因為不會等收到master節點後再調用f1

怎麼解決這個問題呢?

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