@@ -215,8 +215,7 @@ pub enum TypeSignatureClass {
215215 Interval ,
216216 Duration ,
217217 Native ( LogicalTypeRef ) ,
218- // TODO:
219- // Numeric
218+ Numeric ,
220219 Integer ,
221220}
222221
@@ -252,6 +251,13 @@ impl TypeSignatureClass {
252251 TypeSignatureClass :: Duration => {
253252 vec ! [ DataType :: Duration ( TimeUnit :: Nanosecond ) ]
254253 }
254+ TypeSignatureClass :: Numeric => {
255+ vec ! [
256+ DataType :: Int64 ,
257+ DataType :: Float64 ,
258+ DataType :: Decimal256 ( 3 , -2 ) ,
259+ ]
260+ }
255261 TypeSignatureClass :: Integer => {
256262 vec ! [ DataType :: Int64 ]
257263 }
@@ -273,6 +279,7 @@ impl TypeSignatureClass {
273279 TypeSignatureClass :: Time if logical_type. is_time ( ) => true ,
274280 TypeSignatureClass :: Interval if logical_type. is_interval ( ) => true ,
275281 TypeSignatureClass :: Duration if logical_type. is_duration ( ) => true ,
282+ TypeSignatureClass :: Numeric if logical_type. is_numeric ( ) => true ,
276283 TypeSignatureClass :: Integer if logical_type. is_integer ( ) => true ,
277284 _ => false ,
278285 }
@@ -301,6 +308,9 @@ impl TypeSignatureClass {
301308 TypeSignatureClass :: Duration if native_type. is_duration ( ) => {
302309 Ok ( origin_type. to_owned ( ) )
303310 }
311+ TypeSignatureClass :: Numeric if native_type. is_numeric ( ) => {
312+ Ok ( origin_type. to_owned ( ) )
313+ }
304314 TypeSignatureClass :: Integer if native_type. is_integer ( ) => {
305315 Ok ( origin_type. to_owned ( ) )
306316 }
0 commit comments