diff -urb postgresql-jdbc-8.0-310.src-vanilla/org/postgresql/core/v2/ProtocolConnectionImpl.java postgresql-jdbc-8.0-310.src/org/postgresql/core/v2/ProtocolConnectionImpl.java --- postgresql-jdbc-8.0-310.src-vanilla/org/postgresql/core/v2/ProtocolConnectionImpl.java 2005-01-11 09:25:43.000000000 +0100 +++ postgresql-jdbc-8.0-310.src/org/postgresql/core/v2/ProtocolConnectionImpl.java 2005-04-11 05:07:42.000000000 +0200 @@ -58,6 +58,9 @@ public synchronized PGNotification[] getNotifications() { + try { + executor.processNotifies(); + } catch (SQLException e) {}; PGNotification[] array = (PGNotification[])notifications.toArray(new PGNotification[notifications.size()]); notifications.clear(); return array; diff -urb postgresql-jdbc-8.0-310.src-vanilla/org/postgresql/core/v2/QueryExecutorImpl.java postgresql-jdbc-8.0-310.src/org/postgresql/core/v2/QueryExecutorImpl.java --- postgresql-jdbc-8.0-310.src-vanilla/org/postgresql/core/v2/QueryExecutorImpl.java 2005-02-01 08:27:54.000000000 +0100 +++ postgresql-jdbc-8.0-310.src/org/postgresql/core/v2/QueryExecutorImpl.java 2005-04-11 05:44:34.000000000 +0200 @@ -148,6 +148,29 @@ pgStream.flush(); } + public synchronized void processNotifies() throws SQLException { + try { + while (protoConnection.getTransactionState() == ProtocolConnection.TRANSACTION_IDLE && pgStream.getSocket().getInputStream().available()>0) { + int c = pgStream.ReceiveChar(); + switch (c) { + case 'A': // Asynchronous Notify + receiveAsyncNotify(); + break; + case 'N': // Error Notification + protoConnection.addWarning(receiveNotification()); + break; + + default: + throw new PSQLException(GT.tr("Unknown Response Type {0}.", new Character((char) c)), PSQLState.CONNECTION_FAILURE); + } + } + } + catch (IOException ioe) + { + throw new PSQLException(GT.tr("An I/O error occured while sending to the backend."), PSQLState.CONNECTION_FAILURE, ioe); + } + } + private byte[] receiveFastpathResult() throws IOException, SQLException { SQLException error = null; boolean endQuery = false; diff -urb postgresql-jdbc-8.0-310.src-vanilla/org/postgresql/core/v3/ProtocolConnectionImpl.java postgresql-jdbc-8.0-310.src/org/postgresql/core/v3/ProtocolConnectionImpl.java --- postgresql-jdbc-8.0-310.src-vanilla/org/postgresql/core/v3/ProtocolConnectionImpl.java 2005-01-11 09:25:44.000000000 +0100 +++ postgresql-jdbc-8.0-310.src/org/postgresql/core/v3/ProtocolConnectionImpl.java 2005-04-11 05:07:38.000000000 +0200 @@ -59,6 +59,9 @@ public synchronized PGNotification[] getNotifications() { + try { + executor.processNotifies(); + } catch (SQLException e) {}; PGNotification[] array = (PGNotification[])notifications.toArray(new PGNotification[notifications.size()]); notifications.clear(); return array; diff -urb postgresql-jdbc-8.0-310.src-vanilla/org/postgresql/core/v3/QueryExecutorImpl.java postgresql-jdbc-8.0-310.src/org/postgresql/core/v3/QueryExecutorImpl.java --- postgresql-jdbc-8.0-310.src-vanilla/org/postgresql/core/v3/QueryExecutorImpl.java 2005-02-01 08:27:54.000000000 +0100 +++ postgresql-jdbc-8.0-310.src/org/postgresql/core/v3/QueryExecutorImpl.java 2005-04-11 05:42:56.000000000 +0200 @@ -524,6 +524,27 @@ pgStream.flush(); } + public synchronized void processNotifies() throws SQLException { + try { + while (protoConnection.getTransactionState() == ProtocolConnection.TRANSACTION_IDLE && pgStream.getSocket().getInputStream().available()>0) { + int c = pgStream.ReceiveChar(); + switch (c) { + case 'A': // Asynchronous Notify + receiveAsyncNotify(); + break; + case 'N': // Notice Response (warnings / info) + SQLWarning warning = receiveNoticeResponse(); + protoConnection.addWarning(warning); + break; + default: + throw new PSQLException(GT.tr("Unknown Response Type {0}.", new Character((char) c)), PSQLState.CONNECTION_FAILURE); + } + } + } catch (IOException ioe) { + throw new PSQLException(GT.tr("An I/O error occured while sending to the backend."), PSQLState.CONNECTION_FAILURE, ioe); + } + } + private byte[] receiveFastpathResult() throws IOException, SQLException { boolean endQuery = false; SQLException error = null;