Files
repmgr/repmgr--4.0.sql
2017-06-29 09:35:09 +09:00

59 lines
1.6 KiB
SQL

-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION repmgr" to load this file. \quit
CREATE TABLE nodes (
node_id INTEGER PRIMARY KEY,
upstream_node_id INTEGER NULL REFERENCES nodes (node_id) DEFERRABLE,
active BOOLEAN NOT NULL DEFAULT TRUE,
node_name TEXT NOT NULL,
type TEXT NOT NULL CHECK (type IN('primary','standby','witness','bdr')),
priority INT NOT NULL DEFAULT 100,
conninfo TEXT NOT NULL,
repluser TEXT NOT NULL,
slot_name TEXT NULL
);
CREATE TABLE events (
node_id INTEGER NOT NULL,
event TEXT NOT NULL,
successful BOOLEAN NOT NULL DEFAULT TRUE,
event_timestamp TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
details TEXT NULL
);
CREATE VIEW show_nodes AS
SELECT n.node_id,
n.node_name,
un.node_name AS upstream_node_name,
n.type,
n.priority,
n.conninfo
FROM nodes n
LEFT JOIN nodes un
ON un.node_id = n.upstream_node_id;
/* repmgrd functions */
CREATE FUNCTION request_vote(INT, pg_lsn)
RETURNS INT
AS '$libdir/repmgr', 'request_vote'
LANGUAGE C STRICT;
CREATE FUNCTION get_voting_status()
RETURNS INT
AS '$libdir/repmgr', 'get_voting_status'
LANGUAGE C STRICT;
CREATE FUNCTION set_voting_status_initiated()
RETURNS VOID
AS '$libdir/repmgr', 'set_voting_status_initiated'
LANGUAGE C STRICT;
CREATE FUNCTION other_node_is_candidate(INT)
RETURNS BOOL
AS '$libdir/repmgr', 'other_node_is_candidate'
LANGUAGE C STRICT;