Skip to content

Commit 4e9919a

Browse files
jycorJames Cor
andauthored
fix explain plan on server engine (#2983)
Co-authored-by: James Cor <[email protected]>
1 parent 094c26d commit 4e9919a

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

enginetest/queries/queries.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10260,6 +10260,16 @@ from typestable`,
1026010260
{false},
1026110261
},
1026210262
},
10263+
{
10264+
Query: "explain plan select count(*) from mytable",
10265+
Expected: []sql.Row{
10266+
{"Project"},
10267+
{" ├─ columns: [count(1)]"},
10268+
{" └─ Project"},
10269+
{" ├─ columns: [mytable.COUNT(1) as COUNT(1)]"},
10270+
{" └─ table_count(mytable) as COUNT(1)"},
10271+
},
10272+
},
1026310273
{
1026410274
Query: "explain select 1",
1026510275
SkipServerEngine: true,
@@ -10268,8 +10278,7 @@ from typestable`,
1026810278
},
1026910279
},
1027010280
{
10271-
Query: "explain plan select 1",
10272-
SkipServerEngine: true,
10281+
Query: "explain plan select 1",
1027310282
Expected: []sql.Row{
1027410283
{"Project"},
1027510284
{" ├─ columns: [1]"},
@@ -10278,8 +10287,7 @@ from typestable`,
1027810287
},
1027910288
},
1028010289
{
10281-
Query: "explain format=tree select 1",
10282-
SkipServerEngine: true,
10290+
Query: "explain format=tree select 1",
1028310291
Expected: []sql.Row{
1028410292
{"Project"},
1028510293
{" ├─ columns: [1]"},

enginetest/server_engine.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ func (s *ServerQueryEngine) queryOrExec(ctx *sql.Context, stmt *gosql.Stmt, pars
216216
var err error
217217
switch parsed.(type) {
218218
// TODO: added `FLUSH` stmt here (should be `exec`) because we don't support `FLUSH BINARY LOGS` or `FLUSH ENGINE LOGS`, so nil schema is returned.
219-
case *sqlparser.Select, *sqlparser.SetOp, *sqlparser.Show, *sqlparser.Set, *sqlparser.Call, *sqlparser.Begin, *sqlparser.Use, *sqlparser.Load, *sqlparser.Execute, *sqlparser.Analyze, *sqlparser.Flush:
219+
case *sqlparser.Select, *sqlparser.SetOp, *sqlparser.Show, *sqlparser.Set, *sqlparser.Call, *sqlparser.Begin, *sqlparser.Use, *sqlparser.Load, *sqlparser.Execute, *sqlparser.Analyze, *sqlparser.Flush, *sqlparser.Explain:
220220
var rows *gosql.Rows
221221
if stmt != nil {
222222
rows, err = stmt.Query(args...)

sql/analyzer/analyzer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ func (a *Analyzer) Analyze(ctx *sql.Context, node sql.Node, scope *plan.Scope, q
477477
switch n := node.(type) {
478478
case *plan.DescribeQuery:
479479
child, _, err := a.analyzeWithSelector(ctx, n.Query(), scope, SelectAllBatches, DefaultRuleSelector, qFlags)
480+
qFlags.Unset(sql.QFlagMax1Row) // the rule replaceCountStar can set this incorrectly for queries containing count(*).
480481
return n.WithQuery(child), err
481482
}
482483
node, _, err := a.analyzeWithSelector(ctx, node, scope, SelectAllBatches, DefaultRuleSelector, qFlags)

0 commit comments

Comments
 (0)