in cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/translator/utils.go [1058:1093]
func castColumns(colMeta *schemaMapping.Column, columnFamily string) (string, error) {
var nc string
switch colMeta.ColumnType {
case "int":
if colMeta.IsPrimaryKey {
nc = colMeta.ColumnName
} else {
nc = fmt.Sprintf("TO_INT64(%s['%s'])", columnFamily, colMeta.ColumnName)
}
case "bigint":
if colMeta.IsPrimaryKey {
nc = colMeta.ColumnName
} else {
nc = fmt.Sprintf("TO_INT64(%s['%s'])", columnFamily, colMeta.ColumnName)
}
case "float":
nc = fmt.Sprintf("TO_FLOAT32(%s['%s'])", columnFamily, colMeta.ColumnName)
case "double":
nc = fmt.Sprintf("TO_FLOAT64(%s['%s'])", columnFamily, colMeta.ColumnName)
case "boolean":
nc = fmt.Sprintf("TO_INT64(%s['%s'])", columnFamily, colMeta.ColumnName)
case "timestamp":
nc = fmt.Sprintf("TO_TIME(%s['%s'])", columnFamily, colMeta.ColumnName)
case "blob":
nc = fmt.Sprintf("TO_BLOB(%s['%s'])", columnFamily, colMeta.ColumnName)
case "text", "varchar":
if colMeta.IsPrimaryKey {
nc = colMeta.ColumnName
} else {
nc = fmt.Sprintf("%s['%s']", columnFamily, colMeta.ColumnName)
}
default:
return "", fmt.Errorf("unsupported CQL type: %s", colMeta.ColumnType)
}
return nc, nil
}