aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java8
-rw-r--r--src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java9
-rw-r--r--src/interfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java1
-rw-r--r--src/interfaces/jdbc/org/postgresql/test/jdbc2/NotifyTest.java43
4 files changed, 55 insertions, 6 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java b/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
index b7ea0ef2b6d..624a9fc1d62 100644
--- a/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
+++ b/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
@@ -6,7 +6,7 @@
* Copyright (c) 2003, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/core/Attic/QueryExecutor.java,v 1.27 2003/09/17 08:21:36 barry Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/core/Attic/QueryExecutor.java,v 1.27.2.1 2004/02/03 05:43:22 jurka Exp $
*
*-------------------------------------------------------------------------
*/
@@ -129,8 +129,10 @@ public class QueryExecutor
switch (c)
{
case 'A': // Asynchronous Notify
- int pid = pgStream.ReceiveInteger(4);
+ int msglen = pgStream.ReceiveIntegerR(4);
+ int pid = pgStream.ReceiveIntegerR(4);
String msg = pgStream.ReceiveString(connection.getEncoding());
+ String param = pgStream.ReceiveString(connection.getEncoding());
connection.addNotification(new org.postgresql.core.Notification(msg, pid));
break;
case 'B': // Binary Data Transfer
@@ -237,7 +239,7 @@ public class QueryExecutor
switch (c)
{
case 'A': // Asynchronous Notify
- int pid = pgStream.ReceiveInteger(4);
+ int pid = pgStream.ReceiveIntegerR(4);
String msg = pgStream.ReceiveString(connection.getEncoding());
connection.addNotification(new org.postgresql.core.Notification(msg, pid));
break;
diff --git a/src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java b/src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java
index 5f46ad12068..dd0dd7f9f0b 100644
--- a/src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java
+++ b/src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java
@@ -6,7 +6,7 @@
* Copyright (c) 2003, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/fastpath/Attic/Fastpath.java,v 1.16.2.2 2003/12/18 03:29:12 davec Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/fastpath/Attic/Fastpath.java,v 1.16.2.3 2004/02/03 05:43:22 jurka Exp $
*
*-------------------------------------------------------------------------
*/
@@ -118,8 +118,10 @@ public class Fastpath
switch (c)
{
case 'A': // Asynchronous Notify
- int pid = stream.ReceiveInteger(4);
+ int msglen = stream.ReceiveIntegerR(4);
+ int pid = stream.ReceiveIntegerR(4);
String msg = stream.ReceiveString(conn.getEncoding());
+ String param = stream.ReceiveString(conn.getEncoding());
conn.addNotification(new org.postgresql.core.Notification(msg, pid));
break;
//------------------------------
@@ -233,8 +235,9 @@ public class Fastpath
{
case 'A': // Asynchronous Notify
//TODO: do something with this
- int pid = stream.ReceiveInteger(4);
+ int pid = stream.ReceiveIntegerR(4);
String msg = stream.ReceiveString(conn.getEncoding());
+ conn.addNotification(new org.postgresql.core.Notification(msg, pid));
break;
//------------------------------
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
index e1b480a1f1c..3eab8e66338 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
@@ -55,6 +55,7 @@ public class Jdbc2TestSuite extends TestSuite
// features some applications require.
suite.addTestSuite(JBuilderTest.class);
suite.addTestSuite(MiscTest.class);
+ suite.addTestSuite(NotifyTest.class);
// Fastpath/LargeObject
suite.addTestSuite(BlobTest.class);
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/NotifyTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/NotifyTest.java
new file mode 100644
index 00000000000..08718851150
--- /dev/null
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/NotifyTest.java
@@ -0,0 +1,43 @@
+package org.postgresql.test.jdbc2;
+
+import org.postgresql.test.TestUtil;
+import junit.framework.TestCase;
+import java.sql.*;
+
+import org.postgresql.PGConnection;
+import org.postgresql.PGNotification;
+
+public class NotifyTest extends TestCase
+{
+
+ private Connection conn;
+
+ public NotifyTest(String name)
+ {
+ super(name);
+ }
+
+ protected void setUp() throws SQLException
+ {
+ conn = TestUtil.openDB();
+ }
+
+ protected void tearDown() throws SQLException
+ {
+ TestUtil.closeDB(conn);
+ }
+
+ public void testNotify() throws SQLException
+ {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+ stmt.executeUpdate("NOTIFY mynotification");
+
+ PGNotification notifications[] = ((org.postgresql.PGConnection)conn).getNotifications();
+ assertNotNull(notifications);
+ assertEquals(notifications.length, 1);
+ assertEquals(notifications[0].getName(), "mynotification");
+
+ stmt.close();
+ }
+}