Skip to content

Commit 98d3047

Browse files
committed
Merge branch 'funky-version-check'
Conflicts: bin/expected/repack.out bin/sql/repack.sql
2 parents a561c92 + 54ba3c1 commit 98d3047

File tree

12 files changed

+132
-120
lines changed

12 files changed

+132
-120
lines changed

Makefile

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,25 @@
66
# Portions Copyright (c) 2012, The Reorg Development Team
77
#
88

9-
USE_PGXS = 1
10-
PG_CONFIG = pg_config
11-
PGXS := $(shell $(PG_CONFIG) --pgxs)
12-
include $(PGXS)
13-
14-
SUBDIRS = bin lib
9+
PG_CONFIG ?= pg_config
1510

1611
# Pull out the version number from pg_config
17-
VERSION = $(shell $(PG_CONFIG) --version | awk '{print $$2}')
12+
VERSION := $(shell $(PG_CONFIG) --version | awk '{print $$2}')
13+
ifeq ("$(VERSION)","")
14+
$(error pg_config not found)
15+
endif
16+
17+
# version as a number, e.g. 9.1.4 -> 901
18+
INTVERSION := $(shell echo $$(($$(echo $(VERSION) | sed -E 's/([0-9]+)\.([0-9]+).*/\1*100+\2/'))))
1819

1920
# We support PostgreSQL 8.3 and later.
20-
ifneq ($(shell echo $(VERSION) | grep -E "^7\.|^8\.[012]"),)
21+
ifeq ($(shell echo $$(($(INTVERSION) < 803))),1)
2122
$(error pg_repack requires PostgreSQL 8.3 or later. This is $(VERSION))
2223
endif
2324

2425

26+
SUBDIRS = bin lib
27+
2528
all install installdirs uninstall distprep clean distclean maintainer-clean debug:
2629
@for dir in $(SUBDIRS); do \
2730
$(MAKE) -C $$dir $@ || exit; \

bin/Makefile

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,40 @@
55
# Portions Copyright (c) 2011, Itagaki Takahiro
66
# Portions Copyright (c) 2012, The Reorg Development Team
77
#
8+
9+
PG_CONFIG ?= pg_config
10+
11+
# version as a number, e.g. 9.1.4 -> 901
12+
VERSION := $(shell $(PG_CONFIG) --version | awk '{print $$2}')
13+
INTVERSION := $(shell echo $$(($$(echo $(VERSION) | sed -E 's/([0-9]+)\.([0-9]+).*/\1*100+\2/'))))
14+
815
SRCS = pg_repack.c pgut/pgut.c pgut/pgut-fe.c
916
OBJS = $(SRCS:.c=.o)
1017
PROGRAM = pg_repack
11-
REGRESS = init repack tablespace
1218

13-
EXTRA_CLEAN = sql/init-$(MAJORVERSION).sql sql/init.sql
19+
20+
#
21+
# Test suite
22+
#
23+
24+
ifeq ($(shell echo $$(($(INTVERSION) >= 901))),1)
25+
REGRESS := init-extension
26+
else
27+
REGRESS := init-legacy
28+
endif
29+
30+
# plpgsql not available by default on pg < 9.0
31+
ifeq ($(shell echo $$(($(INTVERSION) < 900))),1)
32+
REGRESS += plpgsql
33+
endif
34+
35+
REGRESS += repack tablespace
36+
37+
# This test depends on collate, not supported before 9.1
38+
ifeq ($(shell echo $$(($(INTVERSION) >= 901))),1)
39+
REGRESS += issue3
40+
endif
41+
1442

