in cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/utilities/utils.go [200:238]
func DecodeBytesToCassandraColumnType(b []byte, choice datatype.PrimitiveType, protocolVersion primitive.ProtocolVersion) (any, error) {
switch choice.GetDataTypeCode() {
case primitive.DataTypeCodeVarchar:
return proxycore.DecodeType(datatype.Varchar, protocolVersion, b)
case primitive.DataTypeCodeDouble:
return proxycore.DecodeType(datatype.Double, protocolVersion, b)
case primitive.DataTypeCodeFloat:
return proxycore.DecodeType(datatype.Float, protocolVersion, b)
case primitive.DataTypeCodeBigint:
return proxycore.DecodeType(datatype.Bigint, protocolVersion, b)
case primitive.DataTypeCodeTimestamp:
return proxycore.DecodeType(datatype.Timestamp, protocolVersion, b)
case primitive.DataTypeCodeInt:
var decodedInt int64
if len(b) == 8 {
decoded, err := proxycore.DecodeType(datatype.Bigint, protocolVersion, b)
if err != nil {
return nil, err
}
decodedInt = decoded.(int64)
} else {
decoded, err := proxycore.DecodeType(datatype.Int, protocolVersion, b)
if err != nil {
return nil, err
}
decodedInt = int64(decoded.(int32))
}
return decodedInt, nil
case primitive.DataTypeCodeBoolean:
return proxycore.DecodeType(datatype.Boolean, protocolVersion, b)
case primitive.DataTypeCodeDate:
return proxycore.DecodeType(datatype.Date, protocolVersion, b)
case primitive.DataTypeCodeBlob:
return proxycore.DecodeType(datatype.Blob, protocolVersion, b)
default:
res, err := decodeNonPrimitive(choice, b)
return res, err
}
}