summaryrefslogtreecommitdiff
path: root/sql/txid/txid.std.sql
blob: 574e2e5c94961244523f5868e0be54599bc1ee2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
-- ----------
-- txid.sql
--
--	SQL script for loading the transaction ID compatible datatype 
--
--	Copyright (c) 2003-2004, PostgreSQL Global Development Group
--	Author: Jan Wieck, Afilias USA INC.
--
-- ----------

set client_min_messages = 'warning';

CREATE DOMAIN txid AS bigint CHECK (value > 0);

--
-- A special transaction snapshot data type for faster visibility checks
--
CREATE OR REPLACE FUNCTION txid_snapshot_in(cstring)
	RETURNS txid_snapshot
	AS 'MODULE_PATHNAME' LANGUAGE C
	IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION txid_snapshot_out(txid_snapshot)
	RETURNS cstring
	AS 'MODULE_PATHNAME' LANGUAGE C
	IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION txid_snapshot_recv(internal)
	RETURNS txid_snapshot
	AS 'MODULE_PATHNAME' LANGUAGE C
	IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION txid_snapshot_send(txid_snapshot)
	RETURNS bytea
	AS 'MODULE_PATHNAME' LANGUAGE C
	IMMUTABLE STRICT;

--
-- The data type itself
--
CREATE TYPE txid_snapshot (
	INPUT = txid_snapshot_in,
	OUTPUT = txid_snapshot_out,
    RECEIVE = txid_snapshot_recv,
    SEND = txid_snapshot_send,
	INTERNALLENGTH = variable,
	STORAGE = extended,
	ALIGNMENT = double
);

--CREATE OR REPLACE FUNCTION get_current_txid()
CREATE OR REPLACE FUNCTION txid_current()
	RETURNS bigint
	AS 'MODULE_PATHNAME', 'txid_current' LANGUAGE C
	STABLE SECURITY DEFINER;

-- CREATE OR REPLACE FUNCTION get_current_snapshot()
CREATE OR REPLACE FUNCTION txid_current_snapshot()
	RETURNS txid_snapshot
	AS 'MODULE_PATHNAME', 'txid_current_snapshot' LANGUAGE C
	STABLE SECURITY DEFINER;

--CREATE OR REPLACE FUNCTION get_snapshot_xmin(txid_snapshot)
CREATE OR REPLACE FUNCTION txid_snapshot_xmin(txid_snapshot)
	RETURNS bigint
	AS 'MODULE_PATHNAME', 'txid_snapshot_xmin' LANGUAGE C
	IMMUTABLE STRICT;

-- CREATE OR REPLACE FUNCTION get_snapshot_xmax(txid_snapshot)
CREATE OR REPLACE FUNCTION txid_snapshot_xmax(txid_snapshot)
	RETURNS bigint
	AS 'MODULE_PATHNAME', 'txid_snapshot_xmax' LANGUAGE C
	IMMUTABLE STRICT;

-- CREATE OR REPLACE FUNCTION get_snapshot_active(txid_snapshot)
CREATE OR REPLACE FUNCTION txid_snapshot_xip(txid_snapshot)
	RETURNS setof bigint
	AS 'MODULE_PATHNAME', 'txid_snapshot_xip' LANGUAGE C
	IMMUTABLE STRICT;


--
-- Special comparision functions used by the remote worker
-- for sync chunk selection
--
CREATE OR REPLACE FUNCTION txid_visible_in_snapshot(bigint, txid_snapshot)
	RETURNS boolean
	AS 'MODULE_PATHNAME', 'txid_visible_in_snapshot' LANGUAGE C
	IMMUTABLE STRICT;
/*
CREATE OR REPLACE FUNCTION txid_in_snapshot(bigint, txid_snapshot)
	RETURNS boolean
	AS 'MODULE_PATHNAME', 'txid_in_snapshot' LANGUAGE C
	IMMUTABLE STRICT;

CREATE OR REPLACE FUNCTION txid_not_in_snapshot(bigint, txid_snapshot)
	RETURNS boolean
	AS 'MODULE_PATHNAME', 'txid_not_in_snapshot' LANGUAGE C
	IMMUTABLE STRICT;
*/