Here's another way. I use a function that allows you 
to specify a set # and the schema name to generate the 'SET ADD TABLE' 
commands for.

eg: SELECT public.slony_generate_set_adds(3, 'my_schema');
    will generate statements for all tables in my_schema 
    and prefix them with a set # of 3.

You can adjust it to do a similar gen for sequences.

=======================================================================
CREATE OR REPLACE FUNCTION public.slony_generate_set_adds(int4, text)
  RETURNS void AS
$BODY$

DECLARE

p_set_id        ALIAS FOR $1;
p_schema        ALIAS FOR $2;

v_record        record;
v_schema        TEXT;
v_relname       TEXT;
v_seq           TEXT;
v_prefix_digits INT4;
v_ctr           INT4;

v_msg           TEXT;

BEGIN
        v_prefix_digits := 2;
        v_ctr           := 1;

        SELECT p_set_id::text || LPAD(v_ctr::text, v_prefix_digits, '0')
INTO v_seq;

        FOR v_record IN SELECT n.nspname, c.relname 
          FROM pg_class c
          LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
          LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
         WHERE c.relkind = 'r'::"char"
           AND n.nspname = p_schema
        ORDER BY c.oid

LOOP

        SELECT 'SET ADD TABLE (SET ID=' || p_set_id || ', ORIGIN=1, ID='

                || v_seq || ', FULLY QUALIFIED NAME=\''  
                || v_record.nspname || '.' || v_record.relname || '\',
comment=\'' 
                || v_record.relname || '\') ;' INTO v_msg;

RAISE WARNING '%', v_msg;

        v_ctr := v_ctr +1;
        SELECT p_set_id::text || LPAD(v_ctr::text, v_prefix_digits, '0')
INTO v_seq;

END LOOP;

        v_prefix_digits := 3;
        v_ctr           := 1;

        SELECT p_set_id::text || LPAD(v_ctr::text, v_prefix_digits, '0')
INTO v_seq;

        FOR v_record IN SELECT n.nspname, c.relname 
          FROM pg_class c
          LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
          LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
        WHERE c.relkind = 'S'::"char"
           AND n.nspname = p_schema
        ORDER BY c.oid

LOOP

        SELECT 'SET ADD SEQUENCE (SET ID=' || p_set_id || ', ORIGIN=1,
ID='
                || v_seq || ', FULLY QUALIFIED NAME='
                || '\'' || v_record.nspname || '.'|| v_record.relname ||
'\'' || ', comment='
                || '\'' || v_record.relname || '\');' INTO v_msg;

RAISE WARNING '%', v_msg;

        v_ctr := v_ctr +1;

        SELECT p_set_id::text || LPAD(v_ctr::text, v_prefix_digits, '0')
INTO v_seq;

END LOOP;

  RETURN;

END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

============================================================
Melvin Davidson
Database Developer
Computer & Communication Technologies, Inc.
6 Inverness Court East, Suite 220
Englewood, CO  80112
BEGIN:VCARD
VERSION:2.1
N:Davidson;Melvin
FN:Melvin Davidson
ORG:CCT
TEL;WORK;VOICE:303-708-9228x305
ADR;WORK;ENCODING=QUOTED-PRINTABLE:;;6 Inverness Ct East=0D=0ASuite 220;Englewood;CO;80112;United States
LABEL;WORK;ENCODING=QUOTED-PRINTABLE:6 Inverness Ct East=0D=0ASuite 220=0D=0AEnglewood, CO 80112=0D=0AUnited Stat=
es
EMAIL;PREF;INTERNET:[EMAIL PROTECTED]
REV:20060518T221645Z
END:VCARD
_______________________________________________
Slony1-general mailing list
[email protected]
http://gborg.postgresql.org/mailman/listinfo/slony1-general

Reply via email to