translateConvertType translates the *vitess.ConvertType expression given to a new one, substituting type names as appropriate. An error is returned if the type named cannot be supported.
(convertType *vitess.ConvertType)
| 905 | // translateConvertType translates the *vitess.ConvertType expression given to a new one, substituting type names as |
| 906 | // appropriate. An error is returned if the type named cannot be supported. |
| 907 | func translateConvertType(convertType *vitess.ConvertType) (*vitess.ConvertType, error) { |
| 908 | switch strings.ToLower(convertType.Type) { |
| 909 | // passthrough types that need no conversion |
| 910 | case expression.ConvertToBinary, expression.ConvertToChar, expression.ConvertToNChar, expression.ConvertToDate, |
| 911 | expression.ConvertToDatetime, expression.ConvertToFloat, expression.ConvertToDouble, expression.ConvertToJSON, |
| 912 | expression.ConvertToReal, expression.ConvertToSigned, expression.ConvertToTime, expression.ConvertToUnsigned: |
| 913 | return convertType, nil |
| 914 | case "text", "character varying", "varchar": |
| 915 | return &vitess.ConvertType{ |
| 916 | Type: expression.ConvertToChar, |
| 917 | }, nil |
| 918 | case "integer", "bigint": |
| 919 | return &vitess.ConvertType{ |
| 920 | Type: expression.ConvertToSigned, |
| 921 | }, nil |
| 922 | case "decimal", "numeric": |
| 923 | return &vitess.ConvertType{ |
| 924 | Type: expression.ConvertToFloat, |
| 925 | }, nil |
| 926 | case "boolean": |
| 927 | return &vitess.ConvertType{ |
| 928 | Type: expression.ConvertToSigned, |
| 929 | }, nil |
| 930 | case "timestamp", "timestamp with time zone", "timestamp without time zone": |
| 931 | return &vitess.ConvertType{ |
| 932 | Type: expression.ConvertToDatetime, |
| 933 | }, nil |
| 934 | default: |
| 935 | return nil, errors.Errorf("unknown convert type: `%T`", convertType.Type) |
| 936 | } |
| 937 | } |