@@ -29,14 +29,12 @@ use std::sync::Arc;
2929
3030/// row_number expression
3131#[ derive( Debug ) ]
32- pub struct RowNumber {
33- name : String ,
34- }
32+ pub struct RowNumber { }
3533
3634impl RowNumber {
3735 /// Create a new ROW_NUMBER function
38- pub fn new ( name : String ) -> Self {
39- Self { name }
36+ pub fn new ( ) -> Self {
37+ Self { }
4038 }
4139}
4240
@@ -49,15 +47,15 @@ impl BuiltInWindowFunctionExpr for RowNumber {
4947 fn field ( & self ) -> Result < Field > {
5048 let nullable = false ;
5149 let data_type = DataType :: UInt64 ;
52- Ok ( Field :: new ( & self . name , data_type, nullable) )
50+ Ok ( Field :: new ( & self . name ( ) , data_type, nullable) )
5351 }
5452
5553 fn expressions ( & self ) -> Vec < Arc < dyn PhysicalExpr > > {
5654 vec ! [ ]
5755 }
5856
5957 fn name ( & self ) -> & str {
60- & self . name
58+ "row_number"
6159 }
6260
6361 fn create_accumulator ( & self ) -> Result < Box < dyn WindowAccumulator > > {
@@ -71,7 +69,7 @@ struct RowNumberAccumulator {
7169}
7270
7371impl RowNumberAccumulator {
74- /// new count accumulator
72+ /// new row_number accumulator
7573 pub fn new ( ) -> Self {
7674 // row number is 1 based
7775 Self { row_number : 1 }
@@ -91,6 +89,8 @@ impl WindowAccumulator for RowNumberAccumulator {
9189 _values : & [ ArrayRef ] ,
9290 ) -> Result < Option < ArrayRef > > {
9391 let new_row_number = self . row_number + ( num_rows as u64 ) ;
92+ // TODO: probably would be nice to have a (optimized) kernel for this at some point to
93+ // generate an array like this.
9494 let result = UInt64Array :: from_iter_values ( self . row_number ..new_row_number) ;
9595 self . row_number = new_row_number;
9696 Ok ( Some ( Arc :: new ( result) ) )
@@ -116,7 +116,7 @@ mod tests {
116116 let schema = Schema :: new ( vec ! [ Field :: new( "arr" , DataType :: Boolean , false ) ] ) ;
117117 let batch = RecordBatch :: try_new ( Arc :: new ( schema) , vec ! [ arr] ) ?;
118118
119- let row_number = Arc :: new ( RowNumber :: new ( "row_number" . to_owned ( ) ) ) ;
119+ let row_number = Arc :: new ( RowNumber :: new ( ) ) ;
120120
121121 let mut acc = row_number. create_accumulator ( ) ?;
122122 let expr = row_number. expressions ( ) ;
@@ -147,7 +147,7 @@ mod tests {
147147 let schema = Schema :: new ( vec ! [ Field :: new( "arr" , DataType :: Boolean , false ) ] ) ;
148148 let batch = RecordBatch :: try_new ( Arc :: new ( schema) , vec ! [ arr] ) ?;
149149
150- let row_number = Arc :: new ( RowNumber :: new ( "row_number" . to_owned ( ) ) ) ;
150+ let row_number = Arc :: new ( RowNumber :: new ( ) ) ;
151151
152152 let mut acc = row_number. create_accumulator ( ) ?;
153153 let expr = row_number. expressions ( ) ;
0 commit comments