mirror of
https://github.com/postgres/postgres.git
synced 2025-05-02 11:44:50 +03:00
Fix tqueue.c's range-remapping code.
It's depressingly clear that nobody ever tested this.
This commit is contained in:
parent
80b346c208
commit
bf4ae685ae
@ -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. */
|
||||
|
@ -1336,6 +1336,23 @@ select array[1,3] <@ arrayrange(array[1,2], array[2,1]);
|
||||
t
|
||||
(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
|
||||
--
|
||||
|
@ -447,6 +447,20 @@ select arrayrange(ARRAY[2,1], ARRAY[1,2]); -- fail
|
||||
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
|
||||
--
|
||||
|
Loading…
x
Reference in New Issue
Block a user