diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/executor/tqueue.c | 4 | ||||
-rw-r--r-- | src/test/regress/expected/rangetypes.out | 17 | ||||
-rw-r--r-- | src/test/regress/sql/rangetypes.sql | 14 |
3 files changed, 33 insertions, 2 deletions
diff --git a/src/backend/executor/tqueue.c b/src/backend/executor/tqueue.c index b5ae3d82b60..e81c333e4cd 100644 --- a/src/backend/executor/tqueue.c +++ b/src/backend/executor/tqueue.c @@ -371,7 +371,7 @@ tqueueWalkRange(TQueueDestReceiver *tqueue, Datum value) * called in the first place: GetRemapClass should have returned NULL when * asked about this range type. */ - remapclass = GetRemapClass(typeid); + remapclass = GetRemapClass(typcache->rngelemtype->type_id); Assert(remapclass != TQUEUE_REMAP_NONE); /* Walk each bound, if present. */ @@ -749,7 +749,7 @@ TupleQueueRemapRange(TupleQueueReader *reader, Datum value) * called in the first place: GetRemapClass should have returned NULL when * asked about this range type. */ - remapclass = GetRemapClass(typeid); + remapclass = GetRemapClass(typcache->rngelemtype->type_id); Assert(remapclass != TQUEUE_REMAP_NONE); /* Remap each bound, if present. */ diff --git a/src/test/regress/expected/rangetypes.out b/src/test/regress/expected/rangetypes.out index 23cdbc3902b..4a2336cd8d3 100644 --- a/src/test/regress/expected/rangetypes.out +++ b/src/test/regress/expected/rangetypes.out @@ -1337,6 +1337,23 @@ select array[1,3] <@ arrayrange(array[1,2], array[2,1]); (1 row) -- +-- Ranges of composites +-- +create type two_ints as (a int, b int); +create type two_ints_range as range (subtype = two_ints); +-- with force_parallel_mode on, this exercises tqueue.c's range remapping +select *, row_to_json(upper(t)) as u from + (values (two_ints_range(row(1,2), row(3,4))), + (two_ints_range(row(5,6), row(7,8)))) v(t); + t | u +-------------------+--------------- + ["(1,2)","(3,4)") | {"a":3,"b":4} + ["(5,6)","(7,8)") | {"a":7,"b":8} +(2 rows) + +drop type two_ints cascade; +NOTICE: drop cascades to type two_ints_range +-- -- OUT/INOUT/TABLE functions -- create function outparam_succeed(i anyrange, out r anyrange, out t text) diff --git a/src/test/regress/sql/rangetypes.sql b/src/test/regress/sql/rangetypes.sql index 6d2696f7bf2..a60df9095e9 100644 --- a/src/test/regress/sql/rangetypes.sql +++ b/src/test/regress/sql/rangetypes.sql @@ -448,6 +448,20 @@ select array[1,1] <@ arrayrange(array[1,2], array[2,1]); select array[1,3] <@ arrayrange(array[1,2], array[2,1]); -- +-- Ranges of composites +-- + +create type two_ints as (a int, b int); +create type two_ints_range as range (subtype = two_ints); + +-- with force_parallel_mode on, this exercises tqueue.c's range remapping +select *, row_to_json(upper(t)) as u from + (values (two_ints_range(row(1,2), row(3,4))), + (two_ints_range(row(5,6), row(7,8)))) v(t); + +drop type two_ints cascade; + +-- -- OUT/INOUT/TABLE functions -- |