@@ -518,37 +518,43 @@ func (c *dbzCodec) writeDebeziumFieldValue(
518518 return nil
519519
520520 case mysql .TypeEnum :
521- v , ok := value .(uint64 )
522- if ! ok {
521+ switch v := value .(type ) {
522+ case uint64 :
523+ enumVar , err := types .ParseEnumValue (ft .GetElems (), v )
524+ if err != nil {
525+ // Invalid enum value inserted in non-strict mode.
526+ writer .WriteStringField (col .GetName (), "" )
527+ return nil
528+ }
529+ writer .WriteStringField (col .GetName (), enumVar .Name )
530+ case string :
531+ writer .WriteStringField (col .GetName (), v )
532+ default :
523533 return cerror .ErrDebeziumEncodeFailed .GenWithStack (
524534 "unexpected column value type %T for enum column %s" ,
525535 value ,
526536 col .GetName ())
527537 }
528- enumVar , err := types .ParseEnumValue (ft .GetElems (), v )
529- if err != nil {
530- // Invalid enum value inserted in non-strict mode.
531- writer .WriteStringField (col .GetName (), "" )
532- return nil
533- }
534- writer .WriteStringField (col .GetName (), enumVar .Name )
535538 return nil
536539
537540 case mysql .TypeSet :
538- v , ok := value .(uint64 )
539- if ! ok {
541+ switch v := value .(type ) {
542+ case uint64 :
543+ setVar , err := types .ParseSetValue (ft .GetElems (), v )
544+ if err != nil {
545+ // Invalid enum value inserted in non-strict mode.
546+ writer .WriteStringField (col .GetName (), "" )
547+ return nil
548+ }
549+ writer .WriteStringField (col .GetName (), setVar .Name )
550+ case string :
551+ writer .WriteStringField (col .GetName (), v )
552+ default :
540553 return cerror .ErrDebeziumEncodeFailed .GenWithStack (
541554 "unexpected column value type %T for set column %s" ,
542555 value ,
543556 col .GetName ())
544557 }
545- setVar , err := types .ParseSetValue (ft .GetElems (), v )
546- if err != nil {
547- // Invalid enum value inserted in non-strict mode.
548- writer .WriteStringField (col .GetName (), "" )
549- return nil
550- }
551- writer .WriteStringField (col .GetName (), setVar .Name )
552558 return nil
553559
554560 case mysql .TypeNewDecimal :
0 commit comments