1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-02 09:02:37 +03:00

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
This commit is contained in:
Tom Lane
2021-12-01 12:06:31 -05:00
parent 89d1c15d64
commit 83884682f4
5 changed files with 11 additions and 12 deletions

View File

@ -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;
}