MCPcopy Create free account
hub / github.com/bytebase/bytebase / convertValue

Function convertValue

backend/plugin/db/pg/query.go:47–132  ·  view source on GitHub ↗
(typeName string, columnType *sql.ColumnType, value any)

Source from the content-addressed store, hash-verified

45var timeTzOID = fmt.Sprintf("%d", pgtype.TimetzOID)
46
47func convertValue(typeName string, columnType *sql.ColumnType, value any) *v1pb.RowValue {
48 switch raw := value.(type) {
49 case *sql.NullString:
50 if raw.Valid {
51 // TODO: Fix DatabaseTypeName for 1266, Object ID for TIME WITHOUT TIME ZONE
52 if columnType.DatabaseTypeName() == "TIME" || columnType.DatabaseTypeName() == timeTzOID || columnType.DatabaseTypeName() == "INTERVAL" {
53 return &v1pb.RowValue{
54 Kind: &v1pb.RowValue_StringValue{
55 StringValue: padZeroes(raw.String, 6),
56 },
57 }
58 }
59 return &v1pb.RowValue{
60 Kind: &v1pb.RowValue_StringValue{
61 StringValue: raw.String,
62 },
63 }
64 }
65 case *sql.NullInt64:
66 if raw.Valid {
67 return &v1pb.RowValue{
68 Kind: &v1pb.RowValue_Int64Value{
69 Int64Value: raw.Int64,
70 },
71 }
72 }
73 case *[]byte:
74 if len(*raw) > 0 {
75 return &v1pb.RowValue{
76 Kind: &v1pb.RowValue_BytesValue{
77 BytesValue: *raw,
78 },
79 }
80 }
81 case *sql.NullBool:
82 if raw.Valid {
83 return &v1pb.RowValue{
84 Kind: &v1pb.RowValue_BoolValue{
85 BoolValue: raw.Bool,
86 },
87 }
88 }
89 case *sql.NullFloat64:
90 if raw.Valid {
91 return &v1pb.RowValue{
92 Kind: &v1pb.RowValue_DoubleValue{
93 DoubleValue: raw.Float64,
94 },
95 }
96 }
97 case *pgtype.Date:
98 if raw.Valid {
99 if raw.InfinityModifier != pgtype.Finite {
100 return &v1pb.RowValue{
101 Kind: &v1pb.RowValue_StringValue{
102 StringValue: raw.InfinityModifier.String(),
103 },
104 }

Callers

nothing calls this directly

Calls 3

buildTimestamptzRowValueFunction · 0.85
padZeroesFunction · 0.70
StringMethod · 0.65

Tested by

no test coverage detected