diff options
author | Daniel Gustafsson <dgustafsson@postgresql.org> | 2022-09-12 12:59:06 +0200 |
---|---|---|
committer | Daniel Gustafsson <dgustafsson@postgresql.org> | 2022-09-12 12:59:06 +0200 |
commit | eb8b848079c3e3f8cd486f209e50d0114476d2e8 (patch) | |
tree | 2844483aa9e818592c206096e7d576b5db871e85 /src/backend/utils/adt/geo_ops.c | |
parent | a6618842fac3baaf486dda5b563c61bbdb7a06ae (diff) | |
download | postgresql-eb8b848079c3e3f8cd486f209e50d0114476d2e8.tar.gz postgresql-eb8b848079c3e3f8cd486f209e50d0114476d2e8.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/backend/utils/adt/geo_ops.c')
-rw-r--r-- | src/backend/utils/adt/geo_ops.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c index 3b9e68ffd46..a0bff35253e 100644 --- a/src/backend/utils/adt/geo_ops.c +++ b/src/backend/utils/adt/geo_ops.c @@ -4751,7 +4751,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)); } |