@@ -18,6 +18,7 @@ import (
18
18
"gopkg.in/src-d/go-mysql-server.v0/sql/analyzer"
19
19
"gopkg.in/src-d/go-mysql-server.v0/sql/index/pilosa"
20
20
"gopkg.in/src-d/go-mysql-server.v0/sql/parse"
21
+ "gopkg.in/src-d/go-mysql-server.v0/sql/plan"
21
22
"gopkg.in/src-d/go-mysql-server.v0/test"
22
23
23
24
"github.com/stretchr/testify/require"
@@ -1104,14 +1105,14 @@ func TestDescribe(t *testing.T) {
1104
1105
1105
1106
query := `DESCRIBE FORMAT=TREE SELECT * FROM mytable`
1106
1107
expectedSeq := []sql.Row {
1107
- sql .NewRow ("Table(mytable)" ),
1108
+ sql .NewRow ("Table(mytable): Projected " ),
1108
1109
sql .NewRow (" ├─ Column(i, INT64, nullable=false)" ),
1109
1110
sql .NewRow (" └─ Column(s, TEXT, nullable=false)" ),
1110
1111
}
1111
1112
1112
1113
expectedParallel := []sql.Row {
1113
1114
{"Exchange(parallelism=2)" },
1114
- {" └─ Table(mytable)" },
1115
+ {" └─ Table(mytable): Projected " },
1115
1116
{" ├─ Column(i, INT64, nullable=false)" },
1116
1117
{" └─ Column(s, TEXT, nullable=false)" },
1117
1118
}
@@ -1999,6 +2000,28 @@ func TestLocks(t *testing.T) {
1999
2000
require .Equal (1 , t2 .unlocks )
2000
2001
}
2001
2002
2003
+ func TestDescribeNoPruneColumns (t * testing.T ) {
2004
+ require := require .New (t )
2005
+ ctx := newCtx ()
2006
+ e := newEngine (t )
2007
+ query := `DESCRIBE FORMAT=TREE SELECT SUBSTRING(s, 1, 1) as foo, s, i FROM mytable WHERE foo = 'f'`
2008
+ parsed , err := parse .Parse (ctx , query )
2009
+ require .NoError (err )
2010
+ result , err := e .Analyzer .Analyze (ctx , parsed )
2011
+ require .NoError (err )
2012
+
2013
+ qp , ok := result .(* plan.QueryProcess )
2014
+ require .True (ok )
2015
+
2016
+ d , ok := qp .Child .(* plan.DescribeQuery )
2017
+ require .True (ok )
2018
+
2019
+ p , ok := d .Child .(* plan.Project )
2020
+ require .True (ok )
2021
+
2022
+ require .Len (p .Schema (), 3 )
2023
+ }
2024
+
2002
2025
func insertRows (t * testing.T , table sql.Inserter , rows ... sql.Row ) {
2003
2026
t .Helper ()
2004
2027
0 commit comments