From db5435d7fb682741251767aa377bef927e428e19 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Aug 2021 17:04:20 +0800 Subject: [PATCH 1/7] done Signed-off-by: wjhuang2016 --- parser.go | 8 ++++++++ parser.y | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/parser.go b/parser.go index a73b6957d..69e1ad8c1 100644 --- a/parser.go +++ b/parser.go @@ -17315,6 +17315,10 @@ yynewstate: case 1648: { setOprList1 := yyS[yypt-3].item.([]ast.Node) + if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { + endOffset := parser.endOffset(&yyS[yypt-1]) + parser.setLastSelectFieldText(sel, endOffset) + } var setOprList2 []ast.Node var with2 *ast.WithClause switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) { @@ -17335,6 +17339,10 @@ yynewstate: case 1649: { setOprList1 := yyS[yypt-3].item.([]ast.Node) + if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { + endOffset := parser.endOffset(&yyS[yypt-1]) + parser.setLastSelectFieldText(sel, endOffset) + } var setOprList2 []ast.Node var with2 *ast.WithClause switch x := yyS[yypt-1].expr.(*ast.SubqueryExpr).Query.(type) { diff --git a/parser.y b/parser.y index 8c27d16d1..1a3bff7ab 100644 --- a/parser.y +++ b/parser.y @@ -9251,6 +9251,10 @@ SetOprStmtWithLimitOrderBy: SetOprClauseList SetOpr SubSelect OrderBy { setOprList1 := $1.([]ast.Node) + if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { + endOffset := parser.endOffset(&yyS[yypt-1]) + parser.setLastSelectFieldText(sel, endOffset) + } var setOprList2 []ast.Node var with2 *ast.WithClause switch x := $3.(*ast.SubqueryExpr).Query.(type) { @@ -9271,6 +9275,10 @@ SetOprStmtWithLimitOrderBy: | SetOprClauseList SetOpr SubSelect SelectStmtLimit { setOprList1 := $1.([]ast.Node) + if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { + endOffset := parser.endOffset(&yyS[yypt-1]) + parser.setLastSelectFieldText(sel, endOffset) + } var setOprList2 []ast.Node var with2 *ast.WithClause switch x := $3.(*ast.SubqueryExpr).Query.(type) { From 93ae83ebe403c2a5539139a1f6aa418290aac7c6 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Aug 2021 17:08:49 +0800 Subject: [PATCH 2/7] fix Signed-off-by: wjhuang2016 --- parser.y | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parser.y b/parser.y index 1a3bff7ab..dbd73bdf6 100644 --- a/parser.y +++ b/parser.y @@ -9252,7 +9252,7 @@ SetOprStmtWithLimitOrderBy: { setOprList1 := $1.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { - endOffset := parser.endOffset(&yyS[yypt-1]) + endOffset := parser.endOffset(&yyS[yypt-2]) parser.setLastSelectFieldText(sel, endOffset) } var setOprList2 []ast.Node @@ -9276,7 +9276,7 @@ SetOprStmtWithLimitOrderBy: { setOprList1 := $1.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { - endOffset := parser.endOffset(&yyS[yypt-1]) + endOffset := parser.endOffset(&yyS[yypt-2]) parser.setLastSelectFieldText(sel, endOffset) } var setOprList2 []ast.Node From 741deeae24b2049b4b8f28687d58b72cbb689b39 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Aug 2021 17:16:14 +0800 Subject: [PATCH 3/7] test Signed-off-by: wjhuang2016 --- parser.y | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parser.y b/parser.y index dbd73bdf6..912d2b3c5 100644 --- a/parser.y +++ b/parser.y @@ -9252,7 +9252,7 @@ SetOprStmtWithLimitOrderBy: { setOprList1 := $1.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { - endOffset := parser.endOffset(&yyS[yypt-2]) + endOffset := parser.endOffset(&yyS[yypt-3]) parser.setLastSelectFieldText(sel, endOffset) } var setOprList2 []ast.Node From 5a16c15ccddaeb74fe33cbfbdb12a35eb0bc7881 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Aug 2021 17:23:45 +0800 Subject: [PATCH 4/7] test Signed-off-by: wjhuang2016 --- parser.y | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/parser.y b/parser.y index 912d2b3c5..5eeec6cc5 100644 --- a/parser.y +++ b/parser.y @@ -9252,7 +9252,7 @@ SetOprStmtWithLimitOrderBy: { setOprList1 := $1.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { - endOffset := parser.endOffset(&yyS[yypt-3]) + endOffset := parser.endOffset(&yyS[yypt-2]) parser.setLastSelectFieldText(sel, endOffset) } var setOprList2 []ast.Node @@ -9276,7 +9276,7 @@ SetOprStmtWithLimitOrderBy: { setOprList1 := $1.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { - endOffset := parser.endOffset(&yyS[yypt-2]) + endOffset := parser.endOffset(&yyS[yypt-1]) parser.setLastSelectFieldText(sel, endOffset) } var setOprList2 []ast.Node @@ -9299,6 +9299,10 @@ SetOprStmtWithLimitOrderBy: | SetOprClauseList SetOpr SubSelect OrderBy SelectStmtLimit { setOprList1 := $1.([]ast.Node) + if sel, isSelect := setOprList1[len(setOprList1)-3].(*ast.SelectStmt); isSelect && !sel.IsInBraces { + endOffset := parser.endOffset(&yyS[yypt-3]) + parser.setLastSelectFieldText(sel, endOffset) + } var setOprList2 []ast.Node var with2 *ast.WithClause switch x := $3.(*ast.SubqueryExpr).Query.(type) { From 8ae45a6a480fe629df700b52e7d95519f37ab92e Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Aug 2021 17:26:12 +0800 Subject: [PATCH 5/7] fix Signed-off-by: wjhuang2016 --- parser.y | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parser.y b/parser.y index 5eeec6cc5..1c88caec0 100644 --- a/parser.y +++ b/parser.y @@ -9299,7 +9299,7 @@ SetOprStmtWithLimitOrderBy: | SetOprClauseList SetOpr SubSelect OrderBy SelectStmtLimit { setOprList1 := $1.([]ast.Node) - if sel, isSelect := setOprList1[len(setOprList1)-3].(*ast.SelectStmt); isSelect && !sel.IsInBraces { + if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { endOffset := parser.endOffset(&yyS[yypt-3]) parser.setLastSelectFieldText(sel, endOffset) } From d7ddd7b1f3b6f98c77290f948d6277d39516fc64 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Aug 2021 17:38:30 +0800 Subject: [PATCH 6/7] try Signed-off-by: wjhuang2016 --- parser.y | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parser.y b/parser.y index 1c88caec0..2180f8d56 100644 --- a/parser.y +++ b/parser.y @@ -9276,7 +9276,7 @@ SetOprStmtWithLimitOrderBy: { setOprList1 := $1.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { - endOffset := parser.endOffset(&yyS[yypt-1]) + endOffset := parser.endOffset(&yyS[yypt-2]) parser.setLastSelectFieldText(sel, endOffset) } var setOprList2 []ast.Node From 910b92e0c3972930c4c7c98256603dbf5407f292 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Aug 2021 17:41:43 +0800 Subject: [PATCH 7/7] fix Signed-off-by: wjhuang2016 --- parser.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/parser.go b/parser.go index 69e1ad8c1..2fc97f998 100644 --- a/parser.go +++ b/parser.go @@ -17316,7 +17316,7 @@ yynewstate: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { - endOffset := parser.endOffset(&yyS[yypt-1]) + endOffset := parser.endOffset(&yyS[yypt-2]) parser.setLastSelectFieldText(sel, endOffset) } var setOprList2 []ast.Node @@ -17340,7 +17340,7 @@ yynewstate: { setOprList1 := yyS[yypt-3].item.([]ast.Node) if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { - endOffset := parser.endOffset(&yyS[yypt-1]) + endOffset := parser.endOffset(&yyS[yypt-2]) parser.setLastSelectFieldText(sel, endOffset) } var setOprList2 []ast.Node @@ -17363,6 +17363,10 @@ yynewstate: case 1650: { setOprList1 := yyS[yypt-4].item.([]ast.Node) + if sel, isSelect := setOprList1[len(setOprList1)-1].(*ast.SelectStmt); isSelect && !sel.IsInBraces { + endOffset := parser.endOffset(&yyS[yypt-3]) + parser.setLastSelectFieldText(sel, endOffset) + } var setOprList2 []ast.Node var with2 *ast.WithClause switch x := yyS[yypt-2].expr.(*ast.SubqueryExpr).Query.(type) {