[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Call for testing experimental patch
- Subject: Call for testing experimental patch
- From: "Chris Travers" <..hidden..>
- Date: Mon, 11 Sep 2006 22:49:15 -0700
This patch will hopefully get included with the next version but I want
to put it through some more vetting first.  I am testing it on my
production machines.
What it does is install a shadow table with a primary key index which
ensures that transaciton id's are unique across tables.  I see no
concerns about integrity of production data.
Ideas and feedback are welcome.
Best Wishes,
Chris Travers
begin;
create table id_tracker (
  id int PRIMARY KEY,
  table_name text
);
insert into id_tracker (id, table_name) SELECT id, 'ap' FROM ap;
CREATE RULE ap_id_track_i AS ON insert TO ap 
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'ap');
CREATE RULE ap_id_track_u AS ON update TO ap 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'business' FROM business;
CREATE RULE business_id_track_i AS ON insert TO business 
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'business');
CREATE RULE business_id_track_u AS ON update TO business 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'chart' FROM chart;
CREATE RULE chart_id_track_i AS ON insert TO chart 
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'chart');
CREATE RULE chart_id_track_u AS ON update TO chart 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'customer' FROM customer;
CREATE RULE customer_id_track_i AS ON insert TO customer
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'customer');
CREATE RULE customer_id_track_u AS ON update TO customer 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'department' FROM department;
CREATE RULE department_id_track_i AS ON insert TO department
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'department');
CREATE RULE department_id_track_u AS ON update TO department 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'employee' FROM employee;
CREATE RULE employee_id_track_i AS ON insert TO employee
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'employee');
CREATE RULE employee_id_track_u AS ON update TO employee
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'gl' FROM gl;
CREATE RULE gl_id_track_i AS ON insert TO gl
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'gl');
CREATE RULE gl_id_track_u AS ON update TO gl 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'oe' FROM oe;
CREATE RULE oe_id_track_i AS ON insert TO oe
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'oe');
CREATE RULE oe_id_track_u AS ON update TO oe 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'parts' FROM parts;
CREATE RULE parts_id_track_i AS ON insert TO parts
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'parts');
CREATE RULE parts_id_track_u AS ON update TO parts 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'partsgroup' FROM partsgroup;
CREATE RULE partsgroup_id_track_i AS ON insert TO partsgroup
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'partsgroup');
CREATE RULE partsgroup_id_track_u AS ON update TO partsgroup 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'pricegroup' FROM pricegroup;
CREATE RULE pricegroup_id_track_i AS ON insert TO pricegroup
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'pricegroup');
CREATE RULE pricegroup_id_track_u AS ON update TO pricegroup 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'project' FROM project;
CREATE RULE project_id_track_i AS ON insert TO chart 
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'project');
CREATE RULE project_id_track_u AS ON update TO project 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'vendor' FROM vendor;
CREATE RULE vendor_id_track_i AS ON insert TO vendor
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'vendor');
CREATE RULE employee_id_track_u AS ON update TO vendor 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
INSERT INTO id_tracker (id, table_name) SELECT id, 'warehouse' FROM warehouse;
CREATE RULE warehouse_id_track_i AS ON insert TO warehouse
DO ALSO INSERT INTO id_tracker (id, table_name) VALUES (new.id, 'employee');
CREATE RULE warehouse_id_track_u AS ON update TO warehouse 
DO ALSO UPDATE id_tracker SET id = new.id WHERE id = old.id;
commit;