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
|
* Copyright (c) 2003, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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)
|
switch (c)
|
||||||
{
|
{
|
||||||
case 'A': // Asynchronous Notify
|
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 msg = pgStream.ReceiveString(connection.getEncoding());
|
||||||
|
String param = pgStream.ReceiveString(connection.getEncoding());
|
||||||
connection.addNotification(new org.postgresql.core.Notification(msg, pid));
|
connection.addNotification(new org.postgresql.core.Notification(msg, pid));
|
||||||
break;
|
break;
|
||||||
case 'B': // Binary Data Transfer
|
case 'B': // Binary Data Transfer
|
||||||
@ -237,7 +239,7 @@ public class QueryExecutor
|
|||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
case 'A': // Asynchronous Notify
|
case 'A': // Asynchronous Notify
|
||||||
int pid = pgStream.ReceiveInteger(4);
|
int pid = pgStream.ReceiveIntegerR(4);
|
||||||
String msg = pgStream.ReceiveString(connection.getEncoding());
|
String msg = pgStream.ReceiveString(connection.getEncoding());
|
||||||
connection.addNotification(new org.postgresql.core.Notification(msg, pid));
|
connection.addNotification(new org.postgresql.core.Notification(msg, pid));
|
||||||
break;
|
break;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* Copyright (c) 2003, PostgreSQL Global Development Group
|
* Copyright (c) 2003, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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)
|
switch (c)
|
||||||
{
|
{
|
||||||
case 'A': // Asynchronous Notify
|
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 msg = stream.ReceiveString(conn.getEncoding());
|
||||||
|
String param = stream.ReceiveString(conn.getEncoding());
|
||||||
conn.addNotification(new org.postgresql.core.Notification(msg, pid));
|
conn.addNotification(new org.postgresql.core.Notification(msg, pid));
|
||||||
break;
|
break;
|
||||||
//------------------------------
|
//------------------------------
|
||||||
@ -233,8 +235,9 @@ public class Fastpath
|
|||||||
{
|
{
|
||||||
case 'A': // Asynchronous Notify
|
case 'A': // Asynchronous Notify
|
||||||
//TODO: do something with this
|
//TODO: do something with this
|
||||||
int pid = stream.ReceiveInteger(4);
|
int pid = stream.ReceiveIntegerR(4);
|
||||||
String msg = stream.ReceiveString(conn.getEncoding());
|
String msg = stream.ReceiveString(conn.getEncoding());
|
||||||
|
conn.addNotification(new org.postgresql.core.Notification(msg, pid));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//------------------------------
|
//------------------------------
|
||||||
|
@ -55,6 +55,7 @@ public class Jdbc2TestSuite extends TestSuite
|
|||||||
// features some applications require.
|
// features some applications require.
|
||||||
suite.addTestSuite(JBuilderTest.class);
|
suite.addTestSuite(JBuilderTest.class);
|
||||||
suite.addTestSuite(MiscTest.class);
|
suite.addTestSuite(MiscTest.class);
|
||||||
|
suite.addTestSuite(NotifyTest.class);
|
||||||
|
|
||||||
// Fastpath/LargeObject
|
// Fastpath/LargeObject
|
||||||
suite.addTestSuite(BlobTest.class);
|
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…
x
Reference in New Issue
Block a user