From 83884682f4df96184549b91869a1cf79dafb4f94 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 1 Dec 2021 12:06:31 -0500 Subject: psql: include intra-query "--" comments in what's sent to the server. psql's lexer has historically deleted dash-dash (single-line) comments from what's collected and sent to the server. This is inconsistent with what it does for slash-star comments, and people have complained before that they wish such comments would be captured in the server log. Undoing the decision completely seems like too big a behavioral change, however. In particular, comments on lines preceding the start of a query are generally not thought of as being part of that query. What we can do to improve the situation is to capture comments that are clearly *within* a query, that is after the first non-whitespace, non-comment token but before the query's ending semicolon or backslash command. This is a nearly trivial code change, and it affects only a few regression test results. (It is tempting to try to apply the same rule to slash-star comments. But it's hard to see how to do that without getting strange history behavior for comments that cross lines, especially if the user then starts a new query on the same line as the star-slash. In view of the lack of complaints, let's leave that case alone.) Discussion: https://postgr.es/m/CAJcOf-cAdMVr7azeYR7nWKsNp7qhORzc84rV6d7m7knG5Hrtsw@mail.gmail.com --- src/fe_utils/psqlscan.l | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/fe_utils') diff --git a/src/fe_utils/psqlscan.l b/src/fe_utils/psqlscan.l index b0fd4394ec..db8a8dfaf2 100644 --- a/src/fe_utils/psqlscan.l +++ b/src/fe_utils/psqlscan.l @@ -378,12 +378,11 @@ other . /* * Note that the whitespace rule includes both true * whitespace and single-line ("--" style) comments. - * We suppress whitespace at the start of the query - * buffer. We also suppress all single-line comments, - * which is pretty dubious but is the historical - * behavior. + * We suppress whitespace until we have collected some + * non-whitespace data. (This interacts with some + * decisions in MainLoop(); see there for details.) */ - if (!(output_buf->len == 0 || yytext[0] == '-')) + if (output_buf->len > 0) ECHO; } -- cgit v1.2.1