@@ -191,25 +191,7 @@ func (t datetimeType) Compare(ctx context.Context, a interface{}, b interface{})
191191
192192// CompareValue implements the ValueType interface
193193func (t datetimeType ) CompareValue (ctx * sql.Context , a , b sql.Value ) (int , error ) {
194- if hasNulls , res := CompareNullValues (a , b ); hasNulls {
195- return res , nil
196- }
197- at , err := ConvertValueToDatetime (ctx , a )
198- if err != nil {
199- return 0 , err
200- }
201- bt , err := ConvertValueToDatetime (ctx , b )
202- if err != nil {
203- return 0 , err
204- }
205- switch {
206- case at .Before (bt ):
207- return - 1 , nil
208- case at .After (bt ):
209- return 1 , nil
210- default :
211- return 0 , nil
212- }
194+ panic ("TODO: implement CompareValue for DatetimeType" )
213195}
214196
215197// Convert implements Type interface.
@@ -591,116 +573,3 @@ func ValidateTimestamp(t time.Time) interface{} {
591573 }
592574 return t
593575}
594-
595- func ConvertValueToDatetime (ctx * sql.Context , v sql.Value ) (time.Time , error ) {
596- switch v .Typ {
597- case sqltypes .Int8 :
598- x := values .ReadInt8 (v .Val )
599- if x == 0 {
600- return zeroTime , nil
601- }
602- return zeroTime , ErrConvertingToTime .New (x )
603- case sqltypes .Int16 :
604- x := values .ReadInt16 (v .Val )
605- if x == 0 {
606- return zeroTime , nil
607- }
608- return zeroTime , ErrConvertingToTime .New (x )
609- case sqltypes .Int24 :
610- x := values .ReadInt24 (v .Val )
611- if x == 0 {
612- return zeroTime , nil
613- }
614- return zeroTime , ErrConvertingToTime .New (x )
615- case sqltypes .Int32 :
616- x := values .ReadInt32 (v .Val )
617- if x == 0 {
618- return zeroTime , nil
619- }
620- return zeroTime , ErrConvertingToTime .New (x )
621- case sqltypes .Int64 :
622- x := values .ReadInt64 (v .Val )
623- if x == 0 {
624- return zeroTime , nil
625- }
626- return zeroTime , ErrConvertingToTime .New (x )
627- case sqltypes .Uint8 :
628- x := values .ReadUint8 (v .Val )
629- if x == 0 {
630- return zeroTime , nil
631- }
632- return zeroTime , ErrConvertingToTime .New (x )
633- case sqltypes .Uint16 :
634- x := values .ReadUint16 (v .Val )
635- if x == 0 {
636- return zeroTime , nil
637- }
638- return zeroTime , ErrConvertingToTime .New (x )
639- case sqltypes .Uint24 :
640- x := values .ReadUint24 (v .Val )
641- if x == 0 {
642- return zeroTime , nil
643- }
644- return zeroTime , ErrConvertingToTime .New (x )
645- case sqltypes .Uint32 :
646- x := values .ReadUint32 (v .Val )
647- if x == 0 {
648- return zeroTime , nil
649- }
650- return zeroTime , ErrConvertingToTime .New (x )
651- case sqltypes .Uint64 :
652- x := values .ReadUint64 (v .Val )
653- if x == 0 {
654- return zeroTime , nil
655- }
656- return zeroTime , ErrConvertingToTime .New (x )
657- case sqltypes .Float32 :
658- x := values .ReadFloat32 (v .Val )
659- if x == 0 {
660- return zeroTime , nil
661- }
662- return zeroTime , ErrConvertingToTime .New (x )
663- case sqltypes .Float64 :
664- x := values .ReadFloat64 (v .Val )
665- if x == 0 {
666- return zeroTime , nil
667- }
668- return zeroTime , ErrConvertingToTime .New (x )
669- case sqltypes .Decimal :
670- x := values .ReadDecimal (v .Val )
671- if x .IsZero () {
672- return zeroTime , nil
673- }
674- return zeroTime , ErrConvertingToTime .New (x )
675- case sqltypes .Year :
676- return zeroTime , nil
677- case sqltypes .Date :
678- x := values .ReadDate (v .Val )
679- return x , nil
680- case sqltypes .Time :
681- x := values .ReadInt64 (v .Val )
682- if x == 0 {
683- return zeroTime , nil
684- }
685- return zeroTime , ErrConvertingToTime .New (x )
686- case sqltypes .Datetime , sqltypes .Timestamp :
687- x := values .ReadDatetime (v .Val )
688- return x , nil
689- case sqltypes .Text , sqltypes .Blob :
690- var err error
691- if v .Val == nil {
692- v .Val , err = v .WrappedVal .Unwrap (ctx )
693- if err != nil {
694- return zeroTime , err
695- }
696- }
697- val := values .ReadString (v .Val )
698- res , parsed , err := parseDatetime (val )
699- if ! parsed {
700- return zeroTime , ErrConvertingToTime .New (v )
701- }
702- return res , err
703- default :
704- return zeroTime , sql .ErrInvalidBaseType .New (v .Typ .String (), "datetime" )
705- }
706- }
0 commit comments