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