findTargetlistEntrySQL92() and COLLATE clause

Поиск
Список
Период
Сортировка
От Amit Langote
Тема findTargetlistEntrySQL92() and COLLATE clause
Дата
Msg-id 2173dc58-6697-1e10-9604-a7c9f2a8bb55@lab.ntt.co.jp
обсуждение исходный текст
Ответы Re: findTargetlistEntrySQL92() and COLLATE clause  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hi,

I couldn't find old discussions or source code comments about this, but
has someone encountered the following error and wondered whether it's
working that way for a reason?

select a::text, b from foo order by 1, 2 collate "C";
ERROR:  collations are not supported by type integer
LINE 1: select a::text, b from foo order by 1, 2 collate "C";
                                                 ^
I expected this to resolve the output column number (2) to actual column
(b) and apply COLLATE clause on top of it.  Attached patch makes it so by
teaching findTargetlistEntrySQL92() to recognize such ORDER BY items and
handle them likewise.  With the patch:

select a::text, b from foo order by 1, 2 collate "C";
 a  │    b
────┼──────────
 ab │ ab wins
 ab │ ab1 wins
 ab │ ab2 wins
(3 rows)

select a::text, b from foo order by 1 collate "C", 2;
 a  │    b
────┼──────────
 ab │ ab1 wins
 ab │ ab2 wins
 ab │ ab wins
(3 rows)

select a::text, b from foo order by 3 collate "C", 2;
ERROR:  ORDER BY position 3 is not in select list
LINE 1: select a::text, b from foo order by 3 collate "C", 2;

Am I missing something?

Thanks,
Amit

Вложения

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

Предыдущее
От: "Iwata, Aya"
Дата:
Сообщение: RE: libpq debug log
Следующее
От: John Naylor
Дата:
Сообщение: Re: Unhappy about API changes in the no-fsm-for-small-rels patch