@Override final public Expr copySubstitute(Binding binding) { Expr e1 = (expr1 == null ? null : expr1.copySubstitute(binding)) ; Expr e2 = (expr2 == null ? null : expr2.copySubstitute(binding)) ; Expr e3 = (expr3 == null ? null : expr3.copySubstitute(binding)) ; return copy(e1, e2, e3) ; }
@Override final public Expr copySubstitute(Binding binding) { Expr e1 = (expr1 == null ? null : expr1.copySubstitute(binding)) ; Expr e2 = (expr2 == null ? null : expr2.copySubstitute(binding)) ; return copy(e1, e2) ; }
@Override final public Expr copySubstitute(Binding binding) { Expr e = (expr == null ? null : expr.copySubstitute(binding)) ; return copy(e) ; }
public static Expr substitute(Expr expr, Binding binding) { if ( isNotNeeded(binding) ) return expr; return expr.copySubstitute(binding); }
@Override public SDBConstraint substitute(Binding binding) { return new RegexSqlGen(getExpr().copySubstitute(binding), exprPattern, patternStr, flags, completeConstraint) ; }
public ExprList copySubstitute(Binding binding) { ExprList x = new ExprList() ; for (Expr expr : expressions ) { expr = expr.copySubstitute(binding) ; x.add(expr) ; } return x ; }
@Override public SDBConstraint substitute(Binding binding) { return new StringEqualsSqlGen(getExpr().copySubstitute(binding), exprPattern, super.isComplete()) ; }
public static boolean isSatisfiable(Expr expr) { // NOTE Folding does not detect cases such as E_LogicalAnd(E_Equals(x = y), false) Expr exprCopy = expr.copySubstitute(BindingRoot.create()); Expr folded = ExprTransformer.transform(new ExprTransformConstantFold(), exprCopy) ; return !folded.equals(NodeValue.FALSE); }
private VarExprList transformVarExprList(VarExprList varExprList) { VarExprList varExprList2 = new VarExprList(); for ( Var v : varExprList.getVars() ) { // if ( binding.contains(v)) // // Already bound. No need to do anything because the // // logical assignment will test value. // continue ; Expr expr = varExprList.getExpr(v); expr = expr.copySubstitute(binding); varExprList2.add(v, expr); } return varExprList2; }
@Override public Expr copySubstitute(Binding binding) { ExprList newArgs = new ExprList() ; for ( int i = 1 ; i <= numArgs() ; i++ ) { Expr e = getArg(i) ; e = e.copySubstitute(binding) ; newArgs.add(e) ; } return copy(newArgs); }
public static Expr optimizeMM(Expr expr) { Expr result = (Expr) MultiMethod.invokeStatic(SqlExprOptimizer.class, "optimize", expr); // Post process any result result = result.copySubstitute(BindingRoot.create()); result = ExprLib.foldConstants(result); Set<Set<Expr>> dnf = DnfUtils.toSetDnf(result); result = DnfUtils.dnfToExpr(dnf, true); return result; }