Re: [PATCH] nodeindexscan with reorder memory leak
Aliaksandr Kalenik <akalenik@kontur.io>
From: Aliaksandr Kalenik <akalenik@kontur.io>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@lists.postgresql.org, Heikki Linnakangas <hlinnaka@iki.fi>, Alexander Korotkov <aekorotkov@gmail.com>
Date: 2022-02-07T08:42:37Z
Lists: pgsql-hackers
Thanks for your review! On Sun, Jan 30, 2022 at 7:24 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Actually, that code has got worse problems than that. I tried to improve > our regression tests to exercise that code path, as attached. What I got > was > > +SELECT point(x,x), (SELECT circle_center(f1) FROM gcircle_tbl ORDER BY f1 <-> p > oint(x,x) LIMIT 1) as c FROM generate_series(0,1000,1) x; > +ERROR: index returned tuples in wrong order I tried to figure out what is the problem with this query. This error happens when actual distance is less than estimated distance. For this specific query it happened while comparing these values: 50.263279680219099532223481219262 (actual distance returned by dist_cpoint in geo_ops.c) and 50.263279680219113743078196421266 (bounding box distance returned by computeDistance in gistproc.c). So for me it looks like this error is not really related to KNN scan code but to some floating-arithmetic issue in distance calculation functions for geometry type.Would be great to figure out a fix but for now I didn’t manage to find a better way than comparing the difference of distance with FLT_EPSILON which definitely doesn't seem like the way to fix :(
Commits
-
Fix memory leak in IndexScan node with reordering
- 3f74daa8dfc6 15.0 landed
- 2e9033a54804 10.21 landed
- 0d554775bd04 11.16 landed
- 7a12a9e3cc97 12.11 landed
- ac2303aa0386 13.7 landed
- c76665edce3d 14.3 landed