Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita5b81b6

Browse files
committed
Fix bugs in comparison functions for multirange_bsearch_match()
Two functions multirange_range_overlaps_bsearch_comparison() andmultirange_range_contains_bsearch_comparison() contain bugs of returning -1instead of 1. This commit fixes these bugs and adds corresponding regressiontests.
1 parent1b3433e commita5b81b6

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

‎src/backend/utils/adt/multirangetypes.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1660,7 +1660,7 @@ multirange_range_contains_bsearch_comparison(TypeCacheEntry *typcache,
16601660
if (range_cmp_bounds(typcache,keyUpper,lower)<0)
16611661
return-1;
16621662
if (range_cmp_bounds(typcache,keyLower,upper)>0)
1663-
return-1;
1663+
return1;
16641664

16651665
/*
16661666
* At this point we found overlapping range. But we have to check if it
@@ -1825,7 +1825,7 @@ multirange_range_overlaps_bsearch_comparison(TypeCacheEntry *typcache,
18251825
if (range_cmp_bounds(typcache,keyUpper,lower)<0)
18261826
return-1;
18271827
if (range_cmp_bounds(typcache,keyLower,upper)>0)
1828-
return-1;
1828+
return1;
18291829

18301830
*match= true;
18311831
return0;

‎src/test/regress/expected/multirangetypes.out

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,12 @@ SELECT nummultirange(numrange(1,2), numrange(3.5,8)) && nummultirange(numrange(3
834834
t
835835
(1 row)
836836

837+
select '{(10,20),(30,40),(50,60)}'::nummultirange && '(42,92)'::numrange;
838+
?column?
839+
----------
840+
t
841+
(1 row)
842+
837843
-- contains
838844
SELECT nummultirange() @> nummultirange();
839845
?column?
@@ -967,6 +973,12 @@ SELECT '{[1,5), [6,9)}'::nummultirange @> '{[6,7)}';
967973
t
968974
(1 row)
969975

976+
select '{(10,20),(30,40),(50,60)}'::nummultirange @> '(52,56)'::numrange;
977+
?column?
978+
----------
979+
t
980+
(1 row)
981+
970982
-- is contained by
971983
SELECT nummultirange() <@ nummultirange();
972984
?column?

‎src/test/regress/sql/multirangetypes.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ SELECT nummultirange(numrange(1,2), numrange(7,8)) && nummultirange(numrange(3,4
162162
SELECT nummultirange(numrange(3,4)) && nummultirange(numrange(1,2), numrange(3.5,8));
163163
SELECT nummultirange(numrange(1,2), numrange(3.5,8)) && numrange(3,4);
164164
SELECT nummultirange(numrange(1,2), numrange(3.5,8)) && nummultirange(numrange(3,4));
165+
select'{(10,20),(30,40),(50,60)}'::nummultirange &&'(42,92)'::numrange;
165166

166167
-- contains
167168
SELECT nummultirange() @> nummultirange();
@@ -186,6 +187,7 @@ SELECT '{[-4,-2), [1,5)}'::nummultirange @> '{[1,5)}';
186187
SELECT'{[1,5), [8,9)}'::nummultirange @>'{[1,5)}';
187188
SELECT'{[1,5), [8,9)}'::nummultirange @>'{[6,7)}';
188189
SELECT'{[1,5), [6,9)}'::nummultirange @>'{[6,7)}';
190+
select'{(10,20),(30,40),(50,60)}'::nummultirange @>'(52,56)'::numrange;
189191

190192
-- is contained by
191193
SELECT nummultirange()<@ nummultirange();

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp