Re: [HACKERS] [PATCH] Generic type subscripting
Dmitry Dolgov <9erthalion6@gmail.com>
Attachments
- v39-0001-Subscripting-for-jsonb.patch (text/x-diff)
> On Wed, Dec 30, 2020 at 02:45:12PM +0100, Dmitry Dolgov wrote: > > On Sat, Dec 26, 2020 at 01:24:04PM -0500, Tom Lane wrote: > > > > In a case like jsonpath['...'], the initially UNKNOWN-type literal could > > in theory be coerced to any of these types, so you'd have to resolve that > > case manually. The overloaded-function code has an internal preference > > that makes it choose TEXT if it has a choice of TEXT or some other target > > type for an UNKNOWN input (cf parse_func.c starting about line 1150), but > > if you ask can_coerce_type() it's going to say TRUE for all three cases. > > > > Roughly speaking, then, I think what you want to do is > > > > 1. If input type is UNKNOWNOID, choose result type TEXT. > > > > 2. Otherwise, apply can_coerce_type() to see if the input type can be > > coerced to int4, text, or jsonpath. If it succeeds for none or more > > than one of these, throw error. Otherwise choose the single successful > > type. > > > > 3. Apply coerce_type() to coerce to the chosen result type. > > > > 4. At runtime, examine exprType() of the input to figure out what to do. > > Thanks, that was super useful. Following this suggestion I've made > necessary adjustments for the patch. There is no jsonpath support, but > this could be easily added on top. And the forgotten patch itself.
Commits
-
Throw error when assigning jsonb scalar instead of a composite object
- aa6e46daf530 14.0 landed
-
Filling array gaps during jsonb subscripting
- 81fcc72e6622 14.0 landed
-
Implementation of subscripting for jsonb
- 676887a3b0b8 14.0 landed
-
Allow ALTER TYPE to update an existing type's typsubscript value.
- 8c15a297452e 14.0 landed
-
Allow subscripting of hstore values.
- 0ec5f7e78231 14.0 landed
-
Support subscripting of arbitrary types, not only arrays.
- c7aba7c14efd 14.0 landed
-
jit: Reference function pointer types via llvmjit_types.c.
- df99ddc70b97 14.0 landed
-
Teach contain_leaked_vars that assignment SubscriptingRefs are leaky.
- c0549cee07ea 13.2 landed
- 62ee70331336 14.0 landed
- 3470caa21bf8 10.16 landed
- 2f1997b1551a 12.6 landed
- 1f229f4fdcf8 11.11 landed
- 17c77c8c90f7 9.6.21 landed
-
jit: Correct parameter type for generated expression evaluation functions.
- 5da871bfa1ba 14.0 landed
- 1e16ad101459 11.11 landed
- 27b57f806dc2 12.6 landed
- 01c6370a32e5 13.2 landed
-
Renaming for new subscripting mechanism
- 558d77f20e4e 12.0 landed
-
Fix assertion failure for SSL connections.
- ab69ea9feeb9 12.0 cited
-
Teach eval_const_expressions() to handle some more cases.
- 3decd150a2d5 11.0 cited