mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
f85f43dfb5
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
|
|
);
|