From a4756287b9a77196ee31a84801edf60e73831e8d Mon Sep 17 00:00:00 2001 From: Marko Kreen Date: Fri, 7 May 2010 13:24:00 +0300 Subject: [PATCH] londiste.local_add_table: allow custom args to triggers --- .../functions/londiste.local_add_table.sql | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/sql/londiste/functions/londiste.local_add_table.sql b/sql/londiste/functions/londiste.local_add_table.sql index 630ab676..9a18b501 100644 --- a/sql/londiste/functions/londiste.local_add_table.sql +++ b/sql/londiste/functions/londiste.local_add_table.sql @@ -1,13 +1,14 @@ create or replace function londiste.local_add_table( in i_queue_name text, in i_table_name text, + in i_trg_args text[], out ret_code int4, out ret_note text) as $$ -- ---------------------------------------------------------------------- --- Function: londiste.local_add_table(2) +-- Function: londiste.local_add_table(3) -- --- Register table on Londiste node. +-- Register table on Londiste node, with customizable trigger args. -- -- Returns: -- 200 - Ok @@ -23,6 +24,7 @@ declare logtrg_previous text; logtrg text; tbl record; + i integer; begin fq_table_name := londiste.make_fqname(i_table_name); col_types := londiste.find_column_types(fq_table_name); @@ -101,7 +103,13 @@ begin if not found then logtrg := 'create trigger ' || quote_ident(logtrg_name) || ' after insert or update or delete on ' || londiste.quote_fqname(fq_table_name) - || ' for each row execute procedure pgq.sqltriga(' || quote_literal(i_queue_name) || ')'; + || ' for each row execute procedure pgq.sqltriga(' || quote_literal(i_queue_name); + if i_trg_args is not null then + for i in array_lower(i_trg_args, 1) .. array_upper(i_trg_args, 1) loop + logtrg := logtrg || ', ' || quote_literal(i_trg_args[i]); + end loop; + end if; + logtrg := logtrg || ')'; execute logtrg; end if; @@ -135,5 +143,29 @@ begin select 200, 'Table added: ' || fq_table_name into ret_code, ret_note; return; end; +$$ language plpgsql; + +create or replace function londiste.local_add_table( + in i_queue_name text, + in i_table_name text, + out ret_code int4, + out ret_note text) +as $$ +-- ---------------------------------------------------------------------- +-- Function: londiste.local_add_table(2) +-- +-- Register table on Londiste node. +-- +-- Returns: +-- 200 - Ok +-- 301 - Warning, trigger exists that will fire before londiste one +-- 400 - No such set +-- ---------------------------------------------------------------------- +begin + select f.ret_code, f.ret_note into ret_code, ret_note + from londiste.local_add_table(i_queue_name, i_table_name, null) f; + return; +end; $$ language plpgsql strict; + -- 2.39.5