Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 9aad205

Browse files
danielgustafssonpull[bot]
authored andcommitted
Fix NaN comparison in circle_same test
Commit c4c3400 changed geometric operators to use float4 and float8 functions, and handle NaN's in a better way. The circle sameness test had a typo in the code which resulted in all comparisons with the left circle having a NaN radius considered same. postgres=# select '<(0,0),NaN>'::circle ~= '<(0,0),1>'::circle; ?column? ---------- t (1 row) This fixes the sameness test to consider the radius of both the left and right circle. Backpatch to v12 where this was introduced. Author: Ranier Vilela <ranier.vf@gmail.com> Discussion: https://postgr.es/m/CAEudQAo8dK=yctg2ZzjJuzV4zgOPBxRU5+Kb+yatFiddtQk6Rw@mail.gmail.com Backpatch-through: v12
1 parent 3eb99b9 commit 9aad205

File tree

2 files changed

+2
-3
lines changed

2 files changed

+2
-3
lines changed

src/backend/utils/adt/geo_ops.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4710,7 +4710,7 @@ circle_same(PG_FUNCTION_ARGS)
47104710
CIRCLE *circle1 = PG_GETARG_CIRCLE_P(0);
47114711
CIRCLE *circle2 = PG_GETARG_CIRCLE_P(1);
47124712

4713-
PG_RETURN_BOOL(((isnan(circle1->radius) && isnan(circle1->radius)) ||
4713+
PG_RETURN_BOOL(((isnan(circle1->radius) && isnan(circle2->radius)) ||
47144714
FPeq(circle1->radius, circle2->radius)) &&
47154715
point_eq_point(&circle1->center, &circle2->center));
47164716
}

src/test/regress/expected/geometry.out

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4380,9 +4380,8 @@ SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 ~= c2.f1;
43804380
<(100,200),10> | <(100,200),10>
43814381
<(100,1),115> | <(100,1),115>
43824382
<(3,5),0> | <(3,5),0>
4383-
<(3,5),NaN> | <(3,5),0>
43844383
<(3,5),NaN> | <(3,5),NaN>
4385-
(9 rows)
4384+
(8 rows)
43864385

43874386
-- Overlap with circle
43884387
SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 && c2.f1;

0 commit comments

Comments
 (0)