注册Netezza UDF后,我有一个使用UDF的select语句。我发现对于该select语句,UDF的实例化方法被调用两次。知道为什么吗?
样本选择stmt:
select my_udf(somecolumn, 'some parm info') from evtest;
我认为udf的实例化只会被调用一次,但是它会被调用两次,这让我感到困惑。
由于
答案 0 :(得分:1)
我相信在语句准备期间会调用实例化方法,然后在实际执行语句时再次调用它。
我的推理: 我在构造函数中添加了一个logMsg stmt,我看到对于这两个调用中的每一个,日志消息都转到了两个不同的日志文件。这个实验不是用_v_dual完成的,而是用。完成的。
我的logMsg调用都没有转到/nz/kit/log/dbos/dbos.log,这是针对在主机上运行的用户定义函数。
我的日志消息中只有一条转到/nz/kit/log/postgres/pg.log,这是用于在系统目录或语句准备时运行的函数
我的日志消息都转到了 /nz/kit/log/sysmgr/sysmgr.log,用于在SPU上运行的函数。
我认为,这回答了我原来的问题。