From 5fe32fea5d4a21e0e6ce1897896788e5d5982090 Mon Sep 17 00:00:00 2001 From: Haibin Xie Date: Thu, 8 Nov 2018 19:20:17 +0800 Subject: [PATCH] [parser] parser: fix select field text (#30) --- parser/parser.go | 2 +- parser/parser.y | 2 +- parser/parser_test.go | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/parser/parser.go b/parser/parser.go index 806c5c3bc78a0..1d6aa4b7fc16a 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -9693,7 +9693,7 @@ yynewstate: } lastField := st.Fields.Fields[len(st.Fields.Fields)-1] if lastField.Expr != nil && lastField.AsName.O == "" { - lastEnd := parser.endOffset(&yyS[yypt-4]) + lastEnd := parser.endOffset(&yyS[yypt-5]) lastField.SetText(parser.src[lastField.Offset:lastEnd]) } if yyS[yypt-3].item != nil { diff --git a/parser/parser.y b/parser/parser.y index 5fc6f6b3986de..b0a1f01590cd1 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -4378,7 +4378,7 @@ SelectStmtFromTable: } lastField := st.Fields.Fields[len(st.Fields.Fields)-1] if lastField.Expr != nil && lastField.AsName.O == "" { - lastEnd := parser.endOffset(&yyS[yypt-4]) + lastEnd := parser.endOffset(&yyS[yypt-5]) lastField.SetText(parser.src[lastField.Offset:lastEnd]) } if $4 != nil { diff --git a/parser/parser_test.go b/parser/parser_test.go index e8d4a55be4859..cc3f41bc8b48f 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -2523,3 +2523,11 @@ func (s *testParserSuite) TestWindowFunctions(c *C) { s.enableWindowFunc = true s.RunTest(c, table) } + +func (s *testParserSuite) TestFieldText(c *C) { + parser := New() + stmts, err := parser.Parse("select a from t", "", "") + c.Assert(err, IsNil) + tmp := stmts[0].(*ast.SelectStmt) + c.Assert(tmp.Fields.Fields[0].Text(), Equals, "a") +}