@@ -116,7 +116,7 @@ implement_from_tuple!(
116
116
```
117
117
- User-Defined Function: ` features = ["macros"] `
118
118
``` rust
119
- function ! (TestFunction :: test (LogicalType :: Integer , LogicalType :: Integer ) -> LogicalType :: Integer => | v1 : ValueRef , v2 : ValueRef | {
119
+ scala_function ! (TestFunction :: test (LogicalType :: Integer , LogicalType :: Integer ) -> LogicalType :: Integer => | v1 : ValueRef , v2 : ValueRef | {
120
120
let plus_binary_evaluator = EvaluatorFactory :: binary_create (LogicalType :: Integer , BinaryOperator :: Plus )? ;
121
121
let value = plus_binary_evaluator . binary_eval (& v1 , & v2 );
122
122
@@ -125,9 +125,28 @@ function!(TestFunction::test(LogicalType::Integer, LogicalType::Integer) -> Logi
125
125
});
126
126
127
127
let fnck_sql = DataBaseBuilder :: path (" ./data" )
128
- . register_function (TestFunction :: new ())
128
+ . register_scala_function (TestFunction :: new ())
129
129
. build ()? ;
130
130
```
131
+ - User-Defined Table Function: ` features = ["macros"] `
132
+ ``` rust
133
+ table_function! (MyTableFunction :: test_numbers (LogicalType :: Integer ) -> [c1 : LogicalType :: Integer , c2 : LogicalType :: Integer ] => (| v1 : ValueRef | {
134
+ let num = v1 . i32 (). unwrap ();
135
+
136
+ Ok (Box :: new ((0 .. num )
137
+ . into_iter ()
138
+ . map (| i | Ok (Tuple {
139
+ id : None ,
140
+ values : vec! [
141
+ Arc :: new (DataValue :: Int32 (Some (i ))),
142
+ Arc :: new (DataValue :: Int32 (Some (i ))),
143
+ ]
144
+ }))) as Box <dyn Iterator <Item = Result <Tuple , DatabaseError >>>)
145
+ }));
146
+ let fnck_sql = DataBaseBuilder :: path (" ./data" )
147
+ . register_table_function (TestFunction :: new ())
148
+ . build ()? ;
149
+ ```
131
150
- Optimizer
132
151
- RBO
133
152
- CBO based on RBO(Physical Selection)
0 commit comments