mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-23 19:39:53 +08:00
V3 NotificationResonse messages were trying to be received as V2
messages. Also the PID was being read in the wrong byte order. Finally add a test case for listen/notify. Per report from Hans Nather.
This commit is contained in:
parent
d71188860e
commit
932001350b
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
//------------------------------
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user