private void init(List<Expression> children) { this.children = ImmutableList.copyOf(children); boolean isStateless = true; boolean isNullable = false; boolean requiresFinalEvaluation = false; boolean cloneExpression = false; this.determinism = Determinism.ALWAYS; for (int i = 0; i < children.size(); i++) { Expression child = children.get(i); isNullable |= child.isNullable(); isStateless &= child.isStateless(); this.determinism = this.determinism.combine(child.getDeterminism()); requiresFinalEvaluation |= child.requiresFinalEvaluation(); cloneExpression |= child.isCloneExpression(); } this.isStateless = isStateless; this.isNullable = isNullable; this.requiresFinalEvaluation = requiresFinalEvaluation; this.cloneExpression = cloneExpression; }
private Expression orExpression(List<Expression> children) throws SQLException { Iterator<Expression> iterator = children.iterator(); Determinism determinism = Determinism.ALWAYS; while (iterator.hasNext()) { Expression child = iterator.next(); if (child.getDataType() != PBoolean.INSTANCE) { throw TypeMismatchException.newException(PBoolean.INSTANCE, child.getDataType(), child.toString()); } if (LiteralExpression.isFalse(child)) { iterator.remove(); } if (LiteralExpression.isTrue(child)) { return child; } determinism = determinism.combine(child.getDeterminism()); } if (children.size() == 0) { return LiteralExpression.newConstant(false, determinism); } if (children.size() == 1) { return children.get(0); } return new OrExpression(children); }
public static Expression create(List<Expression> children) throws SQLException { Determinism determinism = Determinism.ALWAYS; Iterator<Expression> iterator = children.iterator(); while (iterator.hasNext()) { Expression child = iterator.next(); if (child.getDataType() != PBoolean.INSTANCE) { throw TypeMismatchException.newException(PBoolean.INSTANCE, child.getDataType(), child.toString()); } if (LiteralExpression.isFalse(child)) { return child; } if (LiteralExpression.isTrue(child)) { iterator.remove(); } determinism.combine(child.getDeterminism()); } if (children.size() == 0) { return LiteralExpression.newConstant(true, determinism); } if (children.size() == 1) { return children.get(0); } return new AndExpression(children); }
@Test public void testCombine() { // combining a determinism enum with ALWAYS should always return the // other determinism assertEquals("Unexpected result ", Determinism.PER_ROW, Determinism.ALWAYS.combine(Determinism.PER_ROW)); assertEquals("Unexpected result ", Determinism.PER_STATEMENT, Determinism.ALWAYS.combine(Determinism.PER_STATEMENT)); assertEquals("Unexpected result ", Determinism.PER_STATEMENT, Determinism.PER_STATEMENT.combine(Determinism.ALWAYS)); assertEquals("Unexpected result ", Determinism.PER_ROW, Determinism.PER_ROW.combine(Determinism.ALWAYS)); // combining PER_STATEMENT and PER_ROW should return PER_ROW assertEquals("Unexpected result ", Determinism.PER_ROW, Determinism.PER_STATEMENT.combine(Determinism.PER_ROW)); assertEquals("Unexpected result ", Determinism.PER_ROW, Determinism.PER_ROW.combine(Determinism.PER_STATEMENT)); } }
for(int i = 0; i < children.size(); i++) { Expression e = children.get(i); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {
for(int i = 0; i < children.size(); i++) { Expression e = children.get(i); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {
Expression e1 = children.get(0); Expression e2 = children.get(1); Determinism determinism = e1.getDeterminism().combine(e2.getDeterminism()); PDataType type1 = e1.getDataType(); PDataType type2 = e2.getDataType(); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {
for(int i = 0; i < children.size(); i++) { Expression e = children.get(i); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {
toString(op, children)); Determinism determinism = lhsExpr.getDeterminism().combine(rhsExpr.getDeterminism());
private void init(List<Expression> children) { this.children = ImmutableList.copyOf(children); boolean isStateless = true; boolean isNullable = false; boolean requiresFinalEvaluation = false; this.determinism = Determinism.ALWAYS; for (int i = 0; i < children.size(); i++) { Expression child = children.get(i); isNullable |= child.isNullable(); isStateless &= child.isStateless(); this.determinism = this.determinism.combine(child.getDeterminism()); requiresFinalEvaluation |= child.requiresFinalEvaluation(); } this.isStateless = isStateless; this.isNullable = isNullable; this.requiresFinalEvaluation = requiresFinalEvaluation; }
private void init(List<Expression> children) { this.children = ImmutableList.copyOf(children); boolean isStateless = true; boolean isNullable = false; boolean requiresFinalEvaluation = false; this.determinism = Determinism.ALWAYS; for (int i = 0; i < children.size(); i++) { Expression child = children.get(i); isNullable |= child.isNullable(); isStateless &= child.isStateless(); this.determinism = this.determinism.combine(child.getDeterminism()); requiresFinalEvaluation |= child.requiresFinalEvaluation(); } this.isStateless = isStateless; this.isNullable = isNullable; this.requiresFinalEvaluation = requiresFinalEvaluation; }
public static Expression create(List<Expression> children) throws SQLException { Determinism determinism = Determinism.ALWAYS; Iterator<Expression> iterator = children.iterator(); while (iterator.hasNext()) { Expression child = iterator.next(); if (child.getDataType() != PBoolean.INSTANCE) { throw TypeMismatchException.newException(PBoolean.INSTANCE, child.getDataType(), child.toString()); } if (LiteralExpression.isFalse(child)) { return child; } if (LiteralExpression.isTrue(child)) { iterator.remove(); } determinism.combine(child.getDeterminism()); } if (children.size() == 0) { return LiteralExpression.newConstant(true, determinism); } if (children.size() == 1) { return children.get(0); } return new AndExpression(children); }
private Expression orExpression(List<Expression> children) throws SQLException { Iterator<Expression> iterator = children.iterator(); Determinism determinism = Determinism.ALWAYS; while (iterator.hasNext()) { Expression child = iterator.next(); if (child.getDataType() != PBoolean.INSTANCE) { throw TypeMismatchException.newException(PBoolean.INSTANCE, child.getDataType(), child.toString()); } if (LiteralExpression.isFalse(child)) { iterator.remove(); } if (LiteralExpression.isTrue(child)) { return child; } determinism = determinism.combine(child.getDeterminism()); } if (children.size() == 0) { return LiteralExpression.newConstant(false, determinism); } if (children.size() == 1) { return children.get(0); } return new OrExpression(children); }
public static Expression create(List<Expression> children) throws SQLException { Determinism determinism = Determinism.ALWAYS; Iterator<Expression> iterator = children.iterator(); while (iterator.hasNext()) { Expression child = iterator.next(); if (child.getDataType() != PBoolean.INSTANCE) { throw TypeMismatchException.newException(PBoolean.INSTANCE, child.getDataType(), child.toString()); } if (LiteralExpression.isFalse(child)) { return child; } if (LiteralExpression.isTrue(child)) { iterator.remove(); } determinism.combine(child.getDeterminism()); } if (children.size() == 0) { return LiteralExpression.newConstant(true, determinism); } if (children.size() == 1) { return children.get(0); } return new AndExpression(children); }
private Expression orExpression(List<Expression> children) throws SQLException { Iterator<Expression> iterator = children.iterator(); Determinism determinism = Determinism.ALWAYS; while (iterator.hasNext()) { Expression child = iterator.next(); if (child.getDataType() != PBoolean.INSTANCE) { throw TypeMismatchException.newException(PBoolean.INSTANCE, child.getDataType(), child.toString()); } if (LiteralExpression.isFalse(child)) { iterator.remove(); } if (LiteralExpression.isTrue(child)) { return child; } determinism = determinism.combine(child.getDeterminism()); } if (children.size() == 0) { return LiteralExpression.newConstant(false, determinism); } if (children.size() == 1) { return children.get(0); } return new OrExpression(children); }
for(int i = 0; i < children.size(); i++) { Expression e = children.get(i); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {
for(int i = 0; i < children.size(); i++) { Expression e = children.get(i); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {
for(int i = 0; i < children.size(); i++) { Expression e = children.get(i); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {
for(int i = 0; i < children.size(); i++) { Expression e = children.get(i); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {
for(int i = 0; i < children.size(); i++) { Expression e = children.get(i); determinism = determinism.combine(e.getDeterminism()); PDataType type = e.getDataType(); if (type == null) {