@Override public void visit(UriResourceLambdaAll all) { accept(all.getExpression()); if (this.ctxLambda != null) { org.teiid.query.sql.symbol.Expression predicate = this.stack.pop(); predicate = new SubqueryCompareCriteria(new Constant(true), buildSubquery( this.ctxLambda, predicate), CompareCriteria.EQ, SubqueryCompareCriteria.ALL); this.stack.push(predicate); } this.ctxLambda = null; }
public void testConvertSubqueryCompareCriteria() throws Exception{ ElementSymbol e1 = new ElementSymbol("e1"); //$NON-NLS-1$ ElementSymbol x1 = new ElementSymbol("x1"); //$NON-NLS-1$ Map<ElementSymbol, ElementSymbol> symbolMap = new HashMap<ElementSymbol, ElementSymbol>(); symbolMap.put(e1, x1); Query query = new Query(); SubqueryCompareCriteria crit = new SubqueryCompareCriteria(e1, query, SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.ALL); SubqueryCompareCriteria expected = new SubqueryCompareCriteria(x1, query, SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.ALL); FrameUtil.convertCriteria(crit, symbolMap, null, true); assertEquals(crit, expected); }
public static SubqueryCompareCriteria helpExample() { ElementSymbol element = TestElementImpl.helpExample("g1", "e1"); //$NON-NLS-1$ //$NON-NLS-2$ Query query = TestQueryImpl.helpExample(true); SubqueryCompareCriteria scc = new SubqueryCompareCriteria(element, query, AbstractCompareCriteria.GT, SubqueryCompareCriteria.ANY); return scc; }
private SubqueryCompareCriteria helpGetCompareSubqueryCriteria(int operator, int predicateQuantifier){ ElementSymbol e1 = new ElementSymbol("e1"); //$NON-NLS-1$ SubqueryCompareCriteria crit = new SubqueryCompareCriteria(e1, new Query(), operator, predicateQuantifier); return crit; }
/** * Deep copy of object. The values Iterator of this object * will not be cloned - it will be null in the new object * (see #setValueIterator setValueIterator}). * @return Deep copy of object * @see java.lang.Object#clone() */ public Object clone() { Expression leftCopy = null; if(getLeftExpression() != null) { leftCopy = (Expression) getLeftExpression().clone(); } QueryCommand copyCommand = null; if(getCommand() != null) { copyCommand = (QueryCommand) getCommand().clone(); } SubqueryCompareCriteria copy = new SubqueryCompareCriteria(leftCopy, copyCommand, this.getOperator(), this.getPredicateQuantifier()); if (this.subqueryHint != null) { copy.subqueryHint = this.subqueryHint.clone(); } if (this.arrayExpression != null) { copy.arrayExpression = (Expression) this.arrayExpression.clone(); } return copy; }
/** * Deep copy of object. The values Iterator of this object * will not be cloned - it will be null in the new object * (see #setValueIterator setValueIterator}). * @return Deep copy of object * @see java.lang.Object#clone() */ public Object clone() { Expression leftCopy = null; if(getLeftExpression() != null) { leftCopy = (Expression) getLeftExpression().clone(); } QueryCommand copyCommand = null; if(getCommand() != null) { copyCommand = (QueryCommand) getCommand().clone(); } SubqueryCompareCriteria copy = new SubqueryCompareCriteria(leftCopy, copyCommand, this.getOperator(), this.getPredicateQuantifier()); if (this.subqueryHint != null) { copy.subqueryHint = this.subqueryHint.clone(); } if (this.arrayExpression != null) { copy.arrayExpression = (Expression) this.arrayExpression.clone(); } return copy; }
/** * Deep copy of object. The values Iterator of this object * will not be cloned - it will be null in the new object * (see #setValueIterator setValueIterator}). * @return Deep copy of object * @see java.lang.Object#clone() */ public Object clone() { Expression leftCopy = null; if(getLeftExpression() != null) { leftCopy = (Expression) getLeftExpression().clone(); } QueryCommand copyCommand = null; if(getCommand() != null) { copyCommand = (QueryCommand) getCommand().clone(); } SubqueryCompareCriteria copy = new SubqueryCompareCriteria(leftCopy, copyCommand, this.getOperator(), this.getPredicateQuantifier()); if (this.subqueryHint != null) { copy.subqueryHint = this.subqueryHint.clone(); } if (this.arrayExpression != null) { copy.arrayExpression = (Expression) this.arrayExpression.clone(); } return copy; }
subqueryCrit = new SubqueryCompareCriteria(); subqueryCrit.setLeftExpression(expression); subqueryCrit.setCommand(subquery);
subqueryCrit = new SubqueryCompareCriteria(); subqueryCrit.setLeftExpression(expression); subqueryCrit.setCommand(subquery);
subqueryCrit = new SubqueryCompareCriteria(); subqueryCrit.setLeftExpression(expression); subqueryCrit.setCommand(subquery);
crit = new SubqueryCompareCriteria(ssc.getExpression(), ssc.getCommand(), SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME); ((SubqueryCompareCriteria)crit).setSubqueryHint(ssc.getSubqueryHint()); } else if (crit instanceof CompareCriteria) { Query query = (Query)ss.getCommand(); result.multiRow = !isSingleRow(query); crit = new SubqueryCompareCriteria(cc.getLeftExpression(), ss.getCommand(), cc.getOperator(), SubqueryCompareCriteria.SOME); ((SubqueryCompareCriteria)crit).setSubqueryHint(ss.getSubqueryHint()); Query query = (Query)ss.getCommand(); result.multiRow = !isSingleRow(query); crit = new SubqueryCompareCriteria(cc.getRightExpression(), ss.getCommand(), cc.getReverseOperator(), SubqueryCompareCriteria.SOME); ((SubqueryCompareCriteria)crit).setSubqueryHint(ss.getSubqueryHint());
crit = new SubqueryCompareCriteria(ssc.getExpression(), ssc.getCommand(), SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME); ((SubqueryCompareCriteria)crit).setSubqueryHint(ssc.getSubqueryHint()); } else if (crit instanceof CompareCriteria) { Query query = (Query)ss.getCommand(); result.multiRow = !isSingleRow(query); crit = new SubqueryCompareCriteria(cc.getLeftExpression(), ss.getCommand(), cc.getOperator(), SubqueryCompareCriteria.SOME); ((SubqueryCompareCriteria)crit).setSubqueryHint(ss.getSubqueryHint()); Query query = (Query)ss.getCommand(); result.multiRow = !isSingleRow(query); crit = new SubqueryCompareCriteria(cc.getRightExpression(), ss.getCommand(), cc.getReverseOperator(), SubqueryCompareCriteria.SOME); ((SubqueryCompareCriteria)crit).setSubqueryHint(ss.getSubqueryHint());
crit = new SubqueryCompareCriteria(ssc.getExpression(), ssc.getCommand(), SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME); ((SubqueryCompareCriteria)crit).setSubqueryHint(ssc.getSubqueryHint()); } else if (crit instanceof CompareCriteria) { Query query = (Query)ss.getCommand(); if (query.getGroupBy() == null && query.hasAggregates()) { crit = new SubqueryCompareCriteria(cc.getLeftExpression(), ss.getCommand(), cc.getOperator(), SubqueryCompareCriteria.SOME); ((SubqueryCompareCriteria)crit).setSubqueryHint(ss.getSubqueryHint());
@Test public void testSubqueryCompareCriteria2() { Select s1 = new Select(); s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f1 = new From(); f1.addGroup(new GroupSymbol("m.g1")); //$NON-NLS-1$ Query q1 = new Query(); q1.setSelect(s1); q1.setFrom(f1); ElementSymbol expr = new ElementSymbol("e2"); //$NON-NLS-1$ SubqueryCompareCriteria scc = new SubqueryCompareCriteria(expr, q1, SubqueryCompareCriteria.LE, SubqueryCompareCriteria.SOME); helpTest(scc, "e2 <= SOME (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ }
@Test public void testSubqueryCompareCriteria1() { Select s1 = new Select(); s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f1 = new From(); f1.addGroup(new GroupSymbol("m.g1")); //$NON-NLS-1$ Query q1 = new Query(); q1.setSelect(s1); q1.setFrom(f1); ElementSymbol expr = new ElementSymbol("e2"); //$NON-NLS-1$ SubqueryCompareCriteria scc = new SubqueryCompareCriteria(expr, q1, SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.ANY); helpTest(scc, "e2 = ANY (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ }
@Test public void testSomeQuantifierSubqueryComparePredicate(){ Select s1 = new Select(); s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f1 = new From(); f1.addGroup(new GroupSymbol("m.g1")); //$NON-NLS-1$ Query q1 = new Query(); q1.setSelect(s1); q1.setFrom(f1); Select s2 = new Select(); s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f2 = new From(); f2.addGroup(new GroupSymbol("m.g2")); //$NON-NLS-1$ Criteria left = new SubqueryCompareCriteria(new ElementSymbol("e3"), q1, SubqueryCompareCriteria.GT, SubqueryCompareCriteria.SOME); //$NON-NLS-1$ Query q2 = new Query(); q2.setSelect(s2); q2.setFrom(f2); q2.setCriteria(left); helpTest("SELECT e1 FROM m.g2 WHERE e3 > some (SELECT e1 FROM m.g1)", //$NON-NLS-1$ "SELECT e1 FROM m.g2 WHERE e3 > SOME (SELECT e1 FROM m.g1)", //$NON-NLS-1$ q2); }
@Test public void testAnyQuantifierSubqueryComparePredicate(){ Select s1 = new Select(); s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f1 = new From(); f1.addGroup(new GroupSymbol("m.g1")); //$NON-NLS-1$ Query q1 = new Query(); q1.setSelect(s1); q1.setFrom(f1); Select s2 = new Select(); s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f2 = new From(); f2.addGroup(new GroupSymbol("m.g2")); //$NON-NLS-1$ Criteria left = new SubqueryCompareCriteria(new ElementSymbol("e3"), q1, SubqueryCompareCriteria.GE, SubqueryCompareCriteria.ANY); //$NON-NLS-1$ Query q2 = new Query(); q2.setSelect(s2); q2.setFrom(f2); q2.setCriteria(left); helpTest("SELECT e1 FROM m.g2 WHERE e3 >= ANY (SELECT e1 FROM m.g1)", //$NON-NLS-1$ "SELECT e1 FROM m.g2 WHERE e3 >= ANY (SELECT e1 FROM m.g1)", //$NON-NLS-1$ q2); }
@Test public void testAllQuantifierSubqueryComparePredicate(){ Select s1 = new Select(); s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f1 = new From(); f1.addGroup(new GroupSymbol("m.g1")); //$NON-NLS-1$ Query q1 = new Query(); q1.setSelect(s1); q1.setFrom(f1); Select s2 = new Select(); s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f2 = new From(); f2.addGroup(new GroupSymbol("m.g2")); //$NON-NLS-1$ Criteria left = new SubqueryCompareCriteria(new ElementSymbol("e3"), q1, SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.ALL); //$NON-NLS-1$ Query q2 = new Query(); q2.setSelect(s2); q2.setFrom(f2); q2.setCriteria(left); helpTest("SELECT e1 FROM m.g2 WHERE e3 = all (SELECT e1 FROM m.g1)", //$NON-NLS-1$ "SELECT e1 FROM m.g2 WHERE e3 = ALL (SELECT e1 FROM m.g1)", //$NON-NLS-1$ q2); }
@Test public void testNewSubqueryObjects(){ Select s1 = new Select(); s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ From f1 = new From(); f1.addGroup(new GroupSymbol("m.g1")); //$NON-NLS-1$ Query q1 = new Query(); q1.setSelect(s1); q1.setFrom(f1); Select s2 = new Select(); s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ s2.addSymbol(new ExpressionSymbol("blargh", new ScalarSubquery(q1))); //$NON-NLS-1$ From f2 = new From(); f2.addGroup(new GroupSymbol("m.g2")); //$NON-NLS-1$ Criteria left = new SubqueryCompareCriteria(new ElementSymbol("e3"), q1, SubqueryCompareCriteria.GE, SubqueryCompareCriteria.ANY); //$NON-NLS-1$ Criteria right = new ExistsCriteria(q1); Criteria outer = new CompoundCriteria(CompoundCriteria.AND, left, right); Query q2 = new Query(); q2.setSelect(s2); q2.setFrom(f2); q2.setCriteria(outer); helpTest(q2, "SELECT e1, (SELECT e1 FROM m.g1) FROM m.g2 WHERE (e3 >= ANY (SELECT e1 FROM m.g1)) AND (EXISTS (SELECT e1 FROM m.g1))"); //$NON-NLS-1$ }