Re: Allowing extensions to supply operator-/function-specific info
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Paul Ramsey <pramsey@cleverelephant.ca>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-03-05T00:22:59Z
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
Attachments
- tgl-support-fixes.patch (text/x-diff) patch
Paul Ramsey <pramsey@cleverelephant.ca> writes: >> On Mar 4, 2019, at 2:52 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> BTW, if you'd like me to review the code you added for this, I'd be happy >> to do so. I've never looked at PostGIS' innards, but probably I can make >> sense of the code for this despite that. > I would be ecstatic for a review, I'm sure I've left a million loose threads dangling. I took a look, and saw that you'd neglected to check pseudoconstantness of the non-index argument, so this'd fail on cases like ST_DWithin(x, y) where x is indexed and y is another column in the same table. Also I thought the handling of commutation could be done better. Attached is a suggested patch atop your f731c1b7022381dbf627cae311c3d37791bf40c3 to fix those and a couple of nitpicky other things. (I haven't tested this, mind you.) One thing that makes me itch, but I didn't address in the attached, is that expandFunctionOid() is looking up a function by name without any schema-qualification. That'll fail outright if PostGIS isn't in the search path, and even if it is, you've got security issues there. One way to address this is to assume that the expandfn is in the same schema as the ST_XXX function you're attached to, so you could do "get_namespace_name(get_func_namespace(funcid))" and then include that in the list passed to LookupFuncName. Also, this might be as-intended but I was wondering: I'd sort of expected you to make, eg, _ST_DWithin() and ST_DWithin() into exact synonyms. They aren't, since the former is not connected to the support function. Is that intentional? I guess if you had a situation where you wanted to force non-use of an index, being able to use _ST_DWithin() for that would be helpful. regards, tom lane