@@ -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"
@@ -1112,14 +1113,14 @@ func TestDescribe(t *testing.T) {
1112
1113
1113
1114
query := `DESCRIBE FORMAT=TREE SELECT * FROM mytable`
1114
1115
expectedSeq := []sql.Row {
1115
- sql .NewRow ("Table(mytable)" ),
1116
+ sql .NewRow ("Table(mytable): Projected " ),
1116
1117
sql .NewRow (" ├─ Column(i, INT64, nullable=false)" ),
1117
1118
sql .NewRow (" └─ Column(s, TEXT, nullable=false)" ),
1118
1119
}
1119
1120
1120
1121
expectedParallel := []sql.Row {
1121
1122
{"Exchange(parallelism=2)" },
1122
- {" └─ Table(mytable)" },
1123
+ {" └─ Table(mytable): Projected " },
1123
1124
{" ├─ Column(i, INT64, nullable=false)" },
1124
1125
{" └─ Column(s, TEXT, nullable=false)" },
1125
1126
}
@@ -2007,6 +2008,28 @@ func TestLocks(t *testing.T) {
2007
2008
require .Equal (1 , t2 .unlocks )
2008
2009
}
2009
2010
2011
+ func TestDescribeNoPruneColumns (t * testing.T ) {
2012
+ require := require .New (t )
2013
+ ctx := newCtx ()
2014
+ e := newEngine (t )
2015
+ query := `DESCRIBE FORMAT=TREE SELECT SUBSTRING(s, 1, 1) as foo, s, i FROM mytable WHERE foo = 'f'`
2016
+ parsed , err := parse .Parse (ctx , query )
2017
+ require .NoError (err )
2018
+ result , err := e .Analyzer .Analyze (ctx , parsed )
2019
+ require .NoError (err )
2020
+
2021
+ qp , ok := result .(* plan.QueryProcess )
2022
+ require .True (ok )
2023
+
2024
+ d , ok := qp .Child .(* plan.DescribeQuery )
2025
+ require .True (ok )
2026
+
2027
+ p , ok := d .Child .(* plan.Project )
2028
+ require .True (ok )
2029
+
2030
+ require .Len (p .Schema (), 3 )
2031
+ }
2032
+
2010
2033
func insertRows (t * testing.T , table sql.Inserter , rows ... sql.Row ) {
2011
2034
t .Helper ()
2012
2035
0 commit comments