将元数据添加到 C++ 库

您可以将诸如作者姓名、库版本以及库描述之类的元数据添加到您的库。此元数据可以让您跟踪在 Vertica 分析数据库群集上部署的函数的版本并让您函数的第三方用户了解该函数的创建者。库加载到 Vertica 分析数据库编录之后,库的元数据会出现在 USER_LIBRARIES 系统表中。

可通过在 UDx 的一个源文件中调用 RegisterLibrary() 函数为库声明元数据。如果 UDx 的源文件中存在多个函数调用,则使用在 Vertica 分析数据库加载库时最后解释的函数调用来确定库的元数据。

RegisterLibrary() 函数采用八个字符串参数:

RegisterLibrary(author,
                library_build_tag,
                library_version,
                library_sdk_version,
                source_url,
                description,
                licenses_required,
                signature);
  • author 包含要与库创建相关联的名称(例如自己的名称或公司名称)。

  • library_build_tag 为用于代表库的特定版本的字符串(例如 SVN 修订号或编译库的时间戳)。开发库实例时,跟踪这些库实例很有用。

  • library_version 为库的版本。您可以使用想使用的任何编号或命名方案。

  • library_sdk_version 是已为其编译了库的 Vertica 分析数据库 SDK 库的版本。

  • source_url 为函数用户可从中查找函数详细信息的 URL。这可以是您公司的网站、托管库源代码的 GitHub 页面或您喜欢的任何站点。

  • description 为库的简要描述。

  • licenses_required 为许可信息占位符。您必须为此值传递一个空字符串。

  • signature 为对库进行身份验证的签名的占位符。您必须为此值传递一个空字符串。

例如,以下代码演示了向 Add2Ints 示例添加元数据(请参阅 C++ 示例:Add2Ints)。

// Register the factory with Vertica
RegisterFactory(Add2IntsFactory);

// Register the library's metadata.
RegisterLibrary("Whizzo Analytics Ltd.",
                "1234",
                "2.0",
                "7.0.0",
                "http://www.example.com/add2ints",
                "Add 2 Integer Library",
                "",
                "");

加载库并查询 USER_LIBRARIES 系统表将显示调用 RegisterLibrary() 提供的元数据:

=> CREATE LIBRARY add2intslib AS '/home/dbadmin/add2ints.so';
CREATE LIBRARY
=> \x
Expanded display is on.
=> SELECT * FROM USER_LIBRARIES WHERE lib_name = 'add2intslib';
-[ RECORD 1 ]-----+----------------------------------------
schema_name       | public
lib_name          | add2intslib
lib_oid           | 45035996273869808
author            | Whizzo Analytics Ltd.
owner_id          | 45035996273704962
lib_file_name     | public_add2intslib_45035996273869808.so
md5_sum           | 732c9e145d447c8ac6e7304313d3b8a0
sdk_version       | v7.0.0-20131105
revision          | 125200
lib_build_tag     | 1234
lib_version       | 2.0
lib_sdk_version   | 7.0.0
source_url        | http://www.example.com/add2ints
description       | Add 2 Integer Library
licenses_required |
signature         |