Re: FW: LISTEN/NOTIFY support in JDBC driver?

From: Barry Lind <barry(at)xythos(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: FW: LISTEN/NOTIFY support in JDBC driver?
Date: 2002-09-02 03:12:34
Message-ID: 3D72D722.7070505@xythos.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

This is now fixed in current sources. See
org.postgresql.PGConnection.getNotifications().

--Barry

Barry Lind wrote:

> Ben,
>
> I was looking into this a bit more tonight. I have gotten some
> notifications to come through. But not all.
>
> If you apply the following two line patch to current sources you will
> get notifications if (and only if) you run with autoCommit = true. If
> you set autoCommit to false the backend never sends the notifications
> to the client, and I have no idea why. I plan to follow up on that.
> Given that this only partly works, I don't want to commit this change
> into 7.2 as it isn't complete and 7.2 is too close to release.
>
> thanks,
> --Barry
>
>
> *** QueryExecutor.java Mon Jan 14 21:53:38 2002
> --- QueryExecutor.java.orig Mon Jan 14 21:54:24 2002
> ***************
> *** 70,77 ****
> switch (c)
> {
> case 'A': // Asynchronous
> Notify
> ! int pid =
> pg_stream.ReceiveIntegerR(4);
> !
> connection.addWarning(pg_stream.ReceiveString(connection.getEncoding())
> + " - " +pid );
> break;
> case 'B': // Binary Data
> Transfer
> receiveTuple(true);
> --- 70,77 ----
> switch (c)
> {
> case 'A': // Asynchronous Notify
> ! int pid = pg_stream.ReceiveInteger(4);
> ! String msg =
> pg_stream.ReceiveString(connection.getEncoding());
> break;
> case 'B': // Binary Data Transfer
> receiveTuple(true);
>
>
> Benjamin(dot)Feinstein(at)guardent(dot)com wrote:
>
>> Hey David,
>>
>> I've forwarded the thread from a few days ago regarding async client
>> notifications using the PostgreSQL JDBC interface. Barry answered
>> that it
>> was possible, but I've been unable to get the code to work. Anyone got
>> working LISTEN/NOTIFY code uding JDBC?
>>
>> Thanks for any help,
>> Ben
>>
>> -----Original Message-----
>> From: Ben Feinstein Sent: Monday, January 14, 2002 10:13 AM
>> To: barry(at)xythos(dot)com
>> Cc: pgsql-jdbc(at)postgresql(dot)org
>> Subject: Re: [JDBC] LISTEN/NOTIFY support in JDBC driver?
>>
>>
>> Hey all,
>>
>> I've tried selecting from the db in between checking for warnings,
>> but still
>> no luck? Does anyone have JDBC code that issues a LISTEN, then reaps
>> notifications from the connection warnings?
>>
>> Much thanks!,
>> Ben
>>
>> -----Original Message-----
>> From: Barry Lind [mailto:barry(at)xythos(dot)com]
>> Sent: Friday, January 11, 2002 12:58 PM
>> To: Ben Feinstein
>> Cc: pgsql-jdbc(at)postgresql(dot)org
>> Subject: Re: LISTEN/NOTIFY support in JDBC driver?
>>
>>
>> Ben,
>>
>> Since the jdbc driver doesn't poll the server, you would only see
>> notifications after interacting with the database in someother way.
>> Thus you will periodically need to issue queries to get the
>> notifications to be read. (note I havn't tried this, but from
>> looking at the code this should be the case).
>>
>> thanks,
>> --Barry
>>
>>
>>
>> Benjamin(dot)Feinstein(at)guardent(dot)com wrote:
>>
>>
>>> Hey ya'll,
>>>
>>> Thanks for the quick reply, Barry! I'm still having trouble getting
>>> the
>>> notifications from the "SQLWarning Connection.getWarnings()"
>>> method. When
>>>
>> I
>>
>>> tried to execute multiple LISTEN statments, I get warnings like:
>>>
>>> java.sql.SQLWarning: NOTICE: Async_Listen: We are already listening on
>>> event
>>>
>>> However, I've never gotten a notification from the warnings. Yes, I am
>>> sending the notifies from another connection to the same database. I've
>>> attached my Java test program. Could you take a look and see what I'm
>>>
>> doing
>>
>>> wrong?
>>>
>>> Cheers,
>>> Ben
>>>
>>> -----Original Message-----
>>> From: Barry Lind [mailto:barry(at)xythos(dot)com]
>>> Sent: Wednesday, January 09, 2002 10:10 PM
>>> To: Ben Feinstein
>>> Cc: pgsql-jdbc(at)postgresql(dot)org
>>> Subject: Re: LISTEN/NOTIFY support in JDBC driver?
>>>
>>>
>>> The jdbc driver does support notifications, but in a rather strange
>>> way. When the driver receives a notification is takes the
>>> notification message and adds it to the list of warnings on the
>>> connection. So the way you get notifications is to call
>>> getWarnings(). Given that there isn't a concept like notifications
>>> in the jdbc API, this is perhaps the best way these can be handled
>>> within jdbc, unless someone can suggest a better approach.
>>>
>>> thanks,
>>> --Barry
>>>
>>> Benjamin(dot)Feinstein(at)guardent(dot)com wrote:
>>>
>>>
>>>
>>>> Hello ya'll,
>>>>
>>>> It appears that the current version of the JDBC interface for
>>>> PostgreSQL
>>>> does not implement asyncronous client notifications. I have been
>>>> able to
>>>> issue a NOTIFY statement through the JDBC driver, but I haven't
>>>> found how
>>>>
>>>>
>>> to
>>>
>>>
>>>> LISTEN for an client notification. Am I missing something, or does the
>>>> JDBC-PgSQL interface not support LISTEN? Does anyone know of a
>>>> patch to
>>>>
>>>>
>>> the
>>>
>>>
>>>> JDBC-PgSQL interface that enables the LISTEN functionality? I've
>>>> looked
>>>>
>>>>
>>> back
>>>
>>>
>>>> through the list archives but was unable to find any threads in this
>>>>
>>>>
>>> topic.
>>>
>>>
>>>> I'm running:
>>>> PostgreSQL 7.1.3
>>>> jdbc7.1-1.2.jar
>>>> Sun JDK 1.3.1_01
>>>>
>>>> Thanks for any help,
>>>> Ben
>>>>
>>>>
>>>>
>>>>
>>>>> Ben Feinstein
>>>>> Software Development Engineer, R & D
>>>>> W: 678.585.7865 x6726 F: 770.645.8311 M: 678.772.4126
>>>>> 8302 Dunwoody Pl., Suite 320, Atlanta, GA 30350 www.guardent.com
>>>>> _____________________________________________________
>>>>> G U A R D E N T
>>>>> Enterprise Security and Privacy Programs
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>> ---------------------------(end of
>>>> broadcast)---------------------------
>>>> TIP 1: subscribe and unsubscribe commands go to
>>>> majordomo(at)postgresql(dot)org
>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 2: you can get off all lists at once with the unregister command
>> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 3: if posting/reading through Usenet, please send an appropriate
>> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
>> message can get through to the mailing list cleanly
>>
>>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo(at)postgresql(dot)org
>
>

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Barry Lind 2002-09-02 03:13:34 Re: Issues with Array interface (String parsing)
Previous Message Barry Lind 2002-09-02 03:11:07 Re: setBlob loop performance?