Re: State of the support for the hstore ? operator
От | Albe Laurenz |
---|---|
Тема | Re: State of the support for the hstore ? operator |
Дата | |
Msg-id | A737B7A37273E048B164557ADEF4A58B50FE7023@ntex2010i.host.magwien.gv.at обсуждение исходный текст |
Ответ на | State of the support for the hstore ? operator (Thomas Kellerer <spam_eater@gmx.net>) |
Ответы |
Re: State of the support for the hstore ? operator
Re: State of the support for the hstore ? operator |
Список | pgsql-jdbc |
Thomas Kellerer wrote: > I just stumbled upon this (using postgresql-9.4-1205.jdbc42.jar) > > Statement stmt = con.createStatement(); > ResultSet rs = stmt.executeQuery("select count(*) from product where attributes ? 'location_id'"); > > results in > > org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1" > > "product.attributes" is a hstore column: > > I recall a discussion about this problem a while ago, but I can't find it any more. > > While I certainly would expect a problem when using a PreparedStatement I am surprised > that a "plain" executeQuerys() also tries to do parameter replacement. > > I have found the suggestion to use exist(attributes, 'location_id') but that is not > an option as that does not use the index on the column. > > So what is the state of this? Do we have a way of escaping the ? operator? > > I couldn't find anything in the documentation. I looked into the source, and you can escape the question mark by doubling it. But I agree that it is strange that the JDBC driver substitutes question marks with positional parameters in that case. I think that is a bug in org/postgresql/core/Parser: Even if "withParameters" is false, it parses question marks. I'll try to come up with a patch. Yours, Laurenz Albe
В списке pgsql-jdbc по дате отправления: