aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Gustafsson <dgustafsson@postgresql.org>2022-09-12 12:59:06 +0200
committerDaniel Gustafsson <dgustafsson@postgresql.org>2022-09-12 12:59:06 +0200
commit8cb2a22bbb2cf4212482ac15021ceaa2e9c52209 (patch)
treeb6881a0046c905ad671e0b43d60a42a119f4a3d4 /src
parent07d8af5e5e0cf5d5187353809920f344a5d20684 (diff)
downloadpostgresql-8cb2a22bbb2cf4212482ac15021ceaa2e9c52209.tar.gz
postgresql-8cb2a22bbb2cf4212482ac15021ceaa2e9c52209.zip
Fix NaN comparison in circle_same test
Commit c4c340088 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
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/geo_ops.c2
-rw-r--r--src/test/regress/expected/geometry.out3
2 files changed, 2 insertions, 3 deletions
diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c
index 535301a2180..f1b632ef3cb 100644
--- a/src/backend/utils/adt/geo_ops.c
+++ b/src/backend/utils/adt/geo_ops.c
@@ -4710,7 +4710,7 @@ circle_same(PG_FUNCTION_ARGS)
CIRCLE *circle1 = PG_GETARG_CIRCLE_P(0);
CIRCLE *circle2 = PG_GETARG_CIRCLE_P(1);
- PG_RETURN_BOOL(((isnan(circle1->radius) && isnan(circle1->radius)) ||
+ PG_RETURN_BOOL(((isnan(circle1->radius) && isnan(circle2->radius)) ||
FPeq(circle1->radius, circle2->radius)) &&
point_eq_point(&circle1->center, &circle2->center));
}
diff --git a/src/test/regress/expected/geometry.out b/src/test/regress/expected/geometry.out
index 3b364d1e3be..b50103b2165 100644
--- a/src/test/regress/expected/geometry.out
+++ b/src/test/regress/expected/geometry.out
@@ -4380,9 +4380,8 @@ SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 ~= c2.f1;
<(100,200),10> | <(100,200),10>
<(100,1),115> | <(100,1),115>
<(3,5),0> | <(3,5),0>
- <(3,5),NaN> | <(3,5),0>
<(3,5),NaN> | <(3,5),NaN>
-(9 rows)
+(8 rows)
-- Overlap with circle
SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 && c2.f1;