Fixed deficiency where an unterminated (no semicolon) command at end of
authorPeter Eisentraut
Mon, 13 Mar 2000 13:46:32 +0000 (13:46 +0000)
committerPeter Eisentraut
Mon, 13 Mar 2000 13:46:32 +0000 (13:46 +0000)
psql script would be dropped silently.

src/bin/psql/mainloop.c

index 4bd4608e5cecf37c5b6b99a485311348f0912f3a..4f71f3e410526fccb728ce0a5d8ce4b52a1a0b1f 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.24 2000/03/05 13:30:19 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.25 2000/03/13 13:46:32 petere Exp $
  */
 #include "postgres.h"
 #include "mainloop.h"
@@ -61,7 +61,7 @@ MainLoop(FILE *source)
    bool        prev_cmd_interactive;
 
     unsigned int prev_lineno;
-   bool        die_on_error;
+   volatile bool die_on_error = false;
 
 
    /* Save old settings */
@@ -395,6 +395,7 @@ MainLoop(FILE *source)
                        appendPQExpBufferChar(query_buf, '\n');
                    /* append the line to the query buffer */
                    appendPQExpBufferStr(query_buf, line + query_start);
+                    appendPQExpBufferChar(query_buf, ';');
                }
 
                /* execute query */
@@ -515,8 +516,21 @@ MainLoop(FILE *source)
            successResult = EXIT_BADCONN;
            break;
        }
-   } /* while !endofprogram */
-
+   } /* while !endoffile/session */
+
+    /*
+     * Process query at the end of file without a semicolon
+     */
+    if (query_buf->len > 0 && !pset.cur_cmd_interactive)
+    {
+        success = SendQuery(query_buf->data);
+
+        if (!success && die_on_error)
+            successResult = EXIT_USER;
+        else if (pset.db == NULL)
+            successResult = EXIT_BADCONN;
+    }
+        
    destroyPQExpBuffer(query_buf);
    destroyPQExpBuffer(previous_buf);