@@ -39,7 +39,7 @@ async fn describe() -> Result<()> {
39
39
"| describe | id | bool_col | tinyint_col | smallint_col | int_col | bigint_col | float_col | double_col | date_string_col | string_col | timestamp_col | year | month |" ,
40
40
"+------------+-------------------+----------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----------------+------------+-------------------------+--------------------+-------------------+" ,
41
41
"| count | 7300.0 | 7300 | 7300.0 | 7300.0 | 7300.0 | 7300.0 | 7300.0 | 7300.0 | 7300 | 7300 | 7300 | 7300.0 | 7300.0 |" ,
42
- "| null_count | 7300 .0 | 7300 | 7300 .0 | 7300 .0 | 7300 .0 | 7300 .0 | 7300 .0 | 7300 .0 | 7300 | 7300 | 7300 | 7300 .0 | 7300.0 |" ,
42
+ "| null_count | 0 .0 | 0 | 0 .0 | 0 .0 | 0 .0 | 0 .0 | 0 .0 | 0 .0 | 0 | 0 | 0 | 0 .0 | 0.0 |" ,
43
43
"| mean | 3649.5 | null | 4.5 | 4.5 | 4.5 | 45.0 | 4.949999964237213 | 45.45 | null | null | null | 2009.5 | 6.526027397260274 |" ,
44
44
"| std | 2107.472815166704 | null | 2.8724780750809518 | 2.8724780750809518 | 2.8724780750809518 | 28.724780750809533 | 3.1597258182544645 | 29.012028558317645 | null | null | null | 0.5000342500942125 | 3.44808750051728 |" ,
45
45
"| min | 0.0 | null | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 01/01/09 | 0 | 2008-12-31T23:00:00 | 2009.0 | 1.0 |" ,
@@ -69,7 +69,7 @@ async fn describe_boolean_binary() -> Result<()> {
69
69
"| describe | a | b |" ,
70
70
"+------------+------+------+" ,
71
71
"| count | 1 | 1 |" ,
72
- "| null_count | 1 | 1 |" ,
72
+ "| null_count | 0 | 0 |" ,
73
73
"| mean | null | null |" ,
74
74
"| std | null | null |" ,
75
75
"| min | a | null |" ,
@@ -81,6 +81,36 @@ async fn describe_boolean_binary() -> Result<()> {
81
81
Ok ( ( ) )
82
82
}
83
83
84
+ #[ tokio:: test]
85
+ async fn describe_null ( ) -> Result < ( ) > {
86
+ let ctx = parquet_context ( ) . await ;
87
+
88
+ //add test case for only boolean boolean/binary column
89
+ let result = ctx
90
+ . sql ( "select 'a' as a, null as b" )
91
+ . await ?
92
+ . describe ( )
93
+ . await ?
94
+ . collect ( )
95
+ . await ?;
96
+ #[ rustfmt:: skip]
97
+ let expected = [
98
+ "+------------+------+------+" ,
99
+ "| describe | a | b |" ,
100
+ "+------------+------+------+" ,
101
+ "| count | 1 | 0 |" ,
102
+ "| null_count | 0 | 1 |" ,
103
+ "| mean | null | null |" ,
104
+ "| std | null | null |" ,
105
+ "| min | null | null |" ,
106
+ "| max | null | null |" ,
107
+ "| median | null | null |" ,
108
+ "+------------+------+------+"
109
+ ] ;
110
+ assert_batches_eq ! ( expected, & result) ;
111
+ Ok ( ( ) )
112
+ }
113
+
84
114
/// Return a SessionContext with parquet file registered
85
115
async fn parquet_context ( ) -> SessionContext {
86
116
let ctx = SessionContext :: new ( ) ;
0 commit comments