本文整理汇总了Golang中github.com/pingcap/tidb/ast.ResultSetNode.GetResultFields方法的典型用法代码示例。如果您正苦于以下问题:Golang ResultSetNode.GetResultFields方法的具体用法?Golang ResultSetNode.GetResultFields怎么用?Golang ResultSetNode.GetResultFields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/pingcap/tidb/ast.ResultSetNode
的用法示例。
在下文中一共展示了ResultSetNode.GetResultFields方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: resolveColumnInTableSources
func (nr *nameResolver) resolveColumnInTableSources(cn *ast.ColumnNameExpr, tableSources []*ast.TableSource) (done bool) {
var matchedResultField *ast.ResultField
tableNameL := cn.Name.Table.L
columnNameL := cn.Name.Name.L
if tableNameL != "" {
var matchedTable ast.ResultSetNode
for _, ts := range tableSources {
if tableNameL == ts.AsName.L {
// different table name.
matchedTable = ts
break
} else if ts.AsName.L != "" {
// Table as name shadows table real name.
continue
}
if tn, ok := ts.Source.(*ast.TableName); ok {
if cn.Name.Schema.L != "" && cn.Name.Schema.L != tn.Schema.L {
continue
}
if tableNameL == tn.Name.L {
matchedTable = ts
}
}
}
if matchedTable != nil {
resultFields := matchedTable.GetResultFields()
for _, rf := range resultFields {
if rf.ColumnAsName.L == columnNameL || rf.Column.Name.L == columnNameL {
// resolve column.
matchedResultField = rf
break
}
}
}
} else {
for _, ts := range tableSources {
rfs := ts.GetResultFields()
for _, rf := range rfs {
matchAsName := rf.ColumnAsName.L != "" && rf.ColumnAsName.L == columnNameL
matchColumnName := rf.ColumnAsName.L == "" && rf.Column.Name.L == columnNameL
if matchAsName || matchColumnName {
if matchedResultField != nil {
nr.Err = errors.Errorf("column %s is ambiguous.", cn.Name.Name.O)
return true
}
matchedResultField = rf
}
}
}
}
if matchedResultField != nil {
// Bind column.
cn.Refer = matchedResultField
matchedResultField.Referenced = true
return true
}
return false
}
示例2: bindColumnInTableSources
func (sb *InfoBinder) bindColumnInTableSources(cn *ast.ColumnName, tableSources []*ast.TableSource) (done bool) {
var matchedResultField *ast.ResultField
if cn.Table.L != "" {
var matchedTable ast.ResultSetNode
for _, ts := range tableSources {
if cn.Table.L == ts.AsName.L {
// different table name.
matchedTable = ts
break
}
if tn, ok := ts.Source.(*ast.TableName); ok {
if cn.Table.L == tn.Name.L {
matchedTable = ts
}
}
}
if matchedTable != nil {
resultFields := matchedTable.GetResultFields()
for _, rf := range resultFields {
if rf.ColumnAsName.L == cn.Name.L || rf.Column.Name.L == cn.Name.L {
// bind column.
matchedResultField = rf
break
}
}
}
} else {
for _, ts := range tableSources {
rfs := ts.GetResultFields()
for _, rf := range rfs {
matchAsName := rf.ColumnAsName.L != "" && rf.ColumnAsName.L == cn.Name.L
matchColumnName := rf.ColumnAsName.L == "" && rf.Column.Name.L == cn.Name.L
if matchAsName || matchColumnName {
if matchedResultField != nil {
sb.Err = errors.Errorf("column %s is ambiguous.", cn.Name.O)
return true
}
matchedResultField = rf
}
}
}
}
if matchedResultField != nil {
// bind column.
cn.ColumnInfo = matchedResultField.Column
cn.TableInfo = matchedResultField.Table
return true
}
return false
}