From 8d879e6b5fb5750aa567522113d82ba20134cedb Mon Sep 17 00:00:00 2001 From: Miguel Molina Date: Mon, 24 Sep 2018 17:41:21 +0200 Subject: [PATCH] sql/analyzer: also check node if it is not wrapped in query process Signed-off-by: Miguel Molina --- sql/analyzer/parallelize.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/sql/analyzer/parallelize.go b/sql/analyzer/parallelize.go index 9cb97caef..126ab6d1e 100644 --- a/sql/analyzer/parallelize.go +++ b/sql/analyzer/parallelize.go @@ -5,17 +5,24 @@ import ( "gopkg.in/src-d/go-mysql-server.v0/sql/plan" ) +func shouldParallelize(node sql.Node) bool { + // Do not try to parallelize index operations. + switch node.(type) { + case *plan.CreateIndex, *plan.DropIndex, *plan.Describe: + return false + default: + return true + } +} + func parallelize(ctx *sql.Context, a *Analyzer, node sql.Node) (sql.Node, error) { if a.Parallelism <= 1 || !node.Resolved() { return node, nil } - if proc, ok := node.(*plan.QueryProcess); ok { - // Do not try to parallelize index operations. - switch proc.Child.(type) { - case *plan.CreateIndex, *plan.DropIndex, *plan.Describe, *plan.DescribeQuery: - return node, nil - } + proc, ok := node.(*plan.QueryProcess) + if (ok && !shouldParallelize(proc.Child)) || !shouldParallelize(node) { + return node, nil } node, err := node.TransformUp(func(node sql.Node) (sql.Node, error) {