@@ -22,35 +22,45 @@ use arrow::array::Int64Array;
2222use arrow:: datatypes:: { DataType , Field , Schema } ;
2323use datafusion:: datasource:: { provider_as_source, ViewTable } ;
2424use datafusion:: execution:: session_state:: SessionStateBuilder ;
25- use datafusion_common:: { DFSchema , DFSchemaRef , Result , ScalarValue } ;
25+ use datafusion_common:: { Column , DFSchema , DFSchemaRef , Result , ScalarValue , Spans } ;
2626use datafusion_execution:: TaskContext ;
2727use datafusion_expr:: expr:: { AggregateFunction , AggregateFunctionParams } ;
28- use datafusion_expr:: logical_plan:: LogicalPlan ;
28+ use datafusion_expr:: logical_plan:: { LogicalPlan , Values } ;
2929use datafusion_expr:: {
30- col , Aggregate , AggregateUDF , EmptyRelation , Expr , LogicalPlanBuilder , UNNAMED_TABLE ,
30+ Aggregate , AggregateUDF , EmptyRelation , Expr , LogicalPlanBuilder , UNNAMED_TABLE ,
3131} ;
3232use datafusion_functions_aggregate:: count:: Count ;
3333use datafusion_physical_plan:: collect;
3434use insta:: assert_snapshot;
35+ use std:: collections:: HashMap ;
3536use std:: fmt:: Debug ;
3637use std:: ops:: Deref ;
3738use std:: sync:: Arc ;
3839
3940#[ tokio:: test]
4041async fn count_only_nulls ( ) -> Result < ( ) > {
4142 // Input: VALUES (NULL), (NULL), (NULL) AS _(col)
42- let input = LogicalPlanBuilder :: values ( vec ! [
43- vec![ Expr :: Literal ( ScalarValue :: Null , None ) ] ,
44- vec![ Expr :: Literal ( ScalarValue :: Null , None ) ] ,
45- vec![ Expr :: Literal ( ScalarValue :: Null , None ) ] ,
46- ] ) ?
47- . project ( vec ! [ col( "column1" ) . alias( "col" ) ] ) ?
48- . build ( ) ?;
49- let input_col_ref = col ( "col" ) ;
43+ let input_schema = Arc :: new ( DFSchema :: from_unqualified_fields (
44+ vec ! [ Field :: new( "col" , DataType :: Null , true ) ] . into ( ) ,
45+ HashMap :: new ( ) ,
46+ ) ?) ;
47+ let input = Arc :: new ( LogicalPlan :: Values ( Values {
48+ schema : input_schema,
49+ values : vec ! [
50+ vec![ Expr :: Literal ( ScalarValue :: Null , None ) ] ,
51+ vec![ Expr :: Literal ( ScalarValue :: Null , None ) ] ,
52+ vec![ Expr :: Literal ( ScalarValue :: Null , None ) ] ,
53+ ] ,
54+ } ) ) ;
55+ let input_col_ref = Expr :: Column ( Column {
56+ relation : None ,
57+ name : "col" . to_string ( ) ,
58+ spans : Spans :: new ( ) ,
59+ } ) ;
5060
5161 // Aggregation: count(col) AS count
5262 let aggregate = LogicalPlan :: Aggregate ( Aggregate :: try_new (
53- input. into ( ) ,
63+ input,
5464 vec ! [ ] ,
5565 vec ! [ Expr :: AggregateFunction ( AggregateFunction {
5666 func: Arc :: new( AggregateUDF :: new_from_impl( Count :: new( ) ) ) ,
0 commit comments