扩展 UDF 支持多线程并行计算,但有如下限制:
1 UDF 函数的串/并行执行需要由用户自己做出判断,并传入控制参数,数据库无法对 UDF 函数进行串/并行执行的判断。
2 不可并行的 UDF 函数:首先 UDF 函数是一个非确定性函数,即使 UDF传入相同的参数,此 UDF 函数也会获得不同的值,其次这个 UDF 函数对一组数据集合操作得到的结果集还和 UDF 函数对这组数据集合的调用次序有关。(例如 sequence,如果进行并行操作,则会得到如下结果)。
3 gbased对所有 UDF函数默认并行执行: 当 gbase_parallel_execution这个并行开关开启后, gbased 对所有 UDF 函数的默认执行模式也是并行的。在此情况下,如果用户需要串行执行 UDF 函数,需要自行更改UDF 代码,在 UDF_INIT 时,传给 gbased 串行执行的配置参数。参照
下面的例子。
以下是控制 UDF 串行执行的模板示例:
//用户必须提供 my_bool func_init(UDF_INIT *initid, UDF_ARGS *args
char *message);
my_bool func_init (UDF_INIT *initid ,UDF_ARGS *args ,char *messag