Re: Data loss when '"json_populate_recorset" with long column name

Поиск
Список
Период
Сортировка
От Julien Rouhaud
Тема Re: Data loss when '"json_populate_recorset" with long column name
Дата
Msg-id CAOBaU_az1=4u1StekruHK6axoJaAcGG7czAGdhNZrhKryWcVAw@mail.gmail.com
обсуждение исходный текст
Ответ на Data loss when '"json_populate_recorset" with long column name  (Денис Романенко <deromanenko@gmail.com>)
Ответы Re: Data loss when '"json_populate_recorset" with long column name  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-hackers
On Tue, Sep 7, 2021 at 11:27 AM Денис Романенко <deromanenko@gmail.com> wrote:
>
> If we create a column name longer than 64 bytes, it will be truncated in PostgreSQL to max (NAMEDATALEN) length.
>
> For example: "VeryLongNameVeryLongNameVeryLongNameVeryLongNameVeryLongNameVeryLongName" will be truncated in database
to"VeryLongNameVeryLongNameVeryLongNameVeryLongNameVeryLongNameVer" 
>
> But in the codebase we could work with full column name - SQL functions like INSERT/UPDATE work with long names
withoutproblem, automatically searches for suitable column (thank you for it). 
>
> But if we try to update it with "json_populate_recordset" using full name, it will not just ignore column with long
name- data in that record will be nulled. 
>
> How to reproduce:
> 1. create table wow("VeryLongNameVeryLongNameVeryLongNameVeryLongNameVeryLongNameVeryLongName" text);
> 2. select * from
json_populate_recordset(null::wow,'[{"VeryLongNameVeryLongNameVeryLongNameVeryLongNameVeryLongNameVeryLongName":
"haha"}]');
> 3. "VeryLongNameVeryLongNameVeryLongNameVeryLongNameVeryLongNameVer" becomes null.

Yes, that's because json identifiers have different rules from
relation identifiers.  Your only option here is to use the real /
truncated identifier.  Also I don't think it would be a good thing to
add a way to truncate identifiers in json objects using the
NAMEDATALEN limit, as this could easily lead to invalid json object
that should be valid.



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Amit Kapila
Дата:
Сообщение: Re: Column Filtering in Logical Replication
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: when the startup process doesn't (logging startup delays)