Пример #1
0
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
}