Re: SQL/JSON revisited
vignesh C <vignesh21@gmail.com>
From: vignesh C <vignesh21@gmail.com>
To: Amit Langote <amitlangote09@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>,
Andrew Dunstan <andrew@dunslane.net>, e.indrupskaya@postgrespro.ru
Date: 2023-01-27T14:27:10Z
Lists: pgsql-hackers
On Tue, 17 Jan 2023 at 19:01, Amit Langote <amitlangote09@gmail.com> wrote: > > On Wed, Dec 28, 2022 at 4:28 PM Amit Langote <amitlangote09@gmail.com> wrote: > > > > Hi, > > > > Rebased the SQL/JSON patches over the latest HEAD. I've decided to > > keep the same division of code into individual commits as that > > mentioned in the revert commit 2f2b18bd3f, squashing fixup commits in > > that list into the appropriate feature commits. > > > > The main difference from the patches as they were committed into v15 > > is that JsonExpr evaluation no longer needs to use sub-transactions, > > thanks to the work done recently to handle type errors softly. I've > > made the new code pass an ErrorSaveContext into the type-conversion > > related functions as needed and also added an ExecEvalExprSafe() to > > evaluate sub-expressions of JsonExpr that might contain expressions > > that call type-conversion functions, such as CoerceViaIO contained in > > JsonCoercion nodes. ExecExprEvalSafe() is based on one of the patches > > that Nikita Glukhov had submitted in a previous discussion about > > redesigning SQL/JSON expression evaluation [1]. Though, I think that > > new interface will become unnecessary after I have finished rebasing > > my patches to remove subsidiary ExprStates of JsonExprState that we > > had also discussed back in [2]. > > And I've just finished doing that. In the attached updated 0004, > which adds the JsonExpr node, its evaluation code is now broken into > ExprEvalSteps to handle the subsidiary JsonCoercion and JsonBehavior > expression nodes that previously used ExprState for recursive > evaluation. Andres didn't like the latter as previously discussed at > [1]. > > I've also attached the patch that Elena has proposed as the patch > 0011. I haven't managed to review it yet, though once I do, I'll > merge it into the main documentation patch 0009. Thanks Elena. The patch does not apply on top of HEAD as in [1], please post a rebased patch: === Applying patches on top of PostgreSQL commit ID 37e267335068059ac9bd4ec5d06b493afb4b73e8 === === applying patch ./v2-0001-Common-SQL-JSON-clauses.patch .... can't find file to patch at input line 717 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff --git a/src/backend/utils/misc/queryjumble.c b/src/backend/utils/misc/queryjumble.c |index 328995a7dc..2361845a62 100644 |--- a/src/backend/utils/misc/queryjumble.c |+++ b/src/backend/utils/misc/queryjumble.c -------------------------- No file to patch. Skipping patch. 1 out of 1 hunk ignored [1] - http://cfbot.cputube.org/patch_41_4086.log Regards, Vignesh
Commits
-
Add SQL/JSON query functions
- 6185c9737cf4 17.0 landed
-
Add soft error handling to some expression nodes
- aaaf9449ec6b 17.0 landed
-
Adjust populate_record_field() to handle errors softly
- 1edb3b491bee 17.0 landed
-
Refactor code used by jsonpath executor to fetch variables
- faa2b953ba3b 17.0 landed
-
Code review for recent SQL/JSON commits
- 71bfd1543f8b 16.0 landed
-
Fix inconsistencies and style issues in new SQL/JSON code
- 60966f56c3e4 16.0 landed
-
Don't install postmaster symlink anymore
- 37e267335068 16.0 cited
-
Revert SQL/JSON features
- 2f2b18bd3f55 16.0 cited
-
Doc: standardize markup a bit more.
- 47046763c3ed 13.0 cited