Обсуждение: pgsql: Only allow returning string types or bytea from json_serialize

Поиск
Список
Период
Сортировка

pgsql: Only allow returning string types or bytea from json_serialize

От
Andrew Dunstan
Дата:
Only allow returning string types or bytea from json_serialize

These are documented to be the allowed types for the RETURNING clause,
but the restriction was not being enforced, which caused a segfault if
another type was specified. Add some testing for this.

Per report from a.kozhemyakin

Backpatch to release 15.

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/3c633f32b9c712cc0b4c8d946f0eeae04a3ff51a

Modified Files
--------------
src/backend/parser/parse_expr.c       | 17 +++++++++++++++++
src/test/regress/expected/sqljson.out | 10 ++++++++++
src/test/regress/sql/sqljson.sql      |  5 +++++
3 files changed, 32 insertions(+)


Re: pgsql: Only allow returning string types or bytea from json_serialize

От
Kyotaro Horiguchi
Дата:
At Thu, 07 Jul 2022 21:46:12 +0000, Andrew Dunstan <andrew@dunslane.net> wrote in 
> Only allow returning string types or bytea from json_serialize

I noticed that this introcues the following error message.

+  errmsg("cannot use RETURNING type %s in JSON_SERIALIZE"
+                                format_type_be(returning->typid)),

However, the same file has the following error message.

>             errmsg("cannot use RETURNING type %s in %s",
>                    format_type_be(returning->typid), fname),

So, couldn't we share the format string to reduce translatable
messages?

And, the other messages are

cannot use RETURNING type %s in JSON_SCALAR(), and
cannot use RETURNING type %s in JSON()

So, I think this should not be

cannot use RETURNING type %s in JSON_SERIALIZE

, but should be

cannot use RETURNING type %s in JSON_SERIALIZE()

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center

Вложения

Re: pgsql: Only allow returning string types or bytea from json_serialize

От
Michael Paquier
Дата:
On Fri, Jul 08, 2022 at 03:41:35PM +0900, Kyotaro Horiguchi wrote:
> I noticed that this introcues the following error message.
>
> +  errmsg("cannot use RETURNING type %s in JSON_SERIALIZE"
> +                                format_type_be(returning->typid)),
>
> However, the same file has the following error message.
>
> >             errmsg("cannot use RETURNING type %s in %s",
> >                    format_type_be(returning->typid), fname),
>
> So, couldn't we share the format string to reduce translatable
> messages?

Yeah, I think that you are right, so let's fix this.  If Andrew does
not show up, I'll take care of it.
--
Michael

Вложения

Re: pgsql: Only allow returning string types or bytea from json_serialize

От
Michael Paquier
Дата:
On Fri, Jul 08, 2022 at 07:20:14PM +0900, Michael Paquier wrote:
> Yeah, I think that you are right, so let's fix this.  If Andrew does
> not show up, I'll take care of it.

Okay, this one is done, then.  Thanks for the patch, Horiguchi-san.
--
Michael

Вложения

Re: pgsql: Only allow returning string types or bytea from json_serialize

От
Kyotaro Horiguchi
Дата:
At Mon, 11 Jul 2022 12:49:11 +0900, Michael Paquier <michael@paquier.xyz> wrote in 
> On Fri, Jul 08, 2022 at 07:20:14PM +0900, Michael Paquier wrote:
> > Yeah, I think that you are right, so let's fix this.  If Andrew does
> > not show up, I'll take care of it.
> 
> Okay, this one is done, then.  Thanks for the patch, Horiguchi-san.

Thanks!
(I came to notice that I sent the mail only to -commiters..)

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center