Re: Something's not (de)compressing right...
От | Tom Lane |
---|---|
Тема | Re: Something's not (de)compressing right... |
Дата | |
Msg-id | 23668.963030612@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Something's not (de)compressing right... (Peter Eisentraut <peter_e@gmx.net>) |
Список | pgsql-hackers |
Peter Eisentraut <peter_e@gmx.net> writes: > When using psql's \dd command, the backend crashes with a segfault. The new query \dd is issuing is tickling a longstanding UNION bug. For now I'd suggest that you work around the problem by explicitly coercing the result of format_type() to NAME: ... UNION ALL SELECT DISTINCT format_type(t.oid, NULL)::name as "Name", 'type'::text as "Object", d.description as "Description" ... The crash occurs because text_lt is used to sort a column of NAME values --- the result of format_type is coerced to NAME so that it can be union'd with the NAME results of the other sub-selects, but by the time that happens we've already chosen the sort operator for the DISTINCT, and what we chose was text_lt :-(. If you do the coercion explicitly then name_lt gets chosen for DISTINCT and everything works. Actually, given that the result of format_type might well exceed 32 characters, you might think it better to coerce the results of all the sub-selects to "text". But the point is you can't rely on UNION's auto- coercion to do the right thing when a sub-select requires its own sort. I have a list of about two dozen UNION/INTERSECT/EXCEPT bugs (including this one) that I don't think can be fixed without a querytree redesign. So hold your nose and coerce explicitly until 7.2 ... regards, tom lane
В списке pgsql-hackers по дате отправления: