postgresql/contrib/rserv/master.sql.in

102 lines
2.0 KiB
MySQL

-- erServer
-- Master server setup for erServer demonstration implementation
-- (c) 2000 Vadim Mikheev, PostgreSQL Inc.
--
--
-- Slave servers
--
drop table _RSERV_SERVERS_;
create table _RSERV_SERVERS_
(
server int4, -- slave server id
host text, -- server' host
port int4, -- server' port
dbase text -- db name
);
--
-- Tables to sync
--
drop table _RSERV_TABLES_;
create table _RSERV_TABLES_
(
tname name, -- table name
cname name, -- column name
reloid oid, -- table oid
key int4 -- key attnum
);
--
-- Log for inserts/updates/deletes to sync-ed tables
--
drop table _RSERV_LOG_;
create table _RSERV_LOG_
(
reloid oid,
logid int4, -- xid of last update xaction
logtime timestamp, -- last update xaction start time
deleted int4, -- deleted or inserted/updated
key text --
);
-- This is to speedup lookup deleted tuples
create index _RSERV_LOG_INDX_DLT_ID_ on _RSERV_LOG_ (deleted, logid);
-- This is to speedup cleanup
create index _RSERV_LOG_INDX_TM_ID_ on _RSERV_LOG_ (logtime, logid);
-- This is to speedup trigger and lookup updated tuples
create index _RSERV_LOG_INDX_REL_KEY_ on _RSERV_LOG_ (reloid, key);
--
-- How much each slave servers are sync-ed
--
drop table _RSERV_SYNC_;
create table _RSERV_SYNC_
(
server int4,
syncid int4, -- from _rserv_sync_seq_
synctime timestamp, --
status int4, -- prepared (0) | applied
minid int4, -- min xid from serializable snapshot
maxid int4, -- max xid from serializable snapshot
active text -- list of active xactions
);
create index _RSERV_SYNC_INDX_SRV_ID_ on _RSERV_SYNC_ (server, syncid);
drop sequence _rserv_sync_seq_;
create sequence _rserv_sync_seq_;
drop function _rserv_log_();
CREATE FUNCTION _rserv_log_()
RETURNS trigger
AS '@MODULE_FILENAME@'
LANGUAGE 'c'
;
drop function _rserv_sync_(int4);
CREATE FUNCTION _rserv_sync_(int4)
RETURNS int4
AS '@MODULE_FILENAME@'
LANGUAGE 'c'
;
drop function _rserv_debug_(int4);
CREATE FUNCTION _rserv_debug_(int4)
RETURNS int4
AS '@MODULE_FILENAME@'
LANGUAGE 'c'
;