@@ -925,7 +925,7 @@ func (sp *StreamProcessor) CastVal(i int, val interface{}, col *Column) interfac
925925 sVal = cast .ToString (val )
926926 sp .rowChecksum [i ] = uint64 (len (sVal ))
927927 nVal = sVal
928- } else if dVal . IsZero () || g .In (val , "0000-00-00" , "0000-00-00 00:00:00" ) {
928+ } else if g .In (val , "0000-00-00" , "0000-00-00 00:00:00" ) {
929929 nVal = nil
930930 cs .NullCnt ++
931931 sp .rowBlankValCnt ++
@@ -1013,15 +1013,15 @@ func (sp *StreamProcessor) CastToString(i int, val interface{}, valType ...Colum
10131013 return cast .ToString (val )
10141014 // return fmt.Sprintf("%v", val)
10151015 case typ .IsDate ():
1016- tVal , _ := sp .CastToTime (val )
1017- if tVal . IsZero () {
1018- return ""
1016+ tVal , err := sp .CastToTime (val )
1017+ if err != nil {
1018+ return cast . ToString ( val )
10191019 }
10201020 return tVal .Format ("2006-01-02" )
10211021 case typ .IsDatetime ():
1022- tVal , _ := sp .CastToTime (val )
1023- if tVal . IsZero () {
1024- return ""
1022+ tVal , err := sp .CastToTime (val )
1023+ if err != nil {
1024+ return cast . ToString ( val )
10251025 } else if sp .Config .DatetimeFormat != "" && strings .ToLower (sp .Config .DatetimeFormat ) != "auto" {
10261026 return tVal .Format (sp .Config .DatetimeFormat )
10271027 } else if tVal .Location () == nil {
@@ -1040,48 +1040,6 @@ func (sp *StreamProcessor) CastToString(i int, val interface{}, valType ...Colum
10401040 }
10411041}
10421042
1043- // CastToStringSafe to string (safer)
1044- func (sp * StreamProcessor ) CastToStringSafe (i int , val interface {}, valType ... ColumnType ) string {
1045- typ := ColumnType ("" )
1046- switch v := val .(type ) {
1047- case time.Time :
1048- typ = DatetimeType
1049- default :
1050- _ = v
1051- }
1052-
1053- if len (valType ) > 0 {
1054- typ = valType [0 ]
1055- }
1056-
1057- switch {
1058- case val == nil :
1059- return ""
1060- case sp .Config .BoolAsInt && typ .IsBool ():
1061- switch cast .ToString (val ) {
1062- case "true" , "1" , "TRUE" :
1063- return "1"
1064- }
1065- return "0"
1066- case typ .IsDecimal () || typ .IsFloat ():
1067- return cast .ToString (val )
1068- case typ .IsDate ():
1069- tVal , _ := sp .CastToTime (val )
1070- if tVal .IsZero () {
1071- return ""
1072- }
1073- return tVal .UTC ().Format ("2006-01-02" )
1074- case typ .IsDatetime ():
1075- tVal , _ := sp .CastToTime (val )
1076- if tVal .IsZero () {
1077- return ""
1078- }
1079- return tVal .UTC ().Format ("2006-01-02 15:04:05.999999" ) + " +00"
1080- default :
1081- return cast .ToString (val )
1082- }
1083- }
1084-
10851043// CastToStringSafe to masks to count bytes (even safer)
10861044func (sp * StreamProcessor ) CastToStringSafeMask (i int , val interface {}, valType ... ColumnType ) string {
10871045 typ := ColumnType ("" )
@@ -1155,8 +1113,6 @@ func (sp *StreamProcessor) CastValWithoutStats(i int, val interface{}, typ Colum
11551113 dVal , err := sp .CastToTime (val )
11561114 if err != nil {
11571115 nVal = val // keep string
1158- } else if dVal .IsZero () {
1159- nVal = nil
11601116 } else {
11611117 nVal = dVal
11621118 }
0 commit comments