]> granicus.if.org Git - postgresql/commitdiff
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);
                }