diff --git a/src/bin/psql/mainloop.c b/src/bin/psql/mainloop.c
index f85247689b95322ae1b37471e19249dcb0e7564b..e6b8560498221f9623d1e067a5343ff157041e74 100644
--- a/src/bin/psql/mainloop.c
+++ b/src/bin/psql/mainloop.c
@@ -270,11 +270,10 @@ MainLoop(PsqlSettings *pset, FILE *source)
 				free(line);
 				line = new;
                 continue; /* reparse the just substituted */
-            }                
-            
+            }
 
 			/* semicolon? then send query */
-			else if (line[i] == ';' && !was_bslash)
+			else if (line[i] == ';' && !was_bslash && !paren_level)
 			{
                 /* delete the old query buffer from last time around */
                 if (slashCmdStatus == CMD_SEND)