本文整理汇总了Golang中github.com/pingcap/tidb/ast.PatternInExpr类的典型用法代码示例。如果您正苦于以下问题:Golang PatternInExpr类的具体用法?Golang PatternInExpr怎么用?Golang PatternInExpr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PatternInExpr类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: patternIn
func (e *Evaluator) patternIn(n *ast.PatternInExpr) bool {
lhs := n.Expr.GetValue()
if types.IsNil(lhs) {
n.SetValue(nil)
return true
}
hasNull := false
for _, v := range n.List {
if types.IsNil(v.GetValue()) {
hasNull = true
continue
}
r, err := types.Compare(n.Expr.GetValue(), v.GetValue())
if err != nil {
e.err = errors.Trace(err)
return false
}
if r == 0 {
n.SetValue(boolToInt64(!n.Not))
return true
}
}
if hasNull {
// if no matched but we got null in In, return null
// e.g 1 in (null, 2, 3) returns null
n.SetValue(nil)
return true
}
n.SetValue(boolToInt64(n.Not))
return true
}
开发者ID:mrtoms,项目名称:tidb,代码行数:31,代码来源:evaluator.go
示例2: patternIn
func (e *Evaluator) patternIn(n *ast.PatternInExpr) bool {
lhs := *n.Expr.GetDatum()
if lhs.IsNull() {
n.SetNull()
return true
}
if n.Sel == nil {
ds := make([]types.Datum, 0, len(n.List))
for _, ei := range n.List {
ds = append(ds, *ei.GetDatum())
}
x := e.checkInList(n.Not, lhs, ds)
if e.err != nil {
return false
}
n.SetDatum(x)
return true
}
res := n.Sel.GetDatum().GetRow()
x := e.checkInList(n.Not, lhs, res)
if e.err != nil {
return false
}
n.SetDatum(x)
return true
}
开发者ID:yangxuanjia,项目名称:tidb,代码行数:26,代码来源:evaluator.go
示例3: patternIn
func (e *Evaluator) patternIn(n *ast.PatternInExpr) bool {
lhs := n.Expr.GetValue()
if types.IsNil(lhs) {
n.SetValue(nil)
return true
}
if n.Sel == nil {
values := make([]interface{}, 0, len(n.List))
for _, ei := range n.List {
values = append(values, ei.GetValue())
}
x := e.checkInList(n.Not, lhs, values)
if e.err != nil {
return false
}
n.SetValue(x)
return true
}
se := n.Sel.(*ast.SubqueryExpr)
sel := se.SubqueryExec
res := sel.GetValue().([]interface{})
x := e.checkInList(n.Not, lhs, res)
if e.err != nil {
return false
}
n.SetValue(x)
return true
}
开发者ID:xudongQiu,项目名称:tidb,代码行数:29,代码来源:evaluator.go
注:本文中的github.com/pingcap/tidb/ast.PatternInExpr类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论