fixed cancel query bug introduced by patch
authorDave Cramer <davec@fastcrypt.com>
Tue, 5 Mar 2002 18:01:27 +0000 (18:01 +0000)
committerDave Cramer <davec@fastcrypt.com>
Tue, 5 Mar 2002 18:01:27 +0000 (18:01 +0000)
src/interfaces/jdbc/org/postgresql/Connection.java
src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java

index 4bdf684a60815f63404f71231e0657e4a1815e55..af507303ddf2144139d54a20e324928380352cf1 100644 (file)
@@ -11,7 +11,7 @@ import org.postgresql.util.*;
 import org.postgresql.core.*;
 
 /*
- * $Id: Connection.java,v 1.41 2002/02/26 02:15:54 davec Exp $
+ * $Id: Connection.java,v 1.42 2002/03/05 18:00:36 davec Exp $
  *
  * This abstract class is used by org.postgresql.Driver to open either the JDBC1 or
  * JDBC2 versions of the Connection class.
@@ -315,16 +315,6 @@ public abstract class Connection
        switch (beresp)
        {
            case 'Z':
-
-                              try
-                                 {
-                                    pg_stream.SendChar('Q');
-                                    pg_stream.SendChar(' ');
-                                    pg_stream.SendChar(0);
-                                    pg_stream.flush();
-                                 } catch (IOException e) {
-                                    throw new PSQLException("postgresql.con.ioerror",e);
-                                 }
                break;
            case 'E':
            case 'N':
index aad95f1e4b7fc1f6a4848911310d5ef04cbf93d9..4bac6413db4b1839f87fa233c74ae4d8e53b9326 100644 (file)
@@ -13,7 +13,7 @@ import org.postgresql.util.PSQLException;
  * <p>The lifetime of a QueryExecutor object is from sending the query
  * until the response has been received from the backend.
  *
- * $Id: QueryExecutor.java,v 1.6 2001/11/25 23:26:56 barry Exp $
+ * $Id: QueryExecutor.java,v 1.7 2002/03/05 18:01:27 davec Exp $
  */
 
 public class QueryExecutor
@@ -57,6 +57,7 @@ public class QueryExecutor
 
        int fqp = 0;
        boolean hfr = false;
+       int lastMessage = 0;
 
        synchronized (pg_stream)
        {
@@ -112,11 +113,26 @@ public class QueryExecutor
                        receiveFields();
                        break;
                    case 'Z':        // backend ready for query, ignore for now :-)
+                       if ( lastMessage == 'Z' )
+                                   {
+                            try
+                                        {
+                                               pg_stream.SendChar('Q');
+                                               pg_stream.SendChar(' ');
+                                               pg_stream.SendChar(0);
+                                               pg_stream.flush();
+                                            } catch (IOException e) {
+                                               throw new PSQLException("postgresql.con.ioerror",e);
+                                            }
+                                            fqp++;
+                                       }
+                   
                        break;
                    default:
                        throw new PSQLException("postgresql.con.type",
                                                new Character((char) c));
                }
+               lastMessage = c;
            }
            return connection.getResultSet(connection, statement, fields, tuples, status, update_count, insert_oid, binaryCursor);
        }