Automatic assignment of replication sets for new tables
The event trigger facility can be used for describing rules which define replication sets for newly created tables.
Example:
CREATE OR REPLACE FUNCTION spock_assign_repset()
RETURNS event_trigger AS $$
DECLARE obj record;
BEGIN
FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands()
LOOP
IF obj.object_type = 'table' THEN
IF obj.schema_name = 'config' THEN
PERFORM spock.repset_add_table('configuration', obj.objid);
ELSIF NOT obj.in_extension THEN
PERFORM spock.repset_add_table('default', obj.objid);
END IF;
END IF;
END LOOP;
END;
$$ LANGUAGE plpgsql;
CREATE EVENT TRIGGER spock_assign_repset_trg
ON ddl_command_end
WHEN TAG IN ('CREATE TABLE', 'CREATE TABLE AS')
EXECUTE PROCEDURE spock_assign_repset();
The code snippet shown above puts all new tables created in the config
schema into
a replication set named configuration
, and all other new tables which are not created
by extensions will go into the default
replication set.