Ensure previous setting of pset.queryFout is restored after a failed
authorTom Lane
Thu, 1 Mar 2001 18:34:29 +0000 (18:34 +0000)
committerTom Lane
Thu, 1 Mar 2001 18:34:29 +0000 (18:34 +0000)
backslash-g command.

src/bin/psql/common.c

index 9d3323a2ac34d5ce50e8d8dcbb9b4580ae3cc601..d8bd3e8d44d604e86260c0cdd2c020fb0e48397c 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.30 2001/02/10 02:31:28 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.31 2001/03/01 18:34:29 tgl Exp $
  */
 #include "postgres_fe.h"
 
@@ -429,34 +429,35 @@ SendQuery(const char *query)
                    FILE       *queryFout_copy = pset.queryFout;
                    bool        queryFoutPipe_copy = pset.queryFoutPipe;
 
-                   pset.queryFout = NULL;      /* so it doesn't get
+                   pset.queryFout = stdout;    /* so it doesn't get
                                                 * closed */
 
                    /* open file/pipe */
                    if (!setQFout(pset.gfname))
                    {
+                       pset.queryFout = queryFout_copy;
+                       pset.queryFoutPipe = queryFoutPipe_copy;
                        success = false;
                        break;
                    }
 
                    printQuery(results, &pset.popt, pset.queryFout);
 
-                   /* close file/pipe */
+                   /* close file/pipe, restore old setting */
                    setQFout(NULL);
 
-                   free(pset.gfname);
-                   pset.gfname = NULL;
-
                    pset.queryFout = queryFout_copy;
                    pset.queryFoutPipe = queryFoutPipe_copy;
 
+                   free(pset.gfname);
+                   pset.gfname = NULL;
+
                    success = true;
-                   break;
                }
                else
                {
-                   success = true;
                    printQuery(results, &pset.popt, pset.queryFout);
+                   success = true;
                }
                break;
            case PGRES_EMPTY_QUERY: