Re: BUG #15171: JDBC TIMESTAMP WITH TIME ZONE PSQLException When Using Substitution Parameter

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: len(dot)carlsen(at)ubc(dot)ca
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15171: JDBC TIMESTAMP WITH TIME ZONE PSQLException When Using Substitution Parameter
Date: 2018-04-24 23:22:01
Message-ID: 17552.1524612121@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

=?utf-8?q?PG_Bug_reporting_form?= <noreply(at)postgresql(dot)org> writes:
> Executing this query works fine: 'SELECT TIMESTAMP WITH TIME ZONE
> '2018-04-17 12:00:00.0-07'"
> But executing query "SELECT TIMESTAMP WITH TIME ZONE ?" with a substitution
> parameter results in a PSQLException syntax error.

Yes. A parameter symbol is not a syntactic equivalent to a
string literal; it's more nearly like a variable. You can't say
"typename variable" either. You need to write it like a cast,
ie "variable::typename", or "CAST(variable AS typename)" if you
want to be pedantically standards-compliant. So what you want is
"SELECT ?::TIMESTAMP WITH TIME ZONE".

(Allowing the non-orthogonal, non-extensible syntax "typename
string-literal" was not one of the SQL committee's better decisions
IMV. We're stuck with supporting it, but I'd suggest avoiding it in
favor of cast-like notation, which works in a much wider variety of
cases.)

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2018-04-25 00:02:20 BUG #15172: Postgresql ts_headline with <-> operator does not highlight text properly
Previous Message Tom Lane 2018-04-24 23:10:22 Re: BUG #15170: PQtransactionStatus returns ACTIVE after Empty Commit