Re: KNN-GiST with recheck - Mailing list pgsql-hackers

From Alexander Korotkov
Subject Re: KNN-GiST with recheck
Date
Msg-id CAPpHfdvDMS1_jqnzZ0FbGePWwCvStj4_h0xU2hYTnLcC6of3Rg@mail.gmail.com
Whole thread Raw
In response to Re: KNN-GiST with recheck  (Bruce Momjian <bruce@momjian.us>)
Responses Re: KNN-GiST with recheck  (Bruce Momjian <bruce@momjian.us>)
List pgsql-hackers
On Fri, Sep 26, 2014 at 5:18 AM, Bruce Momjian <bruce@momjian.us> wrote:
On Sun, Sep 14, 2014 at 11:34:26PM +0400, Alexander Korotkov wrote:
>     > Cost estimation of GiST is a big problem anyway. It doesn't care (and
>     > can't) about amount of recheck for regular operators. In this patch, same
>     > would be for knn recheck. The problem is that touching heap from access

This is very important work.  While our existing KNN-GiST index code
works fine for scalar values and point-to-point distance ordering, it
doesn't work well for 2-dimensional objects because they are only
indexed by their bounding boxes (a rectangle around the object).  The
indexed bounding box can't produce accurate distances to other objects.

As an example, see this PostGIS blog post showing how to use LIMIT in a
CTE to filter results and then compute the closest object (search for
"LIMIT 50"):

        http://shisaa.jp/postset/postgis-postgresqls-spatial-partner-part-3.html

This patch fixes our code for distances from a point to indexed 2-D
objects.

Does this also fix the identical PostGIS problem or is there something
PostGIS needs to do?

This patch provides general infrastructure for recheck in KNN-GiST. PostGIS need corresponding change in its GiST opclass. Since PostGIS already define <-> and <#> operators as distance to bounding box border and bounding box center, it can't change their behaviour.
it has to support new operator "exact distance" in opclass. 

------
With best regards,
Alexander Korotkov.  

pgsql-hackers by date:

Previous
From: Josh Berkus
Date:
Subject: Re: jsonb format is pessimal for toast compression
Next
From: Amit Kapila
Date:
Subject: Re: TODO : Allow parallel cores to be used by vacuumdb [ WIP ]