1-- tests for functions related to TID handling
2
3CREATE TABLE tid_tab (a int);
4
5-- min() and max() for TIDs
6INSERT INTO tid_tab VALUES (1), (2);
7SELECT min(ctid) FROM tid_tab;
8SELECT max(ctid) FROM tid_tab;
9TRUNCATE tid_tab;
10
11-- Tests for currtid() and currtid2() with various relation kinds
12
13-- Materialized view
14CREATE MATERIALIZED VIEW tid_matview AS SELECT a FROM tid_tab;
15SELECT currtid('tid_matview'::regclass::oid, '(0,1)'::tid); -- fails
16SELECT currtid2('tid_matview'::text, '(0,1)'::tid); -- fails
17INSERT INTO tid_tab VALUES (1);
18REFRESH MATERIALIZED VIEW tid_matview;
19SELECT currtid('tid_matview'::regclass::oid, '(0,1)'::tid); -- ok
20SELECT currtid2('tid_matview'::text, '(0,1)'::tid); -- ok
21DROP MATERIALIZED VIEW tid_matview;
22TRUNCATE tid_tab;
23
24-- Sequence
25CREATE SEQUENCE tid_seq;
26SELECT currtid('tid_seq'::regclass::oid, '(0,1)'::tid); -- ok
27SELECT currtid2('tid_seq'::text, '(0,1)'::tid); -- ok
28DROP SEQUENCE tid_seq;
29
30-- Index, fails with incorrect relation type
31CREATE INDEX tid_ind ON tid_tab(a);
32SELECT currtid('tid_ind'::regclass::oid, '(0,1)'::tid); -- fails
33SELECT currtid2('tid_ind'::text, '(0,1)'::tid); -- fails
34DROP INDEX tid_ind;
35
36-- Partitioned table, no storage
37CREATE TABLE tid_part (a int) PARTITION BY RANGE (a);
38SELECT currtid('tid_part'::regclass::oid, '(0,1)'::tid); -- fails
39SELECT currtid2('tid_part'::text, '(0,1)'::tid); -- fails
40DROP TABLE tid_part;
41
42-- Views
43-- ctid not defined in the view
44CREATE VIEW tid_view_no_ctid AS SELECT a FROM tid_tab;
45SELECT currtid('tid_view_no_ctid'::regclass::oid, '(0,1)'::tid); -- fails
46SELECT currtid2('tid_view_no_ctid'::text, '(0,1)'::tid); -- fails
47DROP VIEW tid_view_no_ctid;
48-- ctid fetched directly from the source table.
49CREATE VIEW tid_view_with_ctid AS SELECT ctid, a FROM tid_tab;
50SELECT currtid('tid_view_with_ctid'::regclass::oid, '(0,1)'::tid); -- fails
51SELECT currtid2('tid_view_with_ctid'::text, '(0,1)'::tid); -- fails
52INSERT INTO tid_tab VALUES (1);
53SELECT currtid('tid_view_with_ctid'::regclass::oid, '(0,1)'::tid); -- ok
54SELECT currtid2('tid_view_with_ctid'::text, '(0,1)'::tid); -- ok
55DROP VIEW tid_view_with_ctid;
56TRUNCATE tid_tab;
57-- ctid attribute with incorrect data type
58CREATE VIEW tid_view_fake_ctid AS SELECT 1 AS ctid, 2 AS a;
59SELECT currtid('tid_view_fake_ctid'::regclass::oid, '(0,1)'::tid); -- fails
60SELECT currtid2('tid_view_fake_ctid'::text, '(0,1)'::tid); -- fails
61DROP VIEW tid_view_fake_ctid;
62
63DROP TABLE tid_tab CASCADE;
64