File tree Expand file tree Collapse file tree 2 files changed +72
-4
lines changed Expand file tree Collapse file tree 2 files changed +72
-4
lines changed Original file line number Diff line number Diff line change @@ -347,6 +347,7 @@ impl ExprSchemable for Expr {
347347 match self {
348348 Expr :: Column ( c) => Ok ( schema. metadata ( c) ?. clone ( ) ) ,
349349 Expr :: Alias ( Alias { expr, .. } ) => expr. metadata ( schema) ,
350+ Expr :: Cast ( Cast { expr, .. } ) => expr. metadata ( schema) ,
350351 _ => Ok ( HashMap :: new ( ) ) ,
351352 }
352353 }
@@ -681,13 +682,11 @@ mod tests {
681682 . with_data_type ( DataType :: Int32 )
682683 . with_metadata ( meta. clone ( ) ) ;
683684
684- // col and alias should be metadata-preserving
685+ // col, alias, and cast should be metadata-preserving
685686 assert_eq ! ( meta, expr. metadata( & schema) . unwrap( ) ) ;
686687 assert_eq ! ( meta, expr. clone( ) . alias( "bar" ) . metadata( & schema) . unwrap( ) ) ;
687-
688- // cast should drop input metadata since the type has changed
689688 assert_eq ! (
690- HashMap :: new ( ) ,
689+ meta ,
691690 expr. clone( )
692691 . cast_to( & DataType :: Int64 , & schema)
693692 . unwrap( )
Original file line number Diff line number Diff line change @@ -168,5 +168,74 @@ LIMIT 1;
1681682020-09-08T13:42:29.190855123Z
169169
170170
171+
172+ # distinct (aggregate) alone
173+ query P
174+ SELECT
175+ DISTINCT ts as dist
176+ FROM table_with_metadata;
177+ ----
178+ 2020-09-08T13:42:29.190855123
179+
180+ # cast alone
181+ query D
182+ SELECT
183+ ts::DATE as casted
184+ FROM table_with_metadata;
185+ ----
186+ 2020-09-08
187+ 2020-09-08
188+ 2020-09-08
189+
190+ # Regression test: distinct with cast
191+ query D
192+ SELECT DISTINCT (ts::DATE) AS dist
193+ FROM table_with_metadata;
194+ ----
195+ 2020-09-08
196+
197+
198+
199+ # count distinct with group by
200+ query II
201+ SELECT
202+ id AS grp,
203+ COUNT(DISTINCT nonnull_name) as dist
204+ FROM table_with_metadata
205+ GROUP BY grp
206+ order by 1 asc nulls last;
207+ ----
208+ 1 1
209+ 3 1
210+ NULL 1
211+
212+ # count (not distinct) & cast, with group by
213+ query TI
214+ SELECT
215+ CAST(id AS TEXT) AS grp,
216+ COUNT(nonnull_name) as dist
217+ FROM table_with_metadata
218+ GROUP BY grp
219+ order by 1 asc nulls last;
220+ ----
221+ 1 1
222+ 3 1
223+ NULL 1
224+
225+ # Regression test: count distinct & cast, with group by
226+ query TI
227+ SELECT
228+ CAST(id AS TEXT) AS grp,
229+ COUNT(DISTINCT nonnull_name) as dist
230+ FROM table_with_metadata
231+ GROUP BY grp
232+ order by 1 asc nulls last;
233+ ----
234+ 1 1
235+ 3 1
236+ NULL 1
237+
238+
239+
171240statement ok
172241drop table table_with_metadata;
You can’t perform that action at this time.
0 commit comments