[Bucardo-general] understanding customcode and conditional trigger execution

Greg Sabino Mullane greg at endpoint.com
Sun Apr 29 03:09:33 UTC 2012


On Mon, Apr 23, 2012 at 08:52:34PM +0500, Ali Asad Lotia wrote:
> Greetings All,
> I'm a complete Bucardo noob and have just installed Bucardo 4.99.x/5 in
> order to do Postgres to MongoDB replication. In my scenario, I need to
> figure out if it is possible to replicate conditionally. 
> The applications writing to the source database set their application_name, 
> I need to check the application_name when a transaction occurs and ignore 
> the transaction if application_name is set to a known set of values. Are 
> there docs beyond what is in the wiki at 
> http://bucardo.org/wiki/Bucardo/tables/bucardo.customcode I'm also
> wondering at what the customcode_whenrun value should be for that bit of
> customcode.

A customcode is too late: at that point, the only record we (Bucardo) has 
is the timestamp and the primary key of the change. I think what you want 
is a custom trigger on the table(s) in question. These are made by populating 
the bucardo_custom_trigger table. Specifically, you'll want to make a near 
copy of the existing "delta" function. Then you'd add some logic to the top 
of it, before the 
  IF (TG_OP = 'INSERT') THEN
bit, to have the trigger do nothing if the application_name does not match.

For example:

  DECLARE appname TEXT;
...
  SELECT INTO appname
    setting FROM pg_settings WHERE name = 'application_name';
  IF appname = 'unimportant_app' THEN
    RETURN NULL;
  END IF;
  IF (TG_OP = 'INSERT') THEN
...

Once you have that in place in the bucardo_custom_trigger table, you should 
be able to do a validate sync and have it add the new function. At that 
point, you can drop the original delta function.

Yes, docs are sorely lacking in these areas!

-- 
Greg Sabino Mullane greg at endpoint.com
End Point Corporation
PGP Key: 0x14964AC8
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 163 bytes
Desc: not available
URL: <https://mail.endcrypt.com/pipermail/bucardo-general/attachments/20120428/c4cf458e/attachment.sig>


More information about the Bucardo-general mailing list