Re: Re: JDBC and the hstore ? operator - no longer workingwith build 1211 - Mailing list pgsql-jdbc

From Vladimir Sitnikov
Subject Re: Re: JDBC and the hstore ? operator - no longer workingwith build 1211
Date
Msg-id CAB=Je-Efwwv9Dapkwd6KvSNtMxJbLgLELr=wxS2cgziBjaurCA@mail.gmail.com
Whole thread Raw
In response to Re: [JDBC] Re: JDBC and the hstore ? operator - no longer workingwith build 1211  (Mark Rotteveel <mark@lawinegevaar.nl>)
List pgsql-jdbc
Mark>I haven't tried it, but would you logically need to use ??& and ??|, if
the ? operator is escaped using ??

That's right.
PreparedStatement requires ? to be represented as ?? (that is pgjdbc's quirk).
Regular statement (non prepared) does not require ?? escaping.

pgjdbc does not parse statements hard enough to tell if the particular ? is a bind variable or if it is a part of json operator.
Pull requests are welcome (provided parsing does not take too much CPU)

Vladimir


чт, 2 мар. 2017 г. в 21:10, Mark Rotteveel <mark@lawinegevaar.nl>:
On 2017-03-02 09:54, Thomas Kellerer wrote:
> Vladimir Sitnikov schrieb am 01.11.2016 um 15:00:
>>> This has been "broken" for a while now, you have to use ?? to get it
>>> to work.
>
> This still doesn't work completely with a PreparedStatement.
>
> Other hstore operators that start with an ? do not work: ?& and ?|
>
> e.g.:
>
>    connection.prepareStatement("select * from foo where hstore_column
> ?& array['key']");
>    connection.prepareStatement("select * from foo where hstore_column
> ?| array['key']");
>
> The prepareStatement() call succeeds, but when calling executeQuery()
> an exception is thrown:
>
>    org.postgresql.util.PSQLException: No value specified for parameter
> 1.
>
> The goal is to pass the array as a parameter, something like:
>
>    Array keys = con.createArrayOf("text", new String[]
> {"key1","key2"});
>    connection.prepareStatement("select * from foo where hstore_column
> ?& ?");
>    pstmt.setArray(1, keys);
>    ResultSet rs = pstmt.executeQuery();
>
> Tested with 1212 and 42.0.0

I haven't tried it, but would you logically need to use ??& and ??|, if
the ? operator is escaped using ??

Mark


--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc

pgsql-jdbc by date:

Previous
From: Mark Rotteveel
Date:
Subject: Re: [JDBC] Re: JDBC and the hstore ? operator - no longer workingwith build 1211
Next
From: Bogdan Daniliuc
Date:
Subject: [JDBC] Problem updating driver to 42.0.0