@@ -35,22 +35,27 @@ fn generate_native_keys_attr_batch(
3535 key_gen : impl Fn ( usize ) -> String ,
3636) -> RecordBatch {
3737 let mut keys_arr = StringBuilder :: new ( ) ;
38+ let mut parent_ids = Vec :: new ( ) ;
3839 for i in 0 ..num_rows {
3940 let attr_key = key_gen ( i) ;
4041 keys_arr. append_value ( attr_key) ;
42+ parent_ids. push ( ( i % 10 ) as u16 ) ;
4143 }
4244 let keys_arr = keys_arr. finish ( ) ;
45+ let parent_ids = UInt16Array :: from ( parent_ids) ;
4346
4447 let type_arr = UInt8Array :: from_iter_values ( std:: iter:: repeat_n (
4548 AttributeValueType :: Empty as u8 ,
4649 keys_arr. len ( ) ,
4750 ) ) ;
51+
4852 RecordBatch :: try_new (
4953 Arc :: new ( Schema :: new ( vec ! [
54+ Field :: new( consts:: PARENT_ID , DataType :: UInt16 , false ) . with_plain_encoding( ) ,
5055 Field :: new( consts:: ATTRIBUTE_TYPE , DataType :: UInt8 , false ) ,
5156 Field :: new( consts:: ATTRIBUTE_KEY , DataType :: Utf8 , false ) ,
5257 ] ) ) ,
53- vec ! [ Arc :: new( type_arr) , Arc :: new( keys_arr) ] ,
58+ vec ! [ Arc :: new( parent_ids ) , Arc :: new ( type_arr) , Arc :: new( keys_arr) ] ,
5459 )
5560 . expect ( "expect no error" )
5661}
@@ -62,18 +67,24 @@ fn generate_dict_keys_attribute_batch(
6267) -> RecordBatch {
6368 let mut keys_dict_values_arr = StringBuilder :: new ( ) ;
6469 let mut keys_dict_keys_arr = PrimitiveBuilder :: < UInt16Type > :: new ( ) ;
70+ let mut parent_ids = Vec :: new ( ) ;
6571 for i in 0 ..num_keys {
6672 let attr_key = key_gen ( i) ;
6773 keys_dict_values_arr. append_value ( attr_key) ;
6874 keys_dict_keys_arr. append_value_n ( i as u16 , rows_per_key) ;
75+ for j in 0 ..rows_per_key {
76+ parent_ids. push ( ( ( i * rows_per_key + j) % 10 ) as u16 ) ;
77+ }
6978 }
7079
7180 let keys_arr = DictionaryArray :: new (
7281 keys_dict_keys_arr. finish ( ) ,
7382 Arc :: new ( keys_dict_values_arr. finish ( ) ) ,
7483 ) ;
84+ let parent_ids = UInt16Array :: from ( parent_ids) ;
7585
7686 let schema = Arc :: new ( Schema :: new ( vec ! [
87+ Field :: new( consts:: PARENT_ID , DataType :: UInt16 , false ) . with_plain_encoding( ) ,
7788 Field :: new( consts:: ATTRIBUTE_TYPE , DataType :: UInt8 , false ) ,
7889 Field :: new(
7990 consts:: ATTRIBUTE_KEY ,
@@ -85,8 +96,11 @@ fn generate_dict_keys_attribute_batch(
8596 AttributeValueType :: Empty as u8 ,
8697 keys_arr. len ( ) ,
8798 ) ) ;
88- RecordBatch :: try_new ( schema, vec ! [ Arc :: new( type_arr) , Arc :: new( keys_arr) ] )
89- . expect ( "expect no error" )
99+ RecordBatch :: try_new (
100+ schema,
101+ vec ! [ Arc :: new( parent_ids) , Arc :: new( type_arr) , Arc :: new( keys_arr) ] ,
102+ )
103+ . expect ( "expect no error" )
90104}
91105
92106fn bench_transform_attributes ( c : & mut Criterion ) {
0 commit comments