Skip to content

Commit 03590c1

Browse files
authored
parser: reset lexer.identifierDot correctly when reusing parsers (#45903) (#45908)
close #45898
1 parent fe7bcf1 commit 03590c1

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

parser/lexer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func (s *Scanner) reset(sql string) {
9898
s.stmtStartPos = 0
9999
s.inBangComment = false
100100
s.lastKeyword = 0
101+
s.identifierDot = false
101102
}
102103

103104
func (s *Scanner) stmtText() string {

parser/parser_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6722,3 +6722,15 @@ func TestNonTransactionalDelete(t *testing.T) {
67226722

67236723
RunTest(t, cases, false)
67246724
}
6725+
6726+
func TestIssue45898(t *testing.T) {
6727+
p := parser.New()
6728+
p.ParseSQL("a.")
6729+
stmts, _, err := p.ParseSQL("select count(1) from t")
6730+
require.NoError(t, err)
6731+
var sb strings.Builder
6732+
restoreCtx := NewRestoreCtx(DefaultRestoreFlags, &sb)
6733+
sb.Reset()
6734+
stmts[0].Restore(restoreCtx)
6735+
require.Equal(t, "SELECT COUNT(1) FROM `t`", sb.String())
6736+
}

0 commit comments

Comments
 (0)