Re: Problems with question marks in operators (JDBC, ECPG, ...)

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Bruno Harbulot <bruno(at)distributedmatter(dot)net>
Cc: Kevin Grittner <kgrittn(at)ymail(dot)com>, Gavin Flower <GavinFlower(at)archidevsys(dot)co(dot)nz>, Jan de Visser <jan(at)de-visser(dot)net>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Problems with question marks in operators (JDBC, ECPG, ...)
Date: 2015-05-20 16:18:38
Message-ID: CAKFQuwZbb8Z0hhzbmaS3X-GzQxTyG3zB7B6Ygih44di_uy5rBA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, May 20, 2015 at 8:29 AM, Bruno Harbulot <bruno(at)distributedmatter(dot)net
> wrote:

>
>
> On Tue, May 19, 2015 at 10:50 PM, David G. Johnston <
> david(dot)g(dot)johnston(at)gmail(dot)com> wrote:
>
>> On Tue, May 19, 2015 at 2:34 PM, Bruno Harbulot <
>> bruno(at)distributedmatter(dot)net> wrote:
>>
>>>
>>> While I can imagine a Java PostgreSQL driver that would use the libpq
>>> syntax, I can't see it being able to have any useful sort of
>>> half-compatibility with JDBC, whether it mimics its interfaces or not. I'm
>>> not sure it would be very useful at all, considering how much the existing
>>> tooling the the Java world relies on JDBC.
>>>
>>>
>> ​I won't claim to have studied this in great detail but there is a lot
>> more to the JDBC spec beyond the semantics of
>> "PreparedStatement.parse(String)". No need to throw out the baby with the
>> bath water and reinvent ResultSet, Connection and various other interfaces
>> that are perfectly usable before and after a suitable query has been fully
>> parsed.
>>
>> When I say "setInteger(1, new Integer(1000))" I don't care whether I had
>> to write "SELECT ? AS int_val" OR "SELECT $1 AS int_val"; though the later
>> has the nice property of providing corresponding numbers so that I would
>> write something like "SELECT $1 AS int_val, $1 AS int_val_2" and not be
>> forced to write "setInteger(2, new Integer(1000))" to pass in a value to
>> the second - but identical - parameter. Maybe it violates the semantics
>> defined by the API - which I could be making too lightly of - but having
>> the same mechanics involved to solve the same problem - with only minor
>> semantic nuances to remember seems within the realm of reasonable.
>>
>>
>>
> Yes, you're probably right. Nevertheless, I'm not sure why anyone would
> switch to that format, knowing that other tools that are on top of JDBC
> would certainly not work very well (e.g. Groovy SQL, JOOQ, or ORMs like
> Hibernate, ...).
>
>
​Hadn't really pondered those :( though to be honest a compatibility layer
to write out sequential $# instead of ? doesn't seem that difficult - but
it would depend on the codebase of the tool. Unfortunately the driver
wouldn't be in a position to do the work.

David J​

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2015-05-20 16:20:30 Re: Bug in jsonb minus operator
Previous Message Jon Nelson 2015-05-20 16:15:52 Re: Change pg_cancel_*() to ignore current backend