mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	only remnant of this failed experiment is that the server will take SET AUTOCOMMIT TO ON. Still TODO: provide some client-side autocommit logic in libpq.
		
			
				
	
	
		
			44 lines
		
	
	
		
			1001 B
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1001 B
		
	
	
	
		
			SQL
		
	
	
	
	
	
| 
 | |
| CREATE FUNCTION "recordchange" () RETURNS trigger AS
 | |
| '/usr/local/pgsql/lib/pending.so', 'recordchange' LANGUAGE 'C';
 | |
| 
 | |
| CREATE TABLE "MirrorHost" (
 | |
| "MirrorHostId" serial,
 | |
| "HostName" varchar NOT NULL,
 | |
| PRIMARY KEY("MirrorHostId")
 | |
| );
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| CREATE TABLE "Pending" (
 | |
| "SeqId" serial,
 | |
| "TableName" varchar NOT NULL,
 | |
| "Op" character,
 | |
| "XID" int4 NOT NULL,
 | |
| PRIMARY KEY ("SeqId")
 | |
| 
 | |
| );
 | |
| 
 | |
| CREATE INDEX "Pending_XID_Index" ON "Pending" ("XID");
 | |
| 
 | |
| CREATE TABLE "PendingData" (
 | |
| "SeqId" int4 NOT NULL,
 | |
| "IsKey" bool NOT NULL,
 | |
| "Data" varchar,
 | |
| PRIMARY KEY ("SeqId", "IsKey") ,
 | |
| FOREIGN KEY ("SeqId") REFERENCES "Pending" ("SeqId") ON UPDATE CASCADE  ON DELETE CASCADE
 | |
| );
 | |
| 
 | |
| 
 | |
| CREATE TABLE "MirroredTransaction" (
 | |
| "XID" int4 NOT NULL,
 | |
| "LastSeqId" int4 NOT NULL,
 | |
| "MirrorHostId" int4 NOT NULL,
 | |
| PRIMARY KEY  ("XID","MirrorHostId"),
 | |
| FOREIGN KEY ("MirrorHostId") REFERENCES "MirrorHost" ("MirrorHostId") ON UPDATE CASCADE ON DELETE CASCADE,
 | |
| FOREIGN KEY ("LastSeqId") REFERENCES "Pending" ("SeqId")  ON UPDATE
 | |
| CASCADE ON DELETE CASCADE
 | |
| );
 |