diff --git a/src/bin/psql/psqlscan.l b/src/bin/psql/psqlscan.l index dfde8db19be..5fefa475af6 100644 --- a/src/bin/psql/psqlscan.l +++ b/src/bin/psql/psqlscan.l @@ -722,6 +722,23 @@ other . escape_variable(true); } + /* + * These rules just avoid the need for scanner backup if one of the + * two rules above fails to match completely. + */ + +:'[A-Za-z0-9_]* { + /* Throw back everything but the colon */ + yyless(1); + ECHO; + } + +:\"[A-Za-z0-9_]* { + /* Throw back everything but the colon */ + yyless(1); + ECHO; + } + /* * Back to backend-compatible rules. */ @@ -912,7 +929,7 @@ other . } } -:[A-Za-z0-9_]* { +:[A-Za-z0-9_]+ { /* Possible psql variable substitution */ if (option_type == OT_VERBATIM) ECHO; @@ -959,6 +976,20 @@ other . } } +:'[A-Za-z0-9_]* { + /* Throw back everything but the colon */ + yyless(1); + ECHO; + BEGIN(xslashdefaultarg); + } + +:\"[A-Za-z0-9_]* { + /* Throw back everything but the colon */ + yyless(1); + ECHO; + BEGIN(xslashdefaultarg); + } + "|" { ECHO; if (option_type == OT_FILEPIPE)