Re: Allowing extensions to supply operator-/function-specific info
Paul Ramsey <pramsey@cleverelephant.ca>
From: Paul Ramsey <pramsey@cleverelephant.ca>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-02-26T21:23:36Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Allow extensions to generate lossy index conditions.
- 74dfe58a5927 12.0 landed
-
Build out the planner support function infrastructure.
- a391ff3c3d41 12.0 landed
-
Create the infrastructure for planner support functions.
- 1fb57af92069 12.0 landed
-
Disable transforms that replaced AT TIME ZONE with RelabelType.
- c22ecc6562aa 10.0 cited
On Mon, Feb 25, 2019 at 4:09 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Paul Ramsey <pramsey@cleverelephant.ca> writes: > > On Mon, Feb 25, 2019 at 3:01 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > >> It's whichever one the index column's opclass belongs to. Basically what > >> you're trying to do here is verify whether the index will support the > >> optimization you want to perform. > > > * If I have tbl1.geom > > * and I have built two indexes on it, a btree_geometry_ops and a > > gist_geometry_ops_2d, and > > * and SupportRequestIndexCondition.opfamily returns me the btree family > > * and I look and see, "damn there is no && operator in there" > > * am I SOL, even though an appropriate index does exist? > > No. If there are two indexes matching your function's argument, you'll > get a separate call for each index. The support function is only > responsible for thinking about one index at a time and seeing if it > can be used. If more than one can be used, figuring out which > one is better is done by later cost comparisons. Ah, wonderful! New line of questioning: under what conditions will the support function be called in a T_SupportRequestIndexCondition mode? I have created a table (foo) a geometry column (g) and an index (GIST on foo(g)) and am running a query against foo using a noop function with a support function bound to it. The support function is called, twice, once in T_SupportRequestSimplify mode and once in T_SupportRequestCost mode. What triggers T_SupportRequestIndexCondition mode? Thanks! P