1 |
-- erServer |
2 |
-- Master server setup for erServer demonstration implementation |
3 |
-- (c) 2000 Vadim Mikheev, PostgreSQL Inc. |
4 |
-- |
5 |
|
6 |
-- |
7 |
-- Slave servers |
8 |
-- |
9 |
drop table _RSERV_SERVERS_; |
10 |
|
11 |
create table _RSERV_SERVERS_ |
12 |
( |
13 |
server int4, -- slave server id |
14 |
host text, -- server' host |
15 |
port int4, -- server' port |
16 |
dbase text -- db name |
17 |
); |
18 |
|
19 |
|
20 |
-- |
21 |
-- Tables to sync |
22 |
-- |
23 |
drop table _RSERV_TABLES_; |
24 |
|
25 |
create table _RSERV_TABLES_ |
26 |
( |
27 |
tname name, -- table name |
28 |
cname name, -- column name |
29 |
reloid oid, -- table oid |
30 |
key int4 -- key attnum |
31 |
); |
32 |
|
33 |
|
34 |
-- |
35 |
-- Log for inserts/updates/deletes to sync-ed tables |
36 |
-- |
37 |
drop table _RSERV_LOG_; |
38 |
|
39 |
create table _RSERV_LOG_ |
40 |
( |
41 |
reloid oid, |
42 |
logid int4, -- xid of last update xaction |
43 |
logtime timestamp, -- last update xaction start time |
44 |
deleted int4, -- deleted or inserted/updated |
45 |
key text -- |
46 |
); |
47 |
|
48 |
-- This is to speedup lookup deleted tuples |
49 |
create index _RSERV_LOG_INDX_DLT_ID_ on _RSERV_LOG_ (deleted, logid); |
50 |
|
51 |
-- This is to speedup cleanup |
52 |
create index _RSERV_LOG_INDX_TM_ID_ on _RSERV_LOG_ (logtime, logid); |
53 |
|
54 |
-- This is to speedup trigger and lookup updated tuples |
55 |
create index _RSERV_LOG_INDX_REL_KEY_ on _RSERV_LOG_ (reloid, key); |
56 |
|
57 |
|
58 |
-- |
59 |
-- How much each slave servers are sync-ed |
60 |
-- |
61 |
drop table _RSERV_SYNC_; |
62 |
|
63 |
create table _RSERV_SYNC_ |
64 |
( |
65 |
server int4, |
66 |
syncid int4, -- from _rserv_sync_seq_ |
67 |
synctime timestamp, -- |
68 |
status int4, -- prepared (0) | applied |
69 |
minid int4, -- min xid from serializable snapshot |
70 |
maxid int4, -- max xid from serializable snapshot |
71 |
active text -- list of active xactions |
72 |
); |
73 |
|
74 |
create index _RSERV_SYNC_INDX_SRV_ID_ on _RSERV_SYNC_ (server, syncid); |
75 |
|
76 |
drop sequence _rserv_sync_seq_; |
77 |
create sequence _rserv_sync_seq_; |
78 |
|
79 |
drop function _rserv_log_(); |
80 |
|
81 |
CREATE FUNCTION _rserv_log_() |
82 |
RETURNS opaque |
83 |
AS '_OBJWD_/rserv_DLSUFFIX_' |
84 |
LANGUAGE 'c' |
85 |
; |
86 |
|
87 |
drop function _rserv_sync_(int4); |
88 |
|
89 |
CREATE FUNCTION _rserv_sync_(int4) |
90 |
RETURNS int4 |
91 |
AS '_OBJWD_/rserv_DLSUFFIX_' |
92 |
LANGUAGE 'c' |
93 |
; |
94 |
|
95 |
drop function _rserv_debug_(int4); |
96 |
|
97 |
CREATE FUNCTION _rserv_debug_(int4) |
98 |
RETURNS int4 |
99 |
AS '_OBJWD_/rserv_DLSUFFIX_' |
100 |
LANGUAGE 'c' |
101 |
; |