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

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Barry Lind <barry(at)xythos(dot)com>
Cc: Benjamin(dot)Feinstein(at)guardent(dot)com, glwatcdr(at)yahoo(dot)com, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: FW: LISTEN/NOTIFY support in JDBC driver?
Date: 2002-02-23 02:07:07
Message-ID: 200202230207.g1N277O02568@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc


Barry, do you have a patch you want to apply for 7.3?

---------------------------------------------------------------------------

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
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Bruce Momjian 2002-02-23 02:09:50 Re: Problem in ResultSet#getTimestamp() of 7.2b4
Previous Message Bruce Momjian 2002-02-23 00:31:41 Re: Patch : Re: JDBC improvements