mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
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
This commit is contained in:
@ -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));
|
||||
}
|
||||
|
Reference in New Issue
Block a user