Skip to content

Commit 9825c77

Browse files
committed
Change @ operator signature to (unit, text)
Closes #6
1 parent 6b4f6d8 commit 9825c77

File tree

10 files changed

+687
-16
lines changed

10 files changed

+687
-16
lines changed

Makefile

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ EXTENSION = unit
44
DATA = unit_prefixes.data unit_units.data \
55
unit--1.sql unit--1--2.sql \
66
unit--2.sql
7-
DATA_built = unit--2--3.sql unit--3.sql
7+
DATA_built = unit--2--3.sql unit--3.sql \
8+
unit--3--4.sql unit--4.sql
89
REGRESS = extension tables unit unicode prefix units temperature functions derived compare aggregate iec custom
910
EXTRA_CLEAN = unitparse.yy.* powers powers.o unit-*.dump # unitparse.tab.*
1011

debian/changelog

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
postgresql-unit (3.2) UNRELEASED; urgency=medium
1+
postgresql-unit (4.0) UNRELEASED; urgency=medium
22

33
* Support exponents written using Unicode superscript characters.
44
* Report 22P02/invalid_text_representation on invalid unit input.
55
* Fix crash when unit_reset() runs into an OOM error. Patch by Andreas
66
Seltenreich, thanks!
7+
* Change @ operator signature to (unit, text).
78

8-
-- Christoph Berg <[email protected]> Sat, 08 Apr 2017 18:36:50 +0200
9+
-- Christoph Berg <[email protected]> Fri, 07 Jul 2017 21:42:13 +0200
910

1011
postgresql-unit (3.1) experimental; urgency=medium
1112

expected/convert.out

+5-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ WITH
99
('yd'),
1010
('mi'))
1111
SELECT
12-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
12+
l1.u, l2.u, l1.u::unit @ l2.u
1313
FROM
1414
l l1 CROSS JOIN l l2
1515
\crosstabview
@@ -35,7 +35,7 @@ WITH
3535
('yd^2'),
3636
('mi^2'))
3737
SELECT
38-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
38+
l1.u, l2.u, l1.u::unit @ l2.u
3939
FROM
4040
l l1 CROSS JOIN l l2
4141
\crosstabview
@@ -60,7 +60,7 @@ WITH
6060
('ft^3'),
6161
('yd^3'))
6262
SELECT
63-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
63+
l1.u, l2.u, l1.u::unit @ l2.u
6464
FROM
6565
l l1 CROSS JOIN l l2
6666
\crosstabview
@@ -83,7 +83,7 @@ WITH
8383
('oz'),
8484
('lb'))
8585
SELECT
86-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
86+
l1.u, l2.u, l1.u::unit @ l2.u
8787
FROM
8888
l l1 CROSS JOIN l l2
8989
\crosstabview
@@ -105,7 +105,7 @@ WITH
105105
('d'),
106106
('julianyear'))
107107
SELECT
108-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
108+
l1.u, l2.u, l1.u::unit @ l2.u
109109
FROM
110110
l l1 CROSS JOIN l l2
111111
\crosstabview

expected/upgrade.out

+13-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,18 @@ BEGIN;
3939
COMMIT;
4040
\! pg_dump -f unit-2-3.dump -T pg_depend_save
4141
INSERT INTO pg_depend SELECT * FROM pg_depend_save;
42+
-- upgrade to version 4
43+
ALTER EXTENSION unit UPDATE TO "4";
44+
BEGIN;
45+
DELETE FROM pg_depend_save;
46+
WITH
47+
ext AS (DELETE FROM pg_depend WHERE refobjid =
48+
(SELECT oid FROM pg_extension WHERE extname = 'unit')
49+
RETURNING *)
50+
INSERT INTO pg_depend_save SELECT * FROM ext;
51+
COMMIT;
52+
\! pg_dump -f unit-3-4.dump -T pg_depend_save
53+
INSERT INTO pg_depend SELECT * FROM pg_depend_save;
4254
-- reinstall latest version
4355
DROP EXTENSION unit CASCADE;
4456
CREATE EXTENSION unit;
@@ -50,5 +62,5 @@ BEGIN;
5062
RETURNING *)
5163
INSERT INTO pg_depend_save SELECT * FROM ext;
5264
COMMIT;
53-
\! pg_dump -f unit-3.dump -T pg_depend_save
65+
\! pg_dump -f unit-4.dump -T pg_depend_save
5466
INSERT INTO pg_depend SELECT * FROM pg_depend_save;

