Re: postgresql-8.0.jar and failure of ORDER BY parameters

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Guillaume Cottenceau <gc(at)mnc(dot)ch>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: postgresql-8.0.jar and failure of ORDER BY parameters
Date: 2005-05-04 14:14:19
Message-ID: 17996.1115216059@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Guillaume Cottenceau <gc(at)mnc(dot)ch> writes:
> SELECT .... ORDER BY ?, ?

> actionSt.setInt( 1, 4 );
> actionSt.setInt( 2, 5 );

This would appear to be asking for a sort by two constant values,
which of course is not going to order the data usefully at all
--- all the rows will have the same sort keys.

I suppose that it behaved differently in older versions of the JDBC
driver that didn't implement real server-side prepared statements.
If the parameters are substituted textually before the server sees
the command, then you have "ORDER BY 4,5" which is interpreted according
to the old SQL92 syntax --- ie, sort by fourth and fifth columns of the
output. But anything beyond a simple integer literal --- in particular,
a parameter symbol --- is treated as an expression value per SQL99.

So no, you can't do it like that. The fact that it happened to "work"
before was an artifact of the implementation.

regards, tom lane

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Guillaume Cottenceau 2005-05-04 14:30:18 Re: postgresql-8.0.jar and failure of ORDER BY parameters
Previous Message Dave Cramer 2005-05-04 11:54:16 Re: Connectivity of postgreSQL database to a JSP page