diff --git a/src/interfaces/jdbc/org/postgresql/Connection.java b/src/interfaces/jdbc/org/postgresql/Connection.java
index 4bdf684a60815f63404f71231e0657e4a1815e55..af507303ddf2144139d54a20e324928380352cf1 100644
--- a/src/interfaces/jdbc/org/postgresql/Connection.java
+++ b/src/interfaces/jdbc/org/postgresql/Connection.java
@@ -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':
diff --git a/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java b/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
index aad95f1e4b7fc1f6a4848911310d5ef04cbf93d9..4bac6413db4b1839f87fa233c74ae4d8e53b9326 100644
--- a/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
+++ b/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
@@ -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);
 		}