On Thu, Apr 22, 2021 at 04:04:18PM -0400, Jeff Janes wrote:
> This commit break line continuation prompts for unbalanced parentheses in
> the psql binary.  Skimming through this thread, I don't see that this is
> intentional or has been noticed before.
> 
> with psql -X
> 
> Before:
> 
> jjanes=# asdf (
> jjanes(#
> 
> Now:
> 
> jjanes=# asdf (
> jjanes-#
> 
> I've looked through the parts of the commit that change psql, but didn't
> see an obvious culprit.

I haven't studied it in detail, but it probably needs something like this.

diff --git a/src/fe_utils/psqlscan.l b/src/fe_utils/psqlscan.l
index 991b7de0b5..0fab48a382 100644
--- a/src/fe_utils/psqlscan.l
+++ b/src/fe_utils/psqlscan.l
@@ -1098,23 +1098,23 @@ psql_scan(PsqlScanState state,
        {
                case LEXRES_EOL:                /* end of input */
                        switch (state->start_state)
                        {
                                case INITIAL:
                                case xqs:               /* we treat this like 
INITIAL */
                                        if (state->paren_depth > 0)
                                        {
                                                result = PSCAN_INCOMPLETE;
                                                *prompt = PROMPT_PAREN;
                                        }
-                                       if (state->begin_depth > 0)
+                                       else if (state->begin_depth > 0)
                                        {
                                                result = PSCAN_INCOMPLETE;
                                                *prompt = PROMPT_CONTINUE;
                                        }
                                        else if (query_buf->len > 0)
                                        {
                                                result = PSCAN_EOL;
                                                *prompt = PROMPT_CONTINUE;
                                        }
                                        else
                                        {


Reply via email to