Skip to content

Commit 344f928

Browse files
david-rowleytuhaihe
authored andcommitted
Create Postgres-XL specific regression tests
This change adds logic to the Makefile to detect when running on Postgres-XL and run XL specific tests for this case.
1 parent 48cd864 commit 344f928

5 files changed

Lines changed: 192 additions & 14 deletions

File tree

contrib/fixeddecimal/Makefile

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
2-
31
MODULE_big = fixeddecimal
42
OBJS = fixeddecimal.o
53

64
EXTENSION = fixeddecimal
7-
DATA = $(shell $(PG_CONFIG) --version | grep -qE " 9\.[5-9]| 10\.0" && \
8-
cat fixeddecimal--1.0.0_base.sql fixeddecimal--brin.sql > fixeddecimal--1.0.0.tmp | echo fixeddecimal--1.0.0.tmp || \
9-
cat fixeddecimal--1.0.0_base.sql > fixeddecimal--1.0.0.tmp | echo fixeddecimal--1.0.0.tmp) \
10-
$(shell $(PG_CONFIG) --version | grep -qE "XL" && \
11-
cat fixeddecimalaggstate.sql fixeddecimal--1.0.0.tmp fixeddecimal--xlaggs.sql > fixeddecimal--1.0.0.sql | echo fixeddecimal--1.0.0.sql || \
12-
cat fixeddecimal--1.0.0.tmp > fixeddecimal--1.0.0.sql fixeddecimal--aggs.sql | echo fixeddecimal--1.0.0.sql)
5+
AGGSTATESQL := $(shell pg_config --version | grep -qE "XL" && echo fixeddecimalaggstate.sql)
6+
AGGFUNCSSQL := $(shell pg_config --version | grep -qE "XL" && echo fixeddecimal--xlaggs.sql || echo fixeddecimal--aggs.sql)
7+
BRINSQL := $(shell pg_config --version | grep -qE "9\.[5-9]| 10\.0" && echo fixeddecimal--brin.sql)
8+
SQLFILES := $(shell cat $(AGGSTATESQL) fixeddecimal--1.0.0_base.sql $(AGGFUNCSSQL) $(BRINSQL) > fixeddecimal--1.0.0.sql)
9+
10+
DATA = fixeddecimal--1.0.0.sql
1311

1412
MODULES = fixeddecimal
1513

16-
CFLAGS=`pg_config --includedir-server -UXCP`
14+
CFLAGS =`pg_config --includedir-server -UXCP`
1715

