Re: JDBC-94: "Multiple resultsets were returned by query" in query end with "; "

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Adam Rauch <adam(at)labkey(dot)com>
Cc: Christopher BROWN <brown(at)reflexe(dot)fr>, Vladimir Sitnikov <sitnikov(dot)vladimir(at)gmail(dot)com>, Craig Ringer <craig(at)2ndquadrant(dot)com>, Dang Minh Huong <kakalot49(at)gmail(dot)com>, "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: JDBC-94: "Multiple resultsets were returned by query" in query end with "; "
Date: 2015-10-07 18:46:30
Message-ID: CADK3HH+9R=vzTFgm0+=4J4tVHnKKLBeVeOGWxSBLWzs+sizAjQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

I've pushed the PR so the next version will not do this

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca

On 7 October 2015 at 14:42, Adam Rauch <adam(at)labkey(dot)com> wrote:

> I agree with Christopher. After upgrading to the latest JDBC driver our
> system started throwing these exceptions. It's not hard for us to fix (I
> can update our own framework code), but it seems unnecessary and is likely
> more difficult for others to address.
>
> Here's a simplified example of SQL-generatation code that runs afoul of
> this change: in our system, a logical insert at one layer may map to
> multiple database inserts (e.g., to a primary database table plus one or
> more property tables). The code generating the insert SQL terminates each
> INSERT with ";\n", for convenience and human readability. As a result, the
> final INSERT can end with a dangling "\n" that 1202 now rejects. Of course,
> we could duplicate a subsequent check and/or special case the last INSERT
> to remove the "\n", but the current code is cleaner.
>
> Adam
>
>
> On 10/7/2015 5:42 AM, Christopher BROWN wrote:
>
> Hello,
>
> Developers that use the driver via a framework (open-source, in-house)
> might not be in a position to change SQL, compared with developers that are
> able to modify hand-written SQL, so it's probably best to tolerate it by
> discarding any trailing semi-colon (with or without any trailing
> whitespace) in the parser.
>
> I've also encountered coding practices (coding-style "standards") where
> semi-colons are expected (some people just love terminating all statements,
> not just Java, with semi-colons, even when it's not strictly necessary
> (e.g.: JavaScript).
>
> So, my preference would be to maintain backwards-compatibility for others,
> even if I don't have such an issue myself.
>
> --
> Christopher
>
>
> On 7 October 2015 at 14:34, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:
>
>> This is a very good question, but lots of people cut and paste SQL into
>> code ... sometimes the ; gets in there.
>>
>> Behaviour of previous version is important, but in this case It may not
>> be justified.
>>
>> Anyone else have an opinion ?
>>
>> Dave Cramer
>>
>> dave.cramer(at)credativ(dot)ca
>> http://www.credativ.ca
>>
>> On 7 October 2015 at 08:30, Vladimir Sitnikov <
>> <sitnikov(dot)vladimir(at)gmail(dot)com>sitnikov(dot)vladimir(at)gmail(dot)com> wrote:
>>
>>> I wonder why pgjdbc would want to silently ignore that user error?
>>> Is "behavior of previous version" a sole justification?
>>>
>>> I've drafted https://github.com/pgjdbc/pgjdbc/pull/386 to cover that.
>>>
>>> Vladimir
>>>
>>
>>
>
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2015-10-07 19:01:25 Re: Connection terminated by the server causes deadlock in jdbc client side connection
Previous Message Adam Rauch 2015-10-07 18:42:20 Re: JDBC-94: "Multiple resultsets were returned by query" in query end with "; "