From e3585adbb4a1890704171c72d1ecf6b78609fc04 Mon Sep 17 00:00:00 2001 From: hexilee Date: Mon, 21 Sep 2020 11:29:41 +0800 Subject: [PATCH] reset JoinLevel in TableRefsClause.Restore Signed-off-by: hexilee --- ast/dml.go | 5 +++++ ast/dml_test.go | 1 + 2 files changed, 6 insertions(+) diff --git a/ast/dml.go b/ast/dml.go index 1cf1ca68c..c652a5357 100644 --- a/ast/dml.go +++ b/ast/dml.go @@ -615,6 +615,11 @@ type TableRefsClause struct { // Restore implements Node interface. func (n *TableRefsClause) Restore(ctx *format.RestoreCtx) error { + level := ctx.JoinLevel + ctx.JoinLevel = 0 + defer func() { + ctx.JoinLevel = level + }() if err := n.TableRefs.Restore(ctx); err != nil { return errors.Annotate(err, "An error occurred while restore TableRefsClause.TableRefs") } diff --git a/ast/dml_test.go b/ast/dml_test.go index c1d1203a4..a38d1b9b3 100644 --- a/ast/dml_test.go +++ b/ast/dml_test.go @@ -234,6 +234,7 @@ func (ts *testDMLSuite) TestTableRefsClauseRestore(c *C) { {"t", "`t`"}, {"t1 join t2", "`t1` JOIN `t2`"}, {"t1, t2", "(`t1`) JOIN `t2`"}, + {"(select * from (select * from t1) as tmp) as tmp", "(SELECT * FROM (SELECT * FROM `t1`) AS `tmp`) AS `tmp`"}, } extractNodeFunc := func(node Node) Node { return node.(*SelectStmt).From