Zero implements the types.ExtendedType interface.
()
| 1072 | |
| 1073 | // Zero implements the types.ExtendedType interface. |
| 1074 | func (t *DoltgresType) Zero() interface{} { |
| 1075 | // TODO: need better way to get accurate result |
| 1076 | switch t.TypCategory { |
| 1077 | case TypeCategory_ArrayTypes: |
| 1078 | return []any{} |
| 1079 | case TypeCategory_BooleanTypes: |
| 1080 | return false |
| 1081 | case TypeCategory_CompositeTypes, TypeCategory_EnumTypes, TypeCategory_GeometricTypes, TypeCategory_NetworkAddressTypes, |
| 1082 | TypeCategory_RangeTypes, TypeCategory_PseudoTypes, TypeCategory_UserDefinedTypes, TypeCategory_BitStringTypes, |
| 1083 | TypeCategory_InternalUseTypes: |
| 1084 | return any(nil) |
| 1085 | case TypeCategory_DateTimeTypes: |
| 1086 | return time.Time{} |
| 1087 | case TypeCategory_NumericTypes: |
| 1088 | switch t.ID.TypeName() { |
| 1089 | case "float4": |
| 1090 | return float32(0) |
| 1091 | case "float8": |
| 1092 | return float64(0) |
| 1093 | case "int2": |
| 1094 | return int16(0) |
| 1095 | case "int4": |
| 1096 | return int32(0) |
| 1097 | case "int8": |
| 1098 | return int64(0) |
| 1099 | case "numeric": |
| 1100 | return apd.New(0, 0) |
| 1101 | case "oid", "regclass", "regproc", "regtype": |
| 1102 | return id.Null |
| 1103 | default: |
| 1104 | // TODO |
| 1105 | return int64(0) |
| 1106 | } |
| 1107 | case TypeCategory_StringTypes, TypeCategory_UnknownTypes: |
| 1108 | return "" |
| 1109 | case TypeCategory_TimespanTypes: |
| 1110 | return duration.MakeDuration(0, 0, 0) |
| 1111 | default: |
| 1112 | // shouldn't happen |
| 1113 | return any(nil) |
| 1114 | } |
| 1115 | } |
| 1116 | |
| 1117 | // SerializeValue implements the types.ExtendedType interface. |
| 1118 | func (t *DoltgresType) SerializeValue(ctx context.Context, val any) ([]byte, error) { |
no test coverage detected