@@ -46,13 +46,50 @@ use crate::storages::fuse::table_test_fixture::TestFixture;
46
46
47
47
#[ test]
48
48
fn test_ft_stats_block_stats ( ) -> common_exception:: Result < ( ) > {
49
- let schema = DataSchemaRefExt :: create ( vec ! [ DataField :: new( "a" , i32 :: to_data_type( ) ) ] ) ;
50
- let block = DataBlock :: create ( schema, vec ! [ Series :: from_data( vec![ 1 , 2 , 3 ] ) ] ) ;
49
+ let schema = DataSchemaRefExt :: create ( vec ! [
50
+ DataField :: new( "a" , i32 :: to_data_type( ) ) ,
51
+ DataField :: new( "b" , Vu8 :: to_data_type( ) ) ,
52
+ ] ) ;
53
+ let block = DataBlock :: create ( schema, vec ! [
54
+ Series :: from_data( vec![ 1 , 2 , 3 ] ) ,
55
+ Series :: from_data( vec![ "aa" , "aa" , "bb" ] ) ,
56
+ ] ) ;
51
57
let r = gen_columns_statistics ( & block, None ) ?;
52
- assert_eq ! ( 1 , r. len( ) ) ;
58
+ assert_eq ! ( 2 , r. len( ) ) ;
59
+ let col_stats = r. get ( & 0 ) . unwrap ( ) ;
60
+ assert_eq ! ( col_stats. min, DataValue :: Int64 ( 1 ) ) ;
61
+ assert_eq ! ( col_stats. max, DataValue :: Int64 ( 3 ) ) ;
62
+ assert_eq ! ( col_stats. distinct_of_values, Some ( 3 ) ) ;
63
+ let col_stats = r. get ( & 1 ) . unwrap ( ) ;
64
+ assert_eq ! ( col_stats. min, DataValue :: String ( b"aa" . to_vec( ) ) ) ;
65
+ assert_eq ! ( col_stats. max, DataValue :: String ( b"bb" . to_vec( ) ) ) ;
66
+ assert_eq ! ( col_stats. distinct_of_values, Some ( 2 ) ) ;
67
+ Ok ( ( ) )
68
+ }
69
+
70
+ #[ test]
71
+ fn test_ft_stats_block_stats_with_column_distinct_count ( ) -> common_exception:: Result < ( ) > {
72
+ let schema = DataSchemaRefExt :: create ( vec ! [
73
+ DataField :: new( "a" , i32 :: to_data_type( ) ) ,
74
+ DataField :: new( "b" , Vu8 :: to_data_type( ) ) ,
75
+ ] ) ;
76
+ let block = DataBlock :: create ( schema, vec ! [
77
+ Series :: from_data( vec![ 1 , 2 , 3 ] ) ,
78
+ Series :: from_data( vec![ "aa" , "aa" , "bb" ] ) ,
79
+ ] ) ;
80
+ let mut column_distinct_count = HashMap :: new ( ) ;
81
+ column_distinct_count. insert ( 0 , 3 ) ;
82
+ column_distinct_count. insert ( 1 , 2 ) ;
83
+ let r = gen_columns_statistics ( & block, Some ( column_distinct_count) ) ?;
84
+ assert_eq ! ( 2 , r. len( ) ) ;
53
85
let col_stats = r. get ( & 0 ) . unwrap ( ) ;
54
86
assert_eq ! ( col_stats. min, DataValue :: Int64 ( 1 ) ) ;
55
87
assert_eq ! ( col_stats. max, DataValue :: Int64 ( 3 ) ) ;
88
+ assert_eq ! ( col_stats. distinct_of_values, Some ( 3 ) ) ;
89
+ let col_stats = r. get ( & 1 ) . unwrap ( ) ;
90
+ assert_eq ! ( col_stats. min, DataValue :: String ( b"aa" . to_vec( ) ) ) ;
91
+ assert_eq ! ( col_stats. max, DataValue :: String ( b"bb" . to_vec( ) ) ) ;
92
+ assert_eq ! ( col_stats. distinct_of_values, Some ( 2 ) ) ;
56
93
Ok ( ( ) )
57
94
}
58
95
0 commit comments