afterlog.sql

application/octet-stream

Filename: afterlog.sql
Type: application/octet-stream
Part: 1
Message: Re: plpython3
CREATE TABLE replica_log (
	id SERIAL PRIMARY KEY,
	sql text NOT NULL
);

-- Start with something simple. key-value table.
CREATE TABLE test_trig (key text PRIMARY KEY, value text);
CREATE TRIGGER test_trig_replica AFTER INSERT OR DELETE OR UPDATE
 ON test_trig FOR EACH ROW EXECUTE PROCEDURE log_manipulation('test_trig', 'key');

INSERT INTO test_trig VALUES ('fluffy', 'bunnies');
INSERT INTO test_trig VALUES ('foo', 'bar');
UPDATE test_trig SET value = 'kittens' WHERE key = 'fluffy';
DELETE FROM test_trig WHERE key = 'foo';

-- On to something more interesting =)
CREATE TABLE more_interesting (
	id SERIAL PRIMARY KEY,
	-- composite array.
	array_data test_trig[]
);
CREATE TRIGGER more_interesting_replica AFTER INSERT OR DELETE OR UPDATE
 ON more_interesting FOR EACH ROW EXECUTE PROCEDURE log_manipulation('more_interesting', 'id');

INSERT INTO more_interesting VALUES (DEFAULT, ARRAY[
	ROW('key', 'value'), ROW('hairless', 'cats')
]::test_trig[]);
UPDATE more_interesting SET id = 12, array_data = NULL;

-- for no particular reason...
INSERT INTO more_interesting VALUES (DEFAULT, ARRAY[[ROW('foo', 'bar')],[ROW('key','value')]]::test_trig[]);
UPDATE more_interesting SET id = 1 WHERE id = 12;