[libpostgresql-jdbc-java] 07/11: The V2 protocol wasn't correctly handling EmptyQuery messages. It expected a four byte message length after the EmptyQuery message, but there is only a single null byte sent by the backend.

Emmanuel Bourg ebourg-guest at moszumanska.debian.org
Mon Jan 9 10:19:19 UTC 2017


This is an automated email from the git hooks/post-receive script.

ebourg-guest pushed a commit to tag REL8_0_315
in repository libpostgresql-jdbc-java.

commit c7f5665374658fc09cb6aba5b95fc11e18535ea8
Author: Kris Jurka <books at ejurka.com>
Date:   Thu Dec 15 23:29:39 2005 +0000

    The V2 protocol wasn't correctly handling EmptyQuery messages.  It
    expected a four byte message length after the EmptyQuery message, but
    there is only a single null byte sent by the backend.
---
 org/postgresql/core/v2/QueryExecutorImpl.java |  7 ++++---
 org/postgresql/test/jdbc2/StatementTest.java  | 10 +++++++++-
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/org/postgresql/core/v2/QueryExecutorImpl.java b/org/postgresql/core/v2/QueryExecutorImpl.java
index 95ad0ca..3f59793 100644
--- a/org/postgresql/core/v2/QueryExecutorImpl.java
+++ b/org/postgresql/core/v2/QueryExecutorImpl.java
@@ -4,7 +4,7 @@
 * Copyright (c) 2004, Open Cloud Limited.
 *
 * IDENTIFICATION
-*   $PostgreSQL: pgjdbc/org/postgresql/core/v2/QueryExecutorImpl.java,v 1.10.2.1 2005/02/10 19:52:45 jurka Exp $
+*   $PostgreSQL: pgjdbc/org/postgresql/core/v2/QueryExecutorImpl.java,v 1.10.2.2 2005/02/15 08:55:50 jurka Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -443,8 +443,9 @@ public class QueryExecutorImpl implements QueryExecutor {
             case 'I':  // Empty Query
                 if (Driver.logDebug)
                     Driver.debug(" <=BE EmptyQuery");
-                /* discard */
-                pgStream.ReceiveIntegerR(4);
+                c = pgStream.ReceiveChar();
+                if (c != 0)
+                    throw new IOException("Expected \\0 after EmptyQuery, got: " + c);
                 break;
 
             case 'N':  // Error Notification
diff --git a/org/postgresql/test/jdbc2/StatementTest.java b/org/postgresql/test/jdbc2/StatementTest.java
index d033462..79c0f87 100644
--- a/org/postgresql/test/jdbc2/StatementTest.java
+++ b/org/postgresql/test/jdbc2/StatementTest.java
@@ -3,7 +3,7 @@
 * Copyright (c) 2004-2005, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
-*   $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/StatementTest.java,v 1.15.2.1 2005/08/12 18:22:31 jurka Exp $
+*   $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/StatementTest.java,v 1.15.2.2 2005/11/05 09:27:56 jurka Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -94,6 +94,14 @@ public class StatementTest extends TestCase
         stmt.close();
     }
 
+    public void testEmptyQuery() throws SQLException
+    {
+        Statement stmt = con.createStatement();
+        stmt.execute("");
+        assertNull(stmt.getResultSet());
+        assertTrue(!stmt.getMoreResults());
+    }
+
     public void testUpdateCount() throws SQLException
     {
         Statement stmt = con.createStatement();

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git



More information about the pkg-java-commits mailing list