Re: Recursive CTE and collation
От
Sébastien Lardière
Тема
Re: Recursive CTE and collation
Дата
Msg-id
4d73f7e5-a64d-2a9c-9148-09176d6261fb@lardiere.net
Ответ на
Re: Recursive CTE and collation (Tom Lane)
Список
Дерево обсуждения
Recursive CTE and collation Sébastien Lardière <sebastien@lardiere.net>
Re: Recursive CTE and collation Tom Lane <tgl@sss.pgh.pa.us>
Re: Recursive CTE and collation Sébastien Lardière <sebastien@lardiere.net>
Re: Recursive CTE and collation Tom Lane <tgl@sss.pgh.pa.us>
Re: Recursive CTE and collation Luca Ferrari <fluca1978@gmail.com>
On 14/06/2019 15:39, Tom Lane wrote: > =?UTF-8?Q?S=c3=a9bastien_Lardi=c3=a8re?= writes: >> While playing with the query showed here : >> https://fluca1978.github.io/2019/06/12/PartitioningCTE.html >> I've seen something strange with v12 (actually compiled after >> f43608bda2111a1fda514d1bed4df313ee2bbec3 so more recent than beta1) : >> psql: ERROR: recursive query "inheritance_tree" column 3 has collation >> "default" in non-recursive term but collation "C" overall >> LINE 4: , NULL::text AS table_parent_name >> ^ >> HINT: Use the COLLATE clause to set the collation of the non-recursive >> term. > Yeah. Your query is really wrong as it stands, because it's trying > to union "NULL::text" with a column of type "name". Indeed, ::text is wrong, > That accidentally > works in previous releases, but as of v12, "name" has acquired > collatability, and the recursive-union rules don't allow papering that > over. Good to know, > I notice that it does work in a regular union: > > regression=# select null::text union select null::name collate "C"; > text > ------ > > (1 row) > > but I believe that recursive union is intentionally stricter. > >> It work correctly with 11, and with 12, we can workaround by adding >> COLLATE "C" after NULL::text, so I don't know if it's a bug or a new >> feature, but it break things, at least. > I'd suggest using "NULL::name" instead. yes, thanks, -- Sébastien
В списке pgsql-bugs по дате отправления