code: func splitWhere(where ast.ExprNode) []ast.ExprNode {
  	var conditions []ast.ExprNode
  	switch x := where.(type) {
  	case nil:
  	case *ast.BinaryOperationExpr:
  		if x.Op == opcode.AndAnd {
  			conditions = append(conditions, splitWhere(x.L)...)
  			conditions = append(conditions, splitWhere(x.R)...)
  		} else {
  			conditions = append(conditions, x)
  		}
  	case *ast.ParenthesesExpr:
  		conditions = append(conditions, splitWhere(x.Expr)...)
  	default:
  		conditions = append(conditions, where)
  	}
  	return conditions
  }
docs: // splitWhere split a where expression to a list of AND conditions.