postgres.git / summary / log / commit / refs

commit    ef9706bbc8ce917a366e4640df8c603c9605817a
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Mon Jan 24 17:09:46 2022 +0000

    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


src/backend/replication/repl_scanner.l | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backend/replication/repl_scanner.l b/src/backend/replication/repl_scanner.l index dcc3c3fc515..02d025cd146 100644 --- a/src/backend/replication/repl_scanner.l +++ b/src/backend/replication/repl_scanner.l @@ -245,6 +245,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 [parent: 1042de69dbb6]