404 | Sequence not found: public.masterseq
(1 row)
+-- seq auto-removal
+create table seqtable (
+ id1 serial primary key,
+ id2 bigserial not null
+);
+select * from londiste.local_add_table('seqroot', 'seqtable');
+ ret_code | ret_note
+----------+------------------------------
+ 200 | Table added: public.seqtable
+(1 row)
+
+select * from londiste.local_add_seq('seqroot', 'seqtable_id1_seq');
+ ret_code | ret_note
+----------+-----------------------------------------
+ 200 | Sequence added: public.seqtable_id1_seq
+(1 row)
+
+select * from londiste.local_add_seq('seqroot', 'seqtable_id2_seq');
+ ret_code | ret_note
+----------+-----------------------------------------
+ 200 | Sequence added: public.seqtable_id2_seq
+(1 row)
+
+select * from londiste.get_table_list('seqroot');
+ table_name | local | merge_state | custom_snapshot | table_attrs | dropped_ddl | copy_role | copy_pos | dest_table
+-----------------+-------+-------------+-----------------+-------------+-------------+-----------+----------+------------
+ public.seqtable | t | ok | | | | | 0 |
+(1 row)
+
+select * from londiste.get_seq_list('seqroot');
+ seq_name | last_value | local
+-------------------------+------------+-------
+ public.seqtable_id1_seq | 30001 | t
+ public.seqtable_id2_seq | 30001 | t
+(2 rows)
+
+select * from londiste.local_remove_table('seqroot', 'seqtable');
+ ret_code | ret_note
+----------+--------------------------------
+ 200 | Table removed: public.seqtable
+(1 row)
+
+select * from londiste.get_seq_list('seqroot');
+ seq_name | last_value | local
+----------+------------+-------
+(0 rows)
+
-- ----------------------------------------------------------------------
declare
fq_table_name text;
+ qtbl text;
+ seqname text;
tbl record;
+ tbl_oid oid;
begin
fq_table_name := londiste.make_fqname(i_table_name);
+ qtbl := londiste.quote_fqname(fq_table_name);
+ tbl_oid := londiste.find_table_oid(i_table_name);
select local into tbl
from londiste.table_info
dest_table = null
where queue_name = i_queue_name
and table_name = fq_table_name;
+
+ -- drop dependent sequence
+ for seqname in
+ select n.nspname || '.' || s.relname
+ from pg_catalog.pg_class s,
+ pg_catalog.pg_namespace n,
+ pg_catalog.pg_attribute a
+ where a.attrelid = tbl_oid
+ and a.atthasdef
+ and a.atttypid::regtype::text in ('integer', 'bigint')
+ and s.oid = pg_get_serial_sequence(qtbl, a.attname)::regclass::oid
+ and n.oid = s.relnamespace
+ loop
+ perform londiste.local_remove_seq(i_queue_name, seqname);
+ end loop;
else
if not pgq_node.is_root_node(i_queue_name) then
select 400, 'Table not registered locally: ' || fq_table_name into ret_code, ret_note;
select * from londiste.local_remove_seq('seqbranch', 'masterseq');
select * from londiste.local_remove_seq('seqbranch', 'masterseq');
+-- seq auto-removal
+create table seqtable (
+ id1 serial primary key,
+ id2 bigserial not null
+);
+select * from londiste.local_add_table('seqroot', 'seqtable');
+select * from londiste.local_add_seq('seqroot', 'seqtable_id1_seq');
+select * from londiste.local_add_seq('seqroot', 'seqtable_id2_seq');
+
+select * from londiste.get_table_list('seqroot');
+select * from londiste.get_seq_list('seqroot');
+
+select * from londiste.local_remove_table('seqroot', 'seqtable');
+
+select * from londiste.get_seq_list('seqroot');