Re: Optimization of some jsonb functions
Alvaro Herrera <alvherre@2ndquadrant.com>
From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Joe Nelson <joe@begriffs.com>
Cc: Thomas Munro <thomas.munro@gmail.com>, David Steele <david@pgmasters.net>, Andrew Dunstan <andrew.dunstan@2ndquadrant.com>, Nikita Glukhov <n.gluhov@postgrespro.ru>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2019-09-21T00:09:31Z
Lists: pgsql-hackers
Attachments
- findJsonbElementInArray.patch (text/x-diff) patch
I pushed the first few parts. The attached is a rebased copy of the last remaining piece. However, I didn't quite understand what this was doing, so I refrained from pushing. I think there are two patches here: one that adapts the API of findJsonbValueFromContainer and getIthJsonbValueFromContainer to take the output result pointer as an argument, allowing to save palloc cycles just like the newly added getKeyJsonValueFromContainer(); and the other changes JsonbDeepContains so that it uses a new function (which is a function with a weird API that would be extracted from findJsonbValueFromContainer). Also, the current patch just passes NULL into the routines from jsonpath_exec.c but I think it would be useful to pass pointers into stack-allocated result structs instead, at least in getJsonPathVariable. Since the majority of this patchset got pushed, I'll leave this for Nikita to handle for the next commitfest if he wants to, and mark this CF entry as committed. Thanks! -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Split out code into new getKeyJsonValueFromContainer()
- 1a2983231d90 13.0 landed
-
Optimize get_jsonb_path_all avoiding an iterator
- dbb9aeda9959 13.0 landed
-
Refactor code into new JsonbValueAsText, and use it more
- abb014a63106 13.0 landed