I'm trying to create a custom output plugin for logical replication (Postgres is 9.5.4 version and I'm building the project from a Windows 8/64 bit machine - same machine where the db is installed).
I started from the code of the sample test_decoding, and I was trying to simply rebuild it under a new name and install it into Postgres to see if the module works. Once done, I will start modifying the code.
My project is built in Visual Studio 2013 and the only steps I took were to copy the built assembly under Postgres lib folder. When I run the command:
postgres=# SELECT * FROM pg_create_logical_replication_slot('regression_slot', 'my_decoding');
I get an error saying :
output plugins have to declare the _PG_output_plugin_init symbol
In my code, I have the function declared as extern:
extern void _PG_init(void);
extern void _PG_output_plugin_init(OutputPluginCallbacks *cb);
and the body of the function is defined somewhere below it.
The actual code is just a copy of the test_decoding sample: https://github.com/postgres/postgres/blob/REL9_5_STABLE/contrib/test_decoding/test_decoding.c
I'm not sure if the deployment process is ok (just copying the dll) or if there is some other step to take. Can anyone shed some light?