Re: getting async raise notice messages

From: Pawel Veselov <pawel(dot)veselov(at)gmail(dot)com>
To: Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: getting async raise notice messages
Date: 2015-01-27 22:27:28
Message-ID: CAMnJ+BckzuQX9uJ8KSv3=Db11T=Atcg6wUDfLyuX-vsZeZ4caQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Mon, Jan 26, 2015 at 3:42 PM, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:

> Pawel,
>
> Have a look at org/postgresql/test/jdbc2/NotifyTest.java for exactly what
> you proposed. As for when it gets notified, I do not know how you would
> tell as the spec does not provide this functionality (AFAIK)
>

AFAIK too JDBC doesn't. But IMHO, a meaningful (short of polling on a
timer, which makes it either CPU intensive, or delayed) LISTEN/NOTIFY
application is not particularly possible without a mechanism that will
somehow call into the app to notify that a notification is ready.

Also, 'raise notice' from a statement is treated as SQLWarning by the
driver, not a notification. I've poked around the source and it's actually
quite tricky. Warnings that come out anything but the result response are
attached directly to the connection. But the result warnings are sent
through some cumbersome (to me :) ) chain of handlers.

I've put together this patch (over 9.1-902, which is just what I currently
use), if anybody's interested: http://pastebin.com/KftdtdNq ,but:
- it uses JDK6 stuff
- has effect of copying all statements/resultset warnings into connection
warnings

Also, thank you, Kevin. May be I'll try out the NG driver once I upgrade
the project JDK :)

Thanks,
Pawel.

>
> Dave Cramer
>
> dave.cramer(at)credativ(dot)ca
> http://www.credativ.ca
>
> On 26 January 2015 at 17:52, Pawel Veselov <pawel(dot)veselov(at)gmail(dot)com>
> wrote:
>
>> Dave,
>>
>> On Mon, Jan 26, 2015 at 2:38 PM, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:
>>
>>> http://www.postgresql.org/message-id/46A5E225.2070903@lewczuk.com
>>>
>>> Dave Cramer
>>>
>>
>> I've seen that :) May be I'm missing something, but that's not
>> asynchronous. I need to wait until statement finishes before calling those
>> getWarnings() methods. May be I can call them from another thread (at least
>> on Connection/Statement object) as the SQL is being processed, and they
>> will return current messages, but I'm not sure when to - i.e. how do I know
>> when a new message has been made available.
>>
>>
>>> dave.cramer(at)credativ(dot)ca
>>> http://www.credativ.ca
>>>
>>> On 26 January 2015 at 17:06, Pawel Veselov <pawel(dot)veselov(at)gmail(dot)com>
>>> wrote:
>>>
>>>> Hi.
>>>>
>>>> Is it possible to get output of raise notice statements as produced by
>>>> a PL function, as the function is being executed? And if yes, what version
>>>> was that introduced in?
>>>>
>>>>
>>
>
>

--
With best of best regards
Pawel S. Veselov

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Pawel Veselov 2015-01-27 22:33:48 Re: getting async raise notice messages
Previous Message Kevin Wooten 2015-01-26 23:49:26 Re: getting async raise notice messages