Re: sql/json query function JsonBehavior default expression's collation may differ from returning type's collation
От | jian he |
---|---|
Тема | Re: sql/json query function JsonBehavior default expression's collation may differ from returning type's collation |
Дата | |
Msg-id | CACJufxHyOGfTighE9i0bpNqFK4pd9_NBZL=tPeLPQSZuVmo8QA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: sql/json query function JsonBehavior default expression's collation may differ from returning type's collation (Amit Langote <amitlangote09@gmail.com>) |
Ответы |
Re: sql/json query function JsonBehavior default expression's collation may differ from returning type's collation
|
Список | pgsql-hackers |
On Wed, Oct 8, 2025 at 12:10 PM Amit Langote <amitlangote09@gmail.com> wrote: > > After sleeping on this, I realized the right fix is not to strip > CollateExpr in transformJsonBehavior(), but to stop recursing on > JsonBehavior.expr in exprSetCollation(). With this patch, the parser > now ensures that the JsonBehavior.expr has the correct collation, so > the recursion isn’t needed. There is now an Assert in its place that > checks that JsonBehavior.expr already has the target collation. > hi, Amit. thanks for pushing it. https://git.postgresql.org/cgit/postgresql.git/commit/?id=ef5e60a9d352a97791af632e0d26a572bc88e921 it took me a little time to understand why `` exprSetCollation case T_JsonBehavior: Assert(((JsonBehavior *) expr)->expr == NULL || exprCollation(((JsonBehavior *) expr)->expr) == collation); `` works, after looking at assign_collations_walker. it will recursively set JsonBehavior->expr collation first then call exprSetCollation for JsonBehavior itself. I will double-check other JSON constructs with RETURNING clauses for potential collation issues in the future.
В списке pgsql-hackers по дате отправления: