| 205 | } |
| 206 | |
| 207 | func toV1pbRowVal(colType dbsql.ColumnInfoTypeName, val string) (*v1pb.RowValue, error) { |
| 208 | rowVal := v1pb.RowValue{} |
| 209 | if val == "" && colType != dbsql.ColumnInfoTypeNameString { |
| 210 | rowVal.Kind = &v1pb.RowValue_NullValue{} |
| 211 | return &rowVal, nil |
| 212 | } |
| 213 | |
| 214 | switch colType { |
| 215 | case dbsql.ColumnInfoTypeNameBoolean: |
| 216 | boolVal, err := strconv.ParseBool(val) |
| 217 | if err != nil { |
| 218 | return nil, err |
| 219 | } |
| 220 | rowVal.Kind = &v1pb.RowValue_BoolValue{BoolValue: boolVal} |
| 221 | |
| 222 | case dbsql.ColumnInfoTypeNameBinary: |
| 223 | rowVal.Kind = &v1pb.RowValue_BytesValue{BytesValue: []byte(val)} |
| 224 | |
| 225 | case dbsql.ColumnInfoTypeNameShort: |
| 226 | shortVal, err := strconv.ParseInt(val, 10, 16) |
| 227 | if err != nil { |
| 228 | return nil, err |
| 229 | } |
| 230 | rowVal.Kind = &v1pb.RowValue_Int32Value{Int32Value: int32(shortVal)} |
| 231 | |
| 232 | case dbsql.ColumnInfoTypeNameInt: |
| 233 | i32Val, err := strconv.ParseInt(val, 10, 32) |
| 234 | if err != nil { |
| 235 | return nil, err |
| 236 | } |
| 237 | rowVal.Kind = &v1pb.RowValue_Int32Value{Int32Value: int32(i32Val)} |
| 238 | |
| 239 | case dbsql.ColumnInfoTypeNameLong: |
| 240 | i64Val, err := strconv.ParseInt(val, 10, 64) |
| 241 | if err != nil { |
| 242 | return nil, err |
| 243 | } |
| 244 | rowVal.Kind = &v1pb.RowValue_Int64Value{Int64Value: i64Val} |
| 245 | |
| 246 | case dbsql.ColumnInfoTypeNameFloat: |
| 247 | floatVal, err := strconv.ParseFloat(val, 32) |
| 248 | if err != nil { |
| 249 | return nil, err |
| 250 | } |
| 251 | rowVal.Kind = &v1pb.RowValue_FloatValue{FloatValue: float32(floatVal)} |
| 252 | |
| 253 | case dbsql.ColumnInfoTypeNameDouble: |
| 254 | doubleVal, err := strconv.ParseFloat(val, 64) |
| 255 | if err != nil { |
| 256 | return nil, err |
| 257 | } |
| 258 | rowVal.Kind = &v1pb.RowValue_DoubleValue{DoubleValue: doubleVal} |
| 259 | |
| 260 | default: |
| 261 | // convert all remaining types to string. |
| 262 | rowVal.Kind = &v1pb.RowValue_StringValue{StringValue: val} |
| 263 | } |
| 264 | |