我正在尝试为逻辑复制创建一个自定义输出插件(Postgres 是 9.5.4 版本,我正在从 Windows 8/64 位机器构建项目 - 安装了 db 的同一台机器)。
我从示例 test_decoding 的代码开始,我试图简单地以新名称重建它并将其安装到 Postgres 中以查看模块是否工作。完成后,我将开始修改代码。
我的项目是在 Visual Studio 2013 中构建的,我采取的唯一步骤是将构建的程序集复制到 Postgres lib 文件夹下。当我运行命令时:
postgres=# SELECT * FROM pg_create_logical_replication_slot('regression_slot', 'my_decoding');
我收到一条错误消息:
输出插件必须声明 _PG_output_plugin_init 符号
在我的代码中,我将函数声明为 extern:
extern void _PG_init(void);
extern void _PG_output_plugin_init(OutputPluginCallbacks *cb);
并且函数的主体在它下面的某个地方定义。
实际代码只是 test_decoding 示例的副本:https ://github.com/postgres/postgres/blob/REL9_5_STABLE/contrib/test_decoding/test_decoding.c
我不确定部署过程是否正常(只是复制 dll)或者是否还有其他步骤。任何人都可以解释一下吗?