1543
# The version number of the program. It should be the same of the library.
1644
REPACK_VERSION = $(shell grep '"version":' ../META.json | head -1 \
@@ -33,25 +61,3 @@ include $(PGXS)
3361
LIBS := $(filter-out -lxml2, $(LIBS))
3462
LIBS := $(filter-out -lxslt, $(LIBS))
3563

36-
ifndef MAJORVERSION
37-
MAJORVERSION := $(basename $(VERSION))
38-
endif
39-
40-
sql/init.sql: sql/init-$(MAJORVERSION).sql
41-
cp sql/init-$(MAJORVERSION).sql sql/init.sql
42-
expected/init.out: expected/init-$(MAJORVERSION).out
43-
cp expected/init-$(MAJORVERSION).out expected/init.out
44-
sql/init-8.3.sql:
45-
cp sql/init-legacy.sql sql/init-8.3.sql
46-
sql/init-8.4.sql:
47-
cp sql/init-legacy.sql sql/init-8.4.sql
48-
sql/init-9.0.sql:
49-
cp sql/init-legacy.sql sql/init-9.0.sql
50-
sql/init-9.1.sql:
51-
cp sql/init-extension.sql sql/init-9.1.sql
52-
sql/init-9.2.sql:
53-
cp sql/init-extension.sql sql/init-9.2.sql
54-
sql/init-9.3.sql:
55-
cp sql/init-extension.sql sql/init-9.3.sql
56-
57-
installcheck: sql/init.sql

bin/expected/init-extension.out

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SET client_min_messages = warning;
2+
CREATE EXTENSION pg_repack;
3+
RESET client_min_messages;
File renamed without changes.

bin/expected/issue3.out

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
--
2+
-- pg_repack issue #3
3+
--
4+
CREATE TABLE issue3_1 (col1 int NOT NULL, col2 text NOT NULL);
5+
CREATE UNIQUE INDEX issue3_1_idx ON issue3_1 (col1, col2 DESC);
6+
SELECT repack.get_order_by('issue3_1_idx'::regclass::oid, 'issue3_1'::regclass::oid);
7+
get_order_by
8+
-----------------
9+
col1, col2 DESC
10+
(1 row)
11+
12+
\! pg_repack --dbname=contrib_regression --table=issue3_1
13+
INFO: repacking table "issue3_1"
14+
CREATE TABLE issue3_2 (col1 int NOT NULL, col2 text NOT NULL);
15+
CREATE UNIQUE INDEX issue3_2_idx ON issue3_2 (col1 DESC, col2 text_pattern_ops);
16+
SELECT repack.get_order_by('issue3_2_idx'::regclass::oid, 'issue3_2'::regclass::oid);
17+
get_order_by
18+
---------------------------
19+
col1 DESC, col2 USING ~<~
20+
(1 row)
21+
22+
\! pg_repack --dbname=contrib_regression --table=issue3_2
23+
INFO: repacking table "issue3_2"
24+
CREATE TABLE issue3_3 (col1 int NOT NULL, col2 text NOT NULL);
25+
CREATE UNIQUE INDEX issue3_3_idx ON issue3_3 (col1 DESC, col2 DESC);
26+
SELECT repack.get_order_by('issue3_3_idx'::regclass::oid, 'issue3_3'::regclass::oid);
27+
get_order_by
28+
----------------------
29+
col1 DESC, col2 DESC
30+
(1 row)
31+
32+
\! pg_repack --dbname=contrib_regression --table=issue3_3
33+
INFO: repacking table "issue3_3"
34+
CREATE TABLE issue3_4 (col1 int NOT NULL, col2 text NOT NULL);
35+
CREATE UNIQUE INDEX issue3_4_idx ON issue3_4 (col1 NULLS FIRST, col2 text_pattern_ops DESC NULLS LAST);
36+
SELECT repack.get_order_by('issue3_4_idx'::regclass::oid, 'issue3_4'::regclass::oid);
37+
get_order_by
38+
--------------------------------------------------
39+
col1 NULLS FIRST, col2 DESC USING ~<~ NULLS LAST
40+
(1 row)
41+
42+
\! pg_repack --dbname=contrib_regression --table=issue3_4
43+
INFO: repacking table "issue3_4"
44+
CREATE TABLE issue3_5 (col1 int NOT NULL, col2 text NOT NULL);
45+
CREATE UNIQUE INDEX issue3_5_idx ON issue3_5 (col1 DESC NULLS FIRST, col2 COLLATE "POSIX" DESC);
46+
SELECT repack.get_order_by('issue3_5_idx'::regclass::oid, 'issue3_5'::regclass::oid);
47+
get_order_by
48+
--------------------------------------
49+
col1 DESC, col2 COLLATE "POSIX" DESC
50+
(1 row)
51+
52+
\! pg_repack --dbname=contrib_regression --table=issue3_5
53+
INFO: repacking table "issue3_5"

bin/expected/plpgsql.out

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE LANGUAGE plpgsql;

bin/expected/repack.out

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -327,59 +327,6 @@ INFO: repacking table "tbl_pk_uk"
327327
WARNING: relation "tbl_nn_puk" must have a primary key or not-null unique keys
328328
-- => WARNING
329329
--
330-
-- pg_repack issue #3
331-
--
332-
CREATE TABLE issue3_1 (col1 int NOT NULL, col2 text NOT NULL);
333-
CREATE UNIQUE INDEX issue3_1_idx ON issue3_1 (col1, col2 DESC);
334-
SELECT repack.get_order_by('issue3_1_idx'::regclass::oid, 'issue3_1'::regclass::oid);
335-
get_order_by
336-
-----------------
337-
col1, col2 DESC
338-
(1 row)
339-
340-
\! pg_repack --dbname=contrib_regression --table=issue3_1
341-
INFO: repacking table "issue3_1"
342-
CREATE TABLE issue3_2 (col1 int NOT NULL, col2 text NOT NULL);
343-
CREATE UNIQUE INDEX issue3_2_idx ON issue3_2 (col1 DESC, col2 text_pattern_ops);
344-
SELECT repack.get_order_by('issue3_2_idx'::regclass::oid, 'issue3_2'::regclass::oid);
345-
get_order_by
346-
---------------------------
347-
col1 DESC, col2 USING ~<~
348-
(1 row)
349-
350-
\! pg_repack --dbname=contrib_regression --table=issue3_2
351-
INFO: repacking table "issue3_2"
352-
CREATE TABLE issue3_3 (col1 int NOT NULL, col2 text NOT NULL);
353-
CREATE UNIQUE INDEX issue3_3_idx ON issue3_3 (col1 DESC, col2 DESC);
354-
SELECT repack.get_order_by('issue3_3_idx'::regclass::oid, 'issue3_3'::regclass::oid);
355-
get_order_by
356-
----------------------
357-
col1 DESC, col2 DESC
358-
(1 row)
359-
360-
\! pg_repack --dbname=contrib_regression --table=issue3_3
361-
INFO: repacking table "issue3_3"
362-
CREATE TABLE issue3_4 (col1 int NOT NULL, col2 text NOT NULL);
363-
CREATE UNIQUE INDEX issue3_4_idx ON issue3_4 (col1 NULLS FIRST, col2 text_pattern_ops DESC NULLS LAST);
364-
SELECT repack.get_order_by('issue3_4_idx'::regclass::oid, 'issue3_4'::regclass::oid);
365-
get_order_by
366-
--------------------------------------------------
367-
col1 NULLS FIRST, col2 DESC USING ~<~ NULLS LAST
368-
(1 row)
369-
370-
\! pg_repack --dbname=contrib_regression --table=issue3_4
371-
INFO: repacking table "issue3_4"
372-
CREATE TABLE issue3_5 (col1 int NOT NULL, col2 text NOT NULL);
373-
CREATE UNIQUE INDEX issue3_5_idx ON issue3_5 (col1 DESC NULLS FIRST, col2 COLLATE "POSIX" DESC);
374-
SELECT repack.get_order_by('issue3_5_idx'::regclass::oid, 'issue3_5'::regclass::oid);
375-
get_order_by
376-
--------------------------------------
377-
col1 DESC, col2 COLLATE "POSIX" DESC
378-
(1 row)
379-
380-
\! pg_repack --dbname=contrib_regression --table=issue3_5
381-
INFO: repacking table "issue3_5"
382-
--
383330
-- Triggers handling
384331
--
385332
CREATE FUNCTION trgtest() RETURNS trigger AS

bin/sql/init-extension.sql

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
SET client_min_messages = warning;
2-
\set ECHO none
32
CREATE EXTENSION pg_repack;
4-
\set ECHO all
53
RESET client_min_messages;

bin/sql/issue3.sql

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
--
2+
-- pg_repack issue #3
3+
--
4+
CREATE TABLE issue3_1 (col1 int NOT NULL, col2 text NOT NULL);
5+
CREATE UNIQUE INDEX issue3_1_idx ON issue3_1 (col1, col2 DESC);
6+
SELECT repack.get_order_by('issue3_1_idx'::regclass::oid, 'issue3_1'::regclass::oid);
7+
\! pg_repack --dbname=contrib_regression --table=issue3_1
8+
9+
CREATE TABLE issue3_2 (col1 int NOT NULL, col2 text NOT NULL);
10+
CREATE UNIQUE INDEX issue3_2_idx ON issue3_2 (col1 DESC, col2 text_pattern_ops);
11+
SELECT repack.get_order_by('issue3_2_idx'::regclass::oid, 'issue3_2'::regclass::oid);
12+
\! pg_repack --dbname=contrib_regression --table=issue3_2
13+
14+
CREATE TABLE issue3_3 (col1 int NOT NULL, col2 text NOT NULL);
15+
CREATE UNIQUE INDEX issue3_3_idx ON issue3_3 (col1 DESC, col2 DESC);
16+
SELECT repack.get_order_by('issue3_3_idx'::regclass::oid, 'issue3_3'::regclass::oid);
17+
\! pg_repack --dbname=contrib_regression --table=issue3_3
18+
19+
CREATE TABLE issue3_4 (col1 int NOT NULL, col2 text NOT NULL);
20+
CREATE UNIQUE INDEX issue3_4_idx ON issue3_4 (col1 NULLS FIRST, col2 text_pattern_ops DESC NULLS LAST);
21+
SELECT repack.get_order_by('issue3_4_idx'::regclass::oid, 'issue3_4'::regclass::oid);
22+
\! pg_repack --dbname=contrib_regression --table=issue3_4
23+
24+
CREATE TABLE issue3_5 (col1 int NOT NULL, col2 text NOT NULL);
25+
CREATE UNIQUE INDEX issue3_5_idx ON issue3_5 (col1 DESC NULLS FIRST, col2 COLLATE "POSIX" DESC);
26+
SELECT repack.get_order_by('issue3_5_idx'::regclass::oid, 'issue3_5'::regclass::oid);
27+
\! pg_repack --dbname=contrib_regression --table=issue3_5

bin/sql/plpgsql.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE LANGUAGE plpgsql;

bin/sql/repack.sql

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -188,34 +188,6 @@ CREATE UNIQUE INDEX tbl_nn_puk_pcol1_idx ON tbl_nn_puk(col1) WHERE col1 < 10;
188188
\! pg_repack --dbname=contrib_regression --table=tbl_nn_puk
189189
-- => WARNING
190190

191-
--
192-
-- pg_repack issue #3
193-
--
194-
CREATE TABLE issue3_1 (col1 int NOT NULL, col2 text NOT NULL);
195-
CREATE UNIQUE INDEX issue3_1_idx ON issue3_1 (col1, col2 DESC);
196-
SELECT repack.get_order_by('issue3_1_idx'::regclass::oid, 'issue3_1'::regclass::oid);
197-
\! pg_repack --dbname=contrib_regression --table=issue3_1
198-
199-
CREATE TABLE issue3_2 (col1 int NOT NULL, col2 text NOT NULL);
200-
CREATE UNIQUE INDEX issue3_2_idx ON issue3_2 (col1 DESC, col2 text_pattern_ops);
201-
SELECT repack.get_order_by('issue3_2_idx'::regclass::oid, 'issue3_2'::regclass::oid);
202-
\! pg_repack --dbname=contrib_regression --table=issue3_2
203-
204-
CREATE TABLE issue3_3 (col1 int NOT NULL, col2 text NOT NULL);
205-
CREATE UNIQUE INDEX issue3_3_idx ON issue3_3 (col1 DESC, col2 DESC);
206-
SELECT repack.get_order_by('issue3_3_idx'::regclass::oid, 'issue3_3'::regclass::oid);
207-
\! pg_repack --dbname=contrib_regression --table=issue3_3
208-
209-
CREATE TABLE issue3_4 (col1 int NOT NULL, col2 text NOT NULL);
210-
CREATE UNIQUE INDEX issue3_4_idx ON issue3_4 (col1 NULLS FIRST, col2 text_pattern_ops DESC NULLS LAST);
211-
SELECT repack.get_order_by('issue3_4_idx'::regclass::oid, 'issue3_4'::regclass::oid);
212-
\! pg_repack --dbname=contrib_regression --table=issue3_4
213-
214-
CREATE TABLE issue3_5 (col1 int NOT NULL, col2 text NOT NULL);
215-
CREATE UNIQUE INDEX issue3_5_idx ON issue3_5 (col1 DESC NULLS FIRST, col2 COLLATE "POSIX" DESC);
216-
SELECT repack.get_order_by('issue3_5_idx'::regclass::oid, 'issue3_5'::regclass::oid);
217-
\! pg_repack --dbname=contrib_regression --table=issue3_5
218-
219191
--
220192
-- Triggers handling
221193
--

lib/Makefile

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
# Portions Copyright (c) 2012, The Reorg Development Team
77
#
88

9-
PG_CONFIG = pg_config
9+
PG_CONFIG ?= pg_config
10+
11+
# version as a number, e.g. 9.1.4 -> 901
12+
VERSION := $(shell $(PG_CONFIG) --version | awk '{print $$2}')
13+
INTVERSION := $(shell echo $$(($$(echo $(VERSION) | sed -E 's/([0-9]+)\.([0-9]+).*/\1*100+\2/'))))
1014

1115
EXTENSION = pg_repack
1216
MODULE_big = $(EXTENSION)
@@ -20,10 +24,7 @@ REPACK_VERSION = $(shell grep '"version":' ../META.json | head -1 \
2024
PG_CPPFLAGS = -DREPACK_VERSION=$(REPACK_VERSION)
2125

2226
# Support CREATE EXTENSION for PG >= 9.1 and a simple sql script for PG < 9.1
23-
HAVE_EXTENSION = $(shell $(PG_CONFIG) --version \
24-
| grep -qE " 8\.| 9\.0" && echo no || echo yes)
25-
26-
ifeq ($(HAVE_EXTENSION),yes)
27+
ifeq ($(shell echo $$(($(INTVERSION) >= 901))),1)
2728
DATA_built = pg_repack--$(REPACK_VERSION).sql pg_repack.control
2829
else
2930
DATA_built = pg_repack.sql

0 commit comments

Comments
 (0)