break;
}
- /* Add line to pending history if we didn't execute anything yet */
- if (pset.cur_cmd_interactive && !line_saved_in_history)
- pg_append_history(line, history_buf);
+ /*
+ * Add line to pending history if we didn't do so already. Then, if
+ * the query buffer is still empty, flush out any unsent history
+ * entry. This means that empty lines (containing only whitespace and
+ * perhaps a dash-dash comment) that precede a query will be recorded
+ * as separate history entries, not as part of that query.
+ */
+ if (pset.cur_cmd_interactive)
+ {
+ if (!line_saved_in_history)
+ pg_append_history(line, history_buf);
+ if (query_buf->len == 0)
+ pg_send_history(history_buf);
+ }
psql_scan_finish(scan_state);
free(line);