@@ -18,7 +18,7 @@ use serde::{Deserialize, Serialize};
1818use super :: LogicalType ;
1919
2020lazy_static ! {
21- static ref UNIX_DATETIME : NaiveDateTime = { NaiveDateTime :: from_timestamp_opt( 0 , 0 ) . unwrap( ) } ;
21+ static ref UNIX_DATETIME : NaiveDateTime = NaiveDateTime :: from_timestamp_opt( 0 , 0 ) . unwrap( ) ;
2222}
2323
2424pub const DATE_FMT : & str = "%Y-%m-%d" ;
@@ -329,6 +329,7 @@ impl DataValue {
329329 LogicalType :: Float => DataValue :: Float32 ( None ) ,
330330 LogicalType :: Double => DataValue :: Float64 ( None ) ,
331331 LogicalType :: Varchar ( _) => DataValue :: Utf8 ( None ) ,
332+ LogicalType :: Text => DataValue :: Utf8 ( None ) ,
332333 LogicalType :: Date => DataValue :: Date32 ( None ) ,
333334 LogicalType :: DateTime => DataValue :: Date64 ( None ) ,
334335 LogicalType :: Decimal ( _, _) => DataValue :: Decimal ( None ) ,
@@ -351,6 +352,7 @@ impl DataValue {
351352 LogicalType :: Float => DataValue :: Float32 ( Some ( 0.0 ) ) ,
352353 LogicalType :: Double => DataValue :: Float64 ( Some ( 0.0 ) ) ,
353354 LogicalType :: Varchar ( _) => DataValue :: Utf8 ( Some ( "" . to_string ( ) ) ) ,
355+ LogicalType :: Text => DataValue :: Utf8 ( Some ( "" . to_string ( ) ) ) ,
354356 LogicalType :: Date => DataValue :: Date32 ( Some ( UNIX_DATETIME . num_days_from_ce ( ) ) ) ,
355357 LogicalType :: DateTime => DataValue :: Date64 ( Some ( UNIX_DATETIME . timestamp ( ) ) ) ,
356358 LogicalType :: Decimal ( _, _) => DataValue :: Decimal ( Some ( Decimal :: new ( 0 , 0 ) ) ) ,
@@ -421,6 +423,9 @@ impl DataValue {
421423 LogicalType :: Varchar ( _) => DataValue :: Utf8 (
422424 ( !bytes. is_empty ( ) ) . then ( || String :: from_utf8 ( bytes. to_owned ( ) ) . unwrap ( ) ) ,
423425 ) ,
426+ LogicalType :: Text => DataValue :: Utf8 (
427+ ( !bytes. is_empty ( ) ) . then ( || String :: from_utf8 ( bytes. to_owned ( ) ) . unwrap ( ) ) ,
428+ ) ,
424429 LogicalType :: Date => {
425430 DataValue :: Date32 ( ( !bytes. is_empty ( ) ) . then ( || i32:: decode_fixed ( bytes) ) )
426431 }
@@ -594,6 +599,7 @@ impl DataValue {
594599 LogicalType :: Float => Ok ( DataValue :: Float32 ( None ) ) ,
595600 LogicalType :: Double => Ok ( DataValue :: Float64 ( None ) ) ,
596601 LogicalType :: Varchar ( _) => Ok ( DataValue :: Utf8 ( None ) ) ,
602+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( None ) ) ,
597603 LogicalType :: Date => Ok ( DataValue :: Date32 ( None ) ) ,
598604 LogicalType :: DateTime => Ok ( DataValue :: Date64 ( None ) ) ,
599605 LogicalType :: Decimal ( _, _) => Ok ( DataValue :: Decimal ( None ) ) ,
@@ -612,13 +618,15 @@ impl DataValue {
612618 LogicalType :: Float => Ok ( DataValue :: Float32 ( value. map ( |v| v. into ( ) ) ) ) ,
613619 LogicalType :: Double => Ok ( DataValue :: Float64 ( value. map ( |v| v. into ( ) ) ) ) ,
614620 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
621+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
615622 _ => Err ( TypeError :: CastFail ) ,
616623 } ,
617624 DataValue :: Float32 ( value) => match to {
618625 LogicalType :: SqlNull => Ok ( DataValue :: Null ) ,
619626 LogicalType :: Float => Ok ( DataValue :: Float32 ( value) ) ,
620627 LogicalType :: Double => Ok ( DataValue :: Float64 ( value. map ( |v| v. into ( ) ) ) ) ,
621628 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
629+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
622630 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal (
623631 value
624632 . map ( |v| {
@@ -635,6 +643,7 @@ impl DataValue {
635643 LogicalType :: SqlNull => Ok ( DataValue :: Null ) ,
636644 LogicalType :: Double => Ok ( DataValue :: Float64 ( value) ) ,
637645 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
646+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
638647 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal (
639648 value
640649 . map ( |v| {
@@ -668,6 +677,7 @@ impl DataValue {
668677 LogicalType :: Float => Ok ( DataValue :: Float32 ( value. map ( |v| v. into ( ) ) ) ) ,
669678 LogicalType :: Double => Ok ( DataValue :: Float64 ( value. map ( |v| v. into ( ) ) ) ) ,
670679 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
680+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
671681 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal ( value. map ( |v| {
672682 let mut decimal = Decimal :: from ( v) ;
673683 Self :: decimal_round_i ( option, & mut decimal) ;
@@ -696,6 +706,7 @@ impl DataValue {
696706 LogicalType :: Float => Ok ( DataValue :: Float32 ( value. map ( |v| v. into ( ) ) ) ) ,
697707 LogicalType :: Double => Ok ( DataValue :: Float64 ( value. map ( |v| v. into ( ) ) ) ) ,
698708 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
709+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
699710 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal ( value. map ( |v| {
700711 let mut decimal = Decimal :: from ( v) ;
701712 Self :: decimal_round_i ( option, & mut decimal) ;
@@ -722,6 +733,7 @@ impl DataValue {
722733 LogicalType :: Bigint => Ok ( DataValue :: Int64 ( value. map ( |v| v. into ( ) ) ) ) ,
723734 LogicalType :: Double => Ok ( DataValue :: Float64 ( value. map ( |v| v. into ( ) ) ) ) ,
724735 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
736+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
725737 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal ( value. map ( |v| {
726738 let mut decimal = Decimal :: from ( v) ;
727739 Self :: decimal_round_i ( option, & mut decimal) ;
@@ -746,6 +758,7 @@ impl DataValue {
746758 ) ) ,
747759 LogicalType :: Bigint => Ok ( DataValue :: Int64 ( value. map ( |v| v. into ( ) ) ) ) ,
748760 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
761+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
749762 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal ( value. map ( |v| {
750763 let mut decimal = Decimal :: from ( v) ;
751764 Self :: decimal_round_i ( option, & mut decimal) ;
@@ -766,6 +779,7 @@ impl DataValue {
766779 LogicalType :: Float => Ok ( DataValue :: Float32 ( value. map ( |v| v. into ( ) ) ) ) ,
767780 LogicalType :: Double => Ok ( DataValue :: Float64 ( value. map ( |v| v. into ( ) ) ) ) ,
768781 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
782+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
769783 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal ( value. map ( |v| {
770784 let mut decimal = Decimal :: from ( v) ;
771785 Self :: decimal_round_i ( option, & mut decimal) ;
@@ -784,6 +798,7 @@ impl DataValue {
784798 LogicalType :: Float => Ok ( DataValue :: Float32 ( value. map ( |v| v. into ( ) ) ) ) ,
785799 LogicalType :: Double => Ok ( DataValue :: Float64 ( value. map ( |v| v. into ( ) ) ) ) ,
786800 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
801+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
787802 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal ( value. map ( |v| {
788803 let mut decimal = Decimal :: from ( v) ;
789804 Self :: decimal_round_i ( option, & mut decimal) ;
@@ -799,6 +814,7 @@ impl DataValue {
799814 LogicalType :: UBigint => Ok ( DataValue :: UInt64 ( value. map ( |v| v. into ( ) ) ) ) ,
800815 LogicalType :: Double => Ok ( DataValue :: Float64 ( value. map ( |v| v. into ( ) ) ) ) ,
801816 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
817+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
802818 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal ( value. map ( |v| {
803819 let mut decimal = Decimal :: from ( v) ;
804820 Self :: decimal_round_i ( option, & mut decimal) ;
@@ -811,6 +827,7 @@ impl DataValue {
811827 LogicalType :: SqlNull => Ok ( DataValue :: Null ) ,
812828 LogicalType :: UBigint => Ok ( DataValue :: UInt64 ( value. map ( |v| v. into ( ) ) ) ) ,
813829 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
830+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
814831 LogicalType :: Decimal ( _, option) => Ok ( DataValue :: Decimal ( value. map ( |v| {
815832 let mut decimal = Decimal :: from ( v) ;
816833 Self :: decimal_round_i ( option, & mut decimal) ;
@@ -856,6 +873,7 @@ impl DataValue {
856873 value. map ( |v| f64:: from_str ( & v) ) . transpose ( ) ?,
857874 ) ) ,
858875 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
876+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
859877 LogicalType :: Date => {
860878 let option = value
861879 . map ( |v| {
@@ -887,6 +905,9 @@ impl DataValue {
887905 DataValue :: Date32 ( value) => match to {
888906 LogicalType :: SqlNull => Ok ( DataValue :: Null ) ,
889907 LogicalType :: Varchar ( len) => varchar_cast ! ( Self :: format_date( value) , len) ,
908+ LogicalType :: Text => Ok ( DataValue :: Utf8 (
909+ Self :: format_date ( value) . map ( |v| format ! ( "{v}" ) ) ,
910+ ) ) ,
890911 LogicalType :: Date => Ok ( DataValue :: Date32 ( value) ) ,
891912 LogicalType :: DateTime => {
892913 let option = value. and_then ( |v| {
@@ -902,6 +923,9 @@ impl DataValue {
902923 DataValue :: Date64 ( value) => match to {
903924 LogicalType :: SqlNull => Ok ( DataValue :: Null ) ,
904925 LogicalType :: Varchar ( len) => varchar_cast ! ( Self :: format_datetime( value) , len) ,
926+ LogicalType :: Text => Ok ( DataValue :: Utf8 (
927+ Self :: format_datetime ( value) . map ( |v| format ! ( "{v}" ) ) ,
928+ ) ) ,
905929 LogicalType :: Date => {
906930 let option = value. and_then ( |v| {
907931 NaiveDateTime :: from_timestamp_opt ( v, 0 )
@@ -917,6 +941,7 @@ impl DataValue {
917941 LogicalType :: SqlNull => Ok ( DataValue :: Null ) ,
918942 LogicalType :: Decimal ( _, _) => Ok ( DataValue :: Decimal ( value) ) ,
919943 LogicalType :: Varchar ( len) => varchar_cast ! ( value, len) ,
944+ LogicalType :: Text => Ok ( DataValue :: Utf8 ( value. map ( |v| format ! ( "{v}" ) ) ) ) ,
920945 _ => Err ( TypeError :: CastFail ) ,
921946 } ,
922947 }
0 commit comments