diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2022-01-24 12:09:46 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2022-01-24 12:09:46 -0500 |
commit | 3c06ec6d1412a6ebf05ee0566b5c05969f0b541f (patch) | |
tree | 484aa12cfbc481fa54705c5687ddfee258e69c09 /src | |
parent | f032f63e727c1ab07603b3d1cd88d50f850d5738 (diff) | |
download | postgresql-3c06ec6d1412a6ebf05ee0566b5c05969f0b541f.tar.gz postgresql-3c06ec6d1412a6ebf05ee0566b5c05969f0b541f.zip |
Remember to reset yy_start state when firing up repl_scanner.l.
Without this, we get odd behavior when the previous cycle of
lexing exited in a non-default exclusive state. Every other
copy of this code is aware that it has to do BEGIN(INITIAL),
but repl_scanner.l did not get that memo.
The real-world impact of this is probably limited, since most
replication clients would abandon their connection after getting
a syntax error. Still, it's a bug.
This mistake is old, so back-patch to all supported branches.
Discussion: https://postgr.es/m/1874781.1643035952@sss.pgh.pa.us
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/replication/repl_scanner.l | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/replication/repl_scanner.l b/src/backend/replication/repl_scanner.l index c80f158095b..81ac41e9d45 100644 --- a/src/backend/replication/repl_scanner.l +++ b/src/backend/replication/repl_scanner.l @@ -247,6 +247,9 @@ replication_scanner_init(const char *str) memcpy(scanbuf, str, slen); scanbuf[slen] = scanbuf[slen + 1] = YY_END_OF_BUFFER_CHAR; scanbufhandle = yy_scan_buffer(scanbuf, slen + 2); + + /* Make sure we start in proper state */ + BEGIN(INITIAL); } void |