sql/convert.sql

+5-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ WITH
99
('yd'),
1010
('mi'))
1111
SELECT
12-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
12+
l1.u, l2.u, l1.u::unit @ l2.u
1313
FROM
1414
l l1 CROSS JOIN l l2
1515
\crosstabview
@@ -25,7 +25,7 @@ WITH
2525
('yd^2'),
2626
('mi^2'))
2727
SELECT
28-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
28+
l1.u, l2.u, l1.u::unit @ l2.u
2929
FROM
3030
l l1 CROSS JOIN l l2
3131
\crosstabview
@@ -40,7 +40,7 @@ WITH
4040
('ft^3'),
4141
('yd^3'))
4242
SELECT
43-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
43+
l1.u, l2.u, l1.u::unit @ l2.u
4444
FROM
4545
l l1 CROSS JOIN l l2
4646
\crosstabview
@@ -54,7 +54,7 @@ WITH
5454
('oz'),
5555
('lb'))
5656
SELECT
57-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
57+
l1.u, l2.u, l1.u::unit @ l2.u
5858
FROM
5959
l l1 CROSS JOIN l l2
6060
\crosstabview
@@ -68,7 +68,7 @@ WITH
6868
('d'),
6969
('julianyear'))
7070
SELECT
71-
l1.u, l2.u, l1.u::unit @ l2.u::cstring
71+
l1.u, l2.u, l1.u::unit @ l2.u
7272
FROM
7373
l l1 CROSS JOIN l l2
7474
\crosstabview

sql/upgrade.sql

+15-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,20 @@ COMMIT;
4444
\! pg_dump -f unit-2-3.dump -T pg_depend_save
4545
INSERT INTO pg_depend SELECT * FROM pg_depend_save;
4646

47+
-- upgrade to version 4
48+
ALTER EXTENSION unit UPDATE TO "4";
49+
50+
BEGIN;
51+
DELETE FROM pg_depend_save;
52+
WITH
53+
ext AS (DELETE FROM pg_depend WHERE refobjid =
54+
(SELECT oid FROM pg_extension WHERE extname = 'unit')
55+
RETURNING *)
56+
INSERT INTO pg_depend_save SELECT * FROM ext;
57+
COMMIT;
58+
\! pg_dump -f unit-3-4.dump -T pg_depend_save
59+
INSERT INTO pg_depend SELECT * FROM pg_depend_save;
60+
4761
-- reinstall latest version
4862
DROP EXTENSION unit CASCADE;
4963
CREATE EXTENSION unit;
@@ -56,5 +70,5 @@ BEGIN;
5670
RETURNING *)
5771
INSERT INTO pg_depend_save SELECT * FROM ext;
5872
COMMIT;
59-
\! pg_dump -f unit-3.dump -T pg_depend_save
73+
\! pg_dump -f unit-4.dump -T pg_depend_save
6074
INSERT INTO pg_depend SELECT * FROM pg_depend_save;

unit--3--4.sql.in

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-- convert @ from (unit, cstring) to (unit, text)
2+
3+
DROP OPERATOR @ (unit, cstring);
4+
DROP FUNCTION unit_at(unit, cstring);
5+
6+
CREATE FUNCTION unit_at(unit, text)
7+
RETURNS cstring
8+
SET search_path = @extschema@
9+
AS '$libdir/unit', 'unit_at_text'
10+
LANGUAGE C IMMUTABLE STRICT;
11+
12+
CREATE OPERATOR @ (
13+
leftarg = unit,
14+
rightarg = text,
15+
procedure = unit_at
16+
);

0 commit comments

Comments
 (0)