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