Re: Extract numeric filed in JSONB more effectively
Andy Fan <zhihui.fan1213@gmail.com>
From: Andy Fan <zhihui.fan1213@gmail.com>
To: Chapman Flack <chap@anastigmatix.net>
Cc: Pavel Stehule <pavel.stehule@gmail.com>,
jian he <jian.universality@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2023-08-03T13:50:15Z
Lists: pgsql-hackers
Hi: On Thu, Aug 3, 2023 at 8:34 PM Chapman Flack <chap@anastigmatix.net> wrote: > On 2023-08-03 03:53, Andy Fan wrote: > > I didn't realize timetime types are binary compatible with SQL, > > so maybe we can have some similar optimization as well. > > (It is a pity that timestamp(tz) are not binary, or else we may > > just need one operator). > > Not to veer from the thread, but something about that paragraph > has been hard for me to parse/follow. > I don't think this is a key conflict so far. but I'd explain this in more detail. If timestamp -> timestamptz or timestamptz -> timestamp is binary compatible, we can only have 1 operator to return a timestamp. then when we cast it to timestamptz, it will be a no-op during runtime. however cast between timestamp and timestamptz is not binary compatible. whose castmethod is 'f'; > > >> Maybe we can introduce some *internal operator* "extract to type", and > >> in > >> rewrite stage we can the pattern (x->'field')::type transform to OP(x, > >> 'field', typid) > > > > Not sure what the OP should be? If it is a function, what is the > > return value? It looks to me like it is hard to do in c language? > > Now I am wondering about the 'planner support function' available > in CREATE FUNCTION since PG 12. I've never played with that yet. > Would that make it possible to have some, rather generic, extract > from JSON operator that can look at the surrounding expression > and replace itself sometimes with something efficient? > I didn't realize this before, 'planner support function' looks amazing and SupportRequestSimplify looks promising, I will check it more. -- Best Regards Andy Fan
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add trailing commas to enum definitions
- 611806cd726f 17.0 cited