@@ -19,8 +19,9 @@ use crate::logical_plan::producer::{to_substrait_type, SubstraitProducer};
19
19
use crate :: variation_const:: {
20
20
DATE_32_TYPE_VARIATION_REF , DECIMAL_128_TYPE_VARIATION_REF ,
21
21
DEFAULT_CONTAINER_TYPE_VARIATION_REF , DEFAULT_TYPE_VARIATION_REF ,
22
- LARGE_CONTAINER_TYPE_VARIATION_REF , TIME_64_TYPE_VARIATION_REF ,
23
- UNSIGNED_INTEGER_TYPE_VARIATION_REF , VIEW_CONTAINER_TYPE_VARIATION_REF ,
22
+ LARGE_CONTAINER_TYPE_VARIATION_REF , TIME_32_TYPE_VARIATION_REF ,
23
+ TIME_64_TYPE_VARIATION_REF , UNSIGNED_INTEGER_TYPE_VARIATION_REF ,
24
+ VIEW_CONTAINER_TYPE_VARIATION_REF ,
24
25
} ;
25
26
use datafusion:: arrow:: array:: { Array , GenericListArray , OffsetSizeTrait } ;
26
27
use datafusion:: arrow:: temporal_conversions:: NANOSECONDS ;
@@ -280,6 +281,20 @@ pub(crate) fn to_substrait_literal(
280
281
} ;
281
282
( map, DEFAULT_CONTAINER_TYPE_VARIATION_REF )
282
283
}
284
+ ScalarValue :: Time32Second ( Some ( t) ) => (
285
+ LiteralType :: PrecisionTime ( PrecisionTime {
286
+ precision : 0 ,
287
+ value : * t as i64 ,
288
+ } ) ,
289
+ TIME_32_TYPE_VARIATION_REF ,
290
+ ) ,
291
+ ScalarValue :: Time32Millisecond ( Some ( t) ) => (
292
+ LiteralType :: PrecisionTime ( PrecisionTime {
293
+ precision : 3 ,
294
+ value : * t as i64 ,
295
+ } ) ,
296
+ TIME_32_TYPE_VARIATION_REF ,
297
+ ) ,
283
298
ScalarValue :: Time64Microsecond ( Some ( t) ) => (
284
299
LiteralType :: PrecisionTime ( PrecisionTime {
285
300
precision : 6 ,
@@ -412,6 +427,12 @@ mod tests {
412
427
round_trip_literal ( ScalarValue :: TimestampNanosecond ( ts, tz) ) ?;
413
428
}
414
429
430
+ // Test Time32 literals
431
+ round_trip_literal ( ScalarValue :: Time32Second ( Some ( 45296 ) ) ) ?;
432
+ round_trip_literal ( ScalarValue :: Time32Second ( None ) ) ?;
433
+ round_trip_literal ( ScalarValue :: Time32Millisecond ( Some ( 45296789 ) ) ) ?;
434
+ round_trip_literal ( ScalarValue :: Time32Millisecond ( None ) ) ?;
435
+
415
436
// Test Time64 literals
416
437
round_trip_literal ( ScalarValue :: Time64Microsecond ( Some ( 45296789123 ) ) ) ?;
417
438
round_trip_literal ( ScalarValue :: Time64Microsecond ( None ) ) ?;
0 commit comments