From: | Nikita Glukhov <n(dot)gluhov(at)postgrespro(dot)ru> |
---|---|
To: | Amit Langote <amitlangote09(at)gmail(dot)com> |
Cc: | Andrew Dunstan <andrew(at)dunslane(dot)net>, "Jonathan S(dot) Katz" <jkatz(at)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Michael Paquier <michael(at)paquier(dot)xyz>, John Naylor <john(dot)naylor(at)enterprisedb(dot)com> |
Subject: | Re: SQL/JSON features for v15 |
Date: | 2022-08-29 21:49:08 |
Message-ID: | c3b315b6-1e9f-6aa4-8708-daa19cf3f1a3@postgrespro.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 29.08.2022 15:56, Amit Langote wrote:
> On Sat, Aug 27, 2022 at 5:11 AM Nikita Glukhov<n(dot)gluhov(at)postgrespro(dot)ru> wrote:
>> On 26.08.2022 22:25, Andrew Dunstan wrote:
>>
>> On 2022-08-24 We 20:05, Nikita Glukhov wrote:
>>
>> I have completed in v9 all the things I previously planned:
>>
>> - Added missing safe I/O and type conversion functions for
>> datetime, float4, varchar, bpchar. This introduces a lot
>> of boilerplate code for returning errors and also maybe
>> adds some overhead.
> Didn't know that we have done similar things in the past for jsonpath, as in:
>
> commit 16d489b0fe058e527619f5e9d92fd7ca3c6c2994
> Author: Alexander Korotkov<akorotkov(at)postgresql(dot)org>
> Date: Sat Mar 16 12:21:19 2019 +0300
>
> Numeric error suppression in jsonpath
This was necessary for handling errors in arithmetic operations.
> BTW, maybe the following hunk in boolin_opt_error() is unnecessary?
>
> - len = strlen(str);
> + len -= str - in_str;
>
This is really not necessary, but helps to avoid extra strlen() call.
I have replaced it with more intuitive
+ {
str++;
+ len--;
+ }
- len = strlen(str);
>> - Added JSON_QUERY coercion to UTF8 bytea using pg_convert_to().
>>
>> - Added immutability checks that were missed with elimination
>> of coercion expressions.
>> Coercions text::datetime, datetime1::datetime2 and even
>> datetime::text for some datetime types are mutable.
>> datetime::text can be made immutable by passing ISO date
>> style into output functions (like in jsonpath).
>>
>> - Disabled non-Const expressions in DEFAULT ON EMPTY in non
>> ERROR ON ERROR case. Non-constant expressions are tried to
>> evaluate into Const directly inside transformExpr().
> I am not sure if it's OK to eval_const_expressions() on a Query
> sub-expression during parse-analysis. IIUC, it is only correct to
> apply it to after the rewriting phase.
I also was not sure. Maybe it can be moved to rewriting phase or
even to execution phase.
>> Maybe it would be better to simply remove DEFAULT ON EMPTY.
> So +1 to this for now.
See last patch #9.
>> It is possible to easily split this patch into several subpatches,
>> I will do it if needed.
> That would be nice indeed.
I have extracted patches #1-6 with numerous safe input and type conversion
functions.
> I'm wondering if you're going to change the PASSING values
> initialization to add the steps into the parent JsonExpr's ExprState,
> like the previous patch was doing?
I forget to incorporate your changes for subsidary ExprStates elimination.
See patch #8.
--
Nikita Glukhov
Postgres Professional:http://www.postgrespro.com
The Russian Postgres Company
Attachment | Content-Type | Size |
---|---|---|
v9-0001-Add-safe-input-function-for-bool.patch | text/x-patch | 2.3 KB |
v9-0002-Add-safe-input-function-for-int8.patch | text/x-patch | 2.1 KB |
v9-0003-Add-safe-input-function-for-float4.patch | text/x-patch | 4.3 KB |
v9-0004-Add-safe-input-and-type-conversion-functions-for-.patch | text/x-patch | 13.7 KB |
v9-0005-Add-safe-input-and-type-conversion-functions-for-.patch | text/x-patch | 22.5 KB |
v9-0006-Add-safe-input-function-for-jsonb.patch | text/x-patch | 3.1 KB |
v9-0007-Remove-subtransaction-in-SQL-JSON-execution.patch | text/x-patch | 106.5 KB |
v9-0008-Remove-subsidary-ExprStates-in-SQL-JSON-execution.patch | text/x-patch | 22.5 KB |
v9-0009-Remove-support-of-DEFAULT-ON-EMPTY-in-SQL-JSON-fu.patch | text/x-patch | 28.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | David Rowley | 2022-08-29 21:55:03 | Re: Reducing the chunk header sizes on all memory context types |
Previous Message | Andrew Dunstan | 2022-08-29 21:48:26 | Re: SQL/JSON features for v15 |