Re: ORDER BY $1 behaves inconsistently

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jordan Lewis <jordanthelewis(at)gmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: ORDER BY $1 behaves inconsistently
Date: 2017-10-27 18:33:12
Message-ID: 31441.1509129192@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Jordan Lewis <jordanthelewis(at)gmail(dot)com> writes:
> Actually, it's even worse than I thought. It seems that placeholders in
> ORDER BY clauses get entirely ignored,
> as running `EXECUTE x(1)` on the previous example with unsorted table data
> does not sort the table by the 1st
> column as expected.

"ORDER BY $1" is asking to order by some constant value (constant within
any one execution of the command, anyway), which is useless, because all
rows in the query will have the same sort key. The planner will throw
that away as being a no-op.

"ORDER BY 1" is asking to order by the first output column. This is
not the same thing. You cannot get that effect with a parameter;
if you could, it would probably represent a SQL-injection hazard.

If the value of $1 were "foo" and you complained that it didn't order
by column foo, it would be exactly the same issue...

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Cristiano Coelho 2017-10-27 18:48:08 pg_trgm word_similarity inconsistencies or bug
Previous Message Jordan Lewis 2017-10-27 16:53:12 Re: ORDER BY $1 behaves inconsistently