将用户定义共享库从 IBM PureData® System for Analytics (Netezza) 迁移到 Db2 Warehouse

对于 PureData® System for AnalyticsDb2® Warehouse,创建和引用用户定义共享库的过程有所不同。在 PureData System for Analytics 中,您可使用 create library 函数来重新创建用户定义共享库。使用 create function 调用中的 dependencies 参数可以重新注册要使用共享库的库。在 Db2 Warehouse 上,在项目中构建的每个库都可用作共享库,以供其他库引用。

开始之前

您必须考虑 Db2 Warehouse 上的以下限制:
  • 仅支持自动装入。
  • 只能在单个用户项目中引用这些库。

关于此任务

以下示例显示如何构建用户定义共享库。

过程

  1. 通过输入以下命令,为调用程序包和被调用程序包创建归档:
    tar -czf called.tar.gz opr.cpp opr.h
    tar -czf calling.tar.gz udsf1.cpp opr.h
  2. 通过使用 ida buildlib CLPPlus 命令,为被调用项目构建共享库:
    SQL> ida buildlib project called source called.tar.g
  3. 在调用项目中构建实际的用户定义库,然后注册 sl_udf UDX:
    SQL> ida deployudx proj calling source calling.tar.gz uselib called 
    class CUdf sig "sl_udf(integer, integer)" return integer

    要在程序包中引用特定的库,请将 uselib called 参数替换为 uselib called:libcalled.so 参数。如果没有明确指定,那么会通过对项目名称添加前缀 lib 和扩展名 .so,创建被引用项目中的缺省库名。

结果

现在,可以使用引用共享库的 UDX 作为任何其他函数,例如:
SQL> select sl_udf(col1, col2) from table1;