londiste.local_add_table: use information_schema to get trigger info
authorMarko Kreen <markokr@gmail.com>
Thu, 27 Aug 2009 08:45:55 +0000 (11:45 +0300)
committerMarko Kreen <markokr@gmail.com>
Thu, 27 Aug 2009 08:45:55 +0000 (11:45 +0300)
This allows to filter out only AFTER triggers without
depending on low-level details of pg_catalog.

sql/londiste/functions/londiste.local_add_table.sql

index 250bf6a3d02e253eb00c08cb7ce2c5c69a49c7a7..630ab676798b623c0bfce0121daab9981142c74a 100644 (file)
@@ -112,13 +112,16 @@ begin
     -- Don't report all the trigger names, 8.3 does not have array_accum
     -- available
 
-    select max(tgname)
+    select max(trigger_name)
          into logtrg_previous
-         from pg_catalog.pg_trigger
-        where tgrelid = londiste.find_table_oid(fq_table_name)
-            and not tgisconstraint
-           and substring(tgname from 1 for 10) != '_londiste_'
-            and tgname < logtrg_name;
+         from information_schema.triggers,
+              londiste.split_fqname(fq_table_name)
+        where event_object_schema = schema_part
+            and event_object_table = name_part
+            and condition_timing = 'AFTER'
+           and substring(trigger_name from 1 for 10) != '_londiste_'
+            and substring(trigger_name from char_length(trigger_name) - 6) != '_logger'
+            and trigger_name < logtrg_name;
 
     if logtrg_previous then
        select 301,