diff --git a/parser/lexer.go b/parser/lexer.go index 9484c14ad6..3adfb47ffb 100644 --- a/parser/lexer.go +++ b/parser/lexer.go @@ -211,9 +211,11 @@ func (s *Scanner) Lex(v *yySymType) int { case quotedIdentifier: tok = identifier } - if tok == unicode.ReplacementChar && s.r.eof() { - return 0 + + if tok == unicode.ReplacementChar { + return invalid } + return tok } diff --git a/parser/lexer_test.go b/parser/lexer_test.go index 9bcddf7eeb..6da200367c 100644 --- a/parser/lexer_test.go +++ b/parser/lexer_test.go @@ -356,18 +356,18 @@ func (s *testLexerSuite) TestSQLModeANSIQuotes(c *C) { func (s *testLexerSuite) TestIllegal(c *C) { table := []testCaseItem{ - {"'", 0}, - {"'fu", 0}, - {"'\\n", 0}, - {"'\\", 0}, + {"'", invalid}, + {"'fu", invalid}, + {"'\\n", invalid}, + {"'\\", invalid}, {fmt.Sprintf("%c", 0), invalid}, - {"`", 0}, - {`"`, 0}, - {"@`", 0}, - {"@'", 0}, - {`@"`, 0}, - {"@@`", 0}, - {"@@global.`", 0}, + {"`", invalid}, + {`"`, invalid}, + {"@`", invalid}, + {"@'", invalid}, + {`@"`, invalid}, + {"@@`", invalid}, + {"@@global.`", invalid}, } runTest(c, table) }