in cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/translator/translator_select.go [313:359]
func processStrings(t *Translator, selectedColumns []schemaMapping.SelectedColumns, tableName string, keySpace string, isGroupBy bool) (map[string]AsKeywordMeta, []string, error) {
lenInputString := len(selectedColumns)
var columns = make([]string, 0)
structs := make([]AsKeywordMeta, 0, lenInputString)
columnFamily := t.SchemaMappingConfig.SystemColumnFamily
var err error
for _, columnMetadata := range selectedColumns {
dataType := ""
isStructUpdated := false
if columnMetadata.IsFunc {
//todo: implement genereralized handling of writetime with rest of the aggregate functions
columns, dataType, err = processFunctionColumn(t, columnMetadata, tableName, keySpace, columns)
if err != nil {
return nil, nil, err
}
if !isStructUpdated {
structs = append(structs, AsKeywordMeta{
IsFunc: columnMetadata.IsFunc,
Name: columnMetadata.FuncColumnName,
Alias: columnMetadata.Alias,
DataType: dataType,
})
}
continue
} else {
columns, structs, dataType, isStructUpdated, err = processNonFunctionColumn(t, columnMetadata, tableName, keySpace, columnFamily, columns, structs, isGroupBy)
if err != nil {
return nil, nil, err
}
}
if !isStructUpdated {
structs = append(structs, AsKeywordMeta{
IsFunc: columnMetadata.IsFunc,
Name: columnMetadata.Name,
Alias: columnMetadata.Alias,
DataType: dataType,
})
}
}
var aliasMap = make(map[string]AsKeywordMeta)
for _, meta := range structs {
if meta.Alias != "" {
aliasMap[meta.Alias] = meta
}
}
return aliasMap, columns, nil
}