18-
TESTS = $(wildcard test/sql/*.sql)
19-
REGRESS = $(shell $(PG_CONFIG) --version | grep -qE " 9\.[5-9]| 10\.0" && \
20-
echo aggregate brin cast comparison index overflow || \
21-
echo aggregate cast comparison index overflow)
16+
TESTS = $(wildcard test/sql/*.sql)
17+
18+
REGRESS_BRIN := $(shell pg_config --version | grep -qE "XL 9\.[5-9]| 10\.0" && echo brin-xl)
19+
REGRESS_BRIN += $(shell pg_config --version | grep -E "9\.[5-9]| 10\.0" | grep -qEv "XL" && echo brin)
20+
REGRESS_VERSION_SPECIFIC := $(shell pg_config --version | grep -qE "XL" && echo index-xl || echo index)
21+
REGRESS = $(shell echo aggregate cast comparison overflow $(REGRESS_BRIN) $(REGRESS_VERSION_SPECIFIC))
2222

2323
REGRESS_OPTS = --inputdir=test --outputdir=test --load-extension=fixeddecimal
2424

@@ -29,4 +29,3 @@ include $(PGXS)
2929
fixeddecimal.so: fixeddecimal.o
3030

3131
fixeddecimal.o: fixeddecimal.c
32-
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
-- Test BRIN indexes
2+
SET enable_seqscan = off;
3+
CREATE TABLE fixdec (d FIXEDDECIMAL, txt TEXT);
4+
INSERT INTO fixdec SELECT s.i,REPEAT('0',64) FROM generate_series(1,10000) s(i);
5+
CREATE INDEX fixdec_d_idx ON fixdec USING BRIN (d);
6+
EXPLAIN (COSTS OFF) SELECT * FROM fixdec WHERE d > '9999'::FIXEDDECIMAL;
7+
QUERY PLAN
8+
---------------------------------------------------------
9+
Remote Subquery Scan on all (datanode_1,datanode_2)
10+
-> Bitmap Heap Scan on fixdec
11+
Recheck Cond: (d > '9999.00'::fixeddecimal)
12+
-> Bitmap Index Scan on fixdec_d_idx
13+
Index Cond: (d > '9999.00'::fixeddecimal)
14+
(5 rows)
15+
16+
SELECT * FROM fixdec WHERE d > '9999'::FIXEDDECIMAL;
17+
d | txt
18+
----------+------------------------------------------------------------------
19+
10000.00 | 0000000000000000000000000000000000000000000000000000000000000000
20+
(1 row)
21+
22+
DROP TABLE fixdec;
23+
RESET enable_seqscan;
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
CREATE TABLE fixdec (id INT, d FIXEDDECIMAL(5,2));
2+
INSERT INTO fixdec (id,d) VALUES(1,-123.45);
3+
INSERT INTO fixdec (id,d) VALUES(2,-123);
4+
INSERT INTO fixdec (id,d) VALUES(3,-12.34);
5+
INSERT INTO fixdec (id,d) VALUES(4,-1.34);
6+
INSERT INTO fixdec (id,d) VALUES(5, 0.12);
7+
INSERT INTO fixdec (id,d) VALUES(6, 1.23);
8+
INSERT INTO fixdec (id,d) VALUES(7, 12.34);
9+
INSERT INTO fixdec (id,d) VALUES(8, 123.45);
10+
INSERT INTO fixdec (id,d) VALUES(9, 123.456);
11+
CREATE INDEX fixdec_d_idx ON fixdec (d);
12+
DELETE FROM fixdec WHERE id = 9;
13+
SET enable_seqscan = off;
14+
EXPLAIN (COSTS OFF) SELECT * FROM fixdec ORDER BY d;
15+
QUERY PLAN
16+
-----------------------------------------------------
17+
Remote Subquery Scan on all (datanode_1,datanode_2)
18+
-> Index Scan using fixdec_d_idx on fixdec
19+
(2 rows)
20+
21+
SELECT * FROM fixdec ORDER BY d;
22+
id | d
23+
----+---------
24+
1 | -123.45
25+
2 | -123.00
26+
3 | -12.34
27+
4 | -1.34
28+
5 | 0.12
29+
6 | 1.23
30+
7 | 12.34
31+
8 | 123.45
32+
(8 rows)
33+
34+
EXPLAIN (COSTS OFF) SELECT * FROM fixdec WHERE d = '12.34'::FIXEDDECIMAL;
35+
QUERY PLAN
36+
-------------------------------------------------------
37+
Remote Subquery Scan on all (datanode_1,datanode_2)
38+
-> Bitmap Heap Scan on fixdec
39+
Recheck Cond: (d = '12.34'::fixeddecimal)
40+
-> Bitmap Index Scan on fixdec_d_idx
41+
Index Cond: (d = '12.34'::fixeddecimal)
42+
(5 rows)
43+
44+
SELECT * FROM fixdec WHERE d = '12.34'::FIXEDDECIMAL;
45+
id | d
46+
----+-------
47+
7 | 12.34
48+
(1 row)
49+
50+
SELECT * FROM fixdec WHERE d = '-12.34'::FIXEDDECIMAL;
51+
id | d
52+
----+--------
53+
3 | -12.34
54+
(1 row)
55+
56+
SELECT * FROM fixdec WHERE d = '123.45'::FIXEDDECIMAL;
57+
id | d
58+
----+--------
59+
8 | 123.45
60+
(1 row)
61+
62+
DROP INDEX fixdec_d_idx;
63+
SET client_min_messages = ERROR;
64+
CREATE INDEX fixdec_d_idx ON fixdec USING hash (d);
65+
RESET client_min_messages;
66+
EXPLAIN (COSTS OFF) SELECT * FROM fixdec WHERE d = '12.34'::FIXEDDECIMAL;
67+
QUERY PLAN
68+
-------------------------------------------------------
69+
Remote Subquery Scan on all (datanode_1,datanode_2)
70+
-> Bitmap Heap Scan on fixdec
71+
Recheck Cond: (d = '12.34'::fixeddecimal)
72+
-> Bitmap Index Scan on fixdec_d_idx
73+
Index Cond: (d = '12.34'::fixeddecimal)
74+
(5 rows)
75+
76+
SELECT * FROM fixdec WHERE d = '12.34'::FIXEDDECIMAL;
77+
id | d
78+
----+-------
79+
7 | 12.34
80+
(1 row)
81+
82+
SELECT * FROM fixdec WHERE d = '-12.34'::FIXEDDECIMAL;
83+
id | d
84+
----+--------
85+
3 | -12.34
86+
(1 row)
87+
88+
SELECT * FROM fixdec WHERE d = '123.45'::FIXEDDECIMAL;
89+
id | d
90+
----+--------
91+
8 | 123.45
92+
(1 row)
93+
94+
DROP TABLE fixdec;
95+
SET enable_seqscan = on;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-- Test BRIN indexes
2+
SET enable_seqscan = off;
3+
CREATE TABLE fixdec (d FIXEDDECIMAL, txt TEXT);
4+
INSERT INTO fixdec SELECT s.i,REPEAT('0',64) FROM generate_series(1,10000) s(i);
5+
6+
CREATE INDEX fixdec_d_idx ON fixdec USING BRIN (d);
7+
8+
EXPLAIN (COSTS OFF) SELECT * FROM fixdec WHERE d > '9999'::FIXEDDECIMAL;
9+
10+
SELECT * FROM fixdec WHERE d > '9999'::FIXEDDECIMAL;
11+
12+
DROP TABLE fixdec;
13+
14+
RESET enable_seqscan;
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
CREATE TABLE fixdec (id INT, d FIXEDDECIMAL(5,2));
2+
3+
INSERT INTO fixdec (id,d) VALUES(1,-123.45);
4+
INSERT INTO fixdec (id,d) VALUES(2,-123);
5+
INSERT INTO fixdec (id,d) VALUES(3,-12.34);
6+
INSERT INTO fixdec (id,d) VALUES(4,-1.34);
7+
INSERT INTO fixdec (id,d) VALUES(5, 0.12);
8+
INSERT INTO fixdec (id,d) VALUES(6, 1.23);
9+
INSERT INTO fixdec (id,d) VALUES(7, 12.34);
10+
INSERT INTO fixdec (id,d) VALUES(8, 123.45);
11+
INSERT INTO fixdec (id,d) VALUES(9, 123.456);
12+
13+
CREATE INDEX fixdec_d_idx ON fixdec (d);
14+
15+
DELETE FROM fixdec WHERE id = 9;
16+
17+
SET enable_seqscan = off;
18+
19+
EXPLAIN (COSTS OFF) SELECT * FROM fixdec ORDER BY d;
20+
21+
SELECT * FROM fixdec ORDER BY d;
22+
23+
EXPLAIN (COSTS OFF) SELECT * FROM fixdec WHERE d = '12.34'::FIXEDDECIMAL;
24+
25+
SELECT * FROM fixdec WHERE d = '12.34'::FIXEDDECIMAL;
26+
27+
SELECT * FROM fixdec WHERE d = '-12.34'::FIXEDDECIMAL;
28+
29+
SELECT * FROM fixdec WHERE d = '123.45'::FIXEDDECIMAL;
30+
31+
DROP INDEX fixdec_d_idx;
32+
33+
SET client_min_messages = ERROR;
34+
CREATE INDEX fixdec_d_idx ON fixdec USING hash (d);
35+
RESET client_min_messages;
36+
37+
EXPLAIN (COSTS OFF) SELECT * FROM fixdec WHERE d = '12.34'::FIXEDDECIMAL;
38+
39+
SELECT * FROM fixdec WHERE d = '12.34'::FIXEDDECIMAL;
40+
41+
SELECT * FROM fixdec WHERE d = '-12.34'::FIXEDDECIMAL;
42+
43+
SELECT * FROM fixdec WHERE d = '123.45'::FIXEDDECIMAL;
44+
45+
DROP TABLE fixdec;
46+
47+
SET enable_seqscan = on;

0 commit comments

Comments
 (0)