在我註冊Netezza UDF後,我有一個使用UDF的select語句。我發現UDF的實例化方法被調用兩次select語句。任何想法爲什麼?Netezza 7.2 UDF實例化方法被調用兩次
採樣選擇語句:
select my_udf(somecolumn, 'some parm info') from evtest;
我會認爲UDF的實例化只會得到此選擇調用一次,但它的叫了兩聲,這令我感到困惑。
感謝
在我註冊Netezza UDF後,我有一個使用UDF的select語句。我發現UDF的實例化方法被調用兩次select語句。任何想法爲什麼?Netezza 7.2 UDF實例化方法被調用兩次
採樣選擇語句:
select my_udf(somecolumn, 'some parm info') from evtest;
我會認爲UDF的實例化只會得到此選擇調用一次,但它的叫了兩聲,這令我感到困惑。
感謝
OK,我想我已經解決了這個謎。
我相信實例化方法在語句準備期間被調用,然後在實際執行語句的工作時再次調用。
我的推理: 我添加了一個logMsg stmt到我的構造函數中,並且我看到對於這兩個調用中的每一個,日誌消息都轉到了兩個不同的日誌文件。這個實驗並沒有使用_v_dual完成,但是完成了。
我的logMsg調用都沒有轉到/nz/kit/log/dbos/dbos.log,這是用於在主機上運行的用戶定義的函數。
只有我的日誌消息的人去/nz/kit/log/postgres/pg.log,這對於在系統目錄或聲明的準備時間
我的兩個日誌消息的操作功能去了 /nz/kit/log/sysmgr/sysmgr.log,這是在SPU上運行的功能。
這,我認爲,回答我原來的問題。
對我來說是完美的感覺。我想jit的統計數據會不時觸發第三次調用:) –
的確很奇怪。我預計它會被執行一次SPU,一次在主機上,或者一次只執行一次......用_v_dual和_v_dual_dslice調用它們有什麼區別......它們應該可以幫助你看到我的期望是真的(如果有的話)? –
由於我的其他技術問題,我無法回答你的問題拉爾斯。但是你寫的東西給了我更多的思考,所以謝謝你。 –
聽起來像在我的日記隨機頁:)讓我們知道,如果可行你的想法和修補程序可以讓你弄清楚... –