"could not determine data type of parameter" with timestamp

From: Rémi Aubel <remi(dot)aubel(at)gmail(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: "could not determine data type of parameter" with timestamp
Date: 2017-12-05 15:11:35
Message-ID: CAG2M1febgZbhBwm0DQK4Y5ekDrTbzTyAa1syKcdXw+6Y8caK4g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hello,

I know my problem has already been answered in this list (
https://www.postgresql.org/message-id/CA%2BxsaB0EMDaNek0Oky9c17_8UX3-epWVP11%2BvTNgrAPoY2s9FA%40mail.gmail.com)
but it was a long time ago and I would like to know if any other solution
exists now.

I need to execute this PreparedStatement:
select * from my_table where ? is null
with a bound parameter of type Timestamp.

With this form, the driver (version 42.1.4) raises this exception:
org.postgresql.util.PSQLException: ERROR: could not determine data type of
parameter $1

Note: I have the same exception if the bound parameter is null. The
PreparedStatement should result in
select * from my_table where null is null
which is correct SQL.

The solution given 4 years ago was to explicitly cast the parameter as a
timestamp (select * from my_table where ?::timestamp is null).
But this workaround is not really useful for me, because my application
uses generated (dynamic) queries and targets multiple database types (not
only PosgreSQL). So, when I know the targeted database, I do not know my
parameter types anymore.

Any suggestion?

Thanks in advance.

Rémi.

--

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message rob stone 2017-12-05 20:22:15 Re: "could not determine data type of parameter" with timestamp
Previous Message Michael Paquier 2017-12-01 02:11:14 Re: [JDBC] [HACKERS] Channel binding support for SCRAM-SHA-256