Package org.teiid.query.sql.lang

Examples of org.teiid.query.sql.lang.SubqueryCompareCriteria


        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);
    }
View Full Code Here


      result.type = crit.getClass();
      result.mergeJoin = ssc.getSubqueryHint().isMergeJoin();
      if (!UNNEST && !result.mergeJoin) {
        return result;
      }
      crit = new SubqueryCompareCriteria(ssc.getExpression(), ssc.getCommand(), SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME);
    } else if (crit instanceof CompareCriteria) {
      if (!UNNEST) {
        return result;
      }
      //convert to the quantified form
      CompareCriteria cc = (CompareCriteria)crit;
      if (cc.getRightExpression() instanceof ScalarSubquery) {
        ScalarSubquery ss = (ScalarSubquery)cc.getRightExpression();
        result.type = ss.getClass();
        //we can only use a semi-join if we know that 1 row will be present
        if (ss.getCommand() instanceof Query) {
          Query query = (Query)ss.getCommand();
          if (query.getGroupBy() == null && query.hasAggregates()) {
            crit = new SubqueryCompareCriteria(cc.getLeftExpression(), ss.getCommand(), cc.getOperator(), SubqueryCompareCriteria.SOME);
          }
        }
      }
    }
    if (crit instanceof SubqueryCompareCriteria) {
      SubqueryCompareCriteria scc = (SubqueryCompareCriteria)crit;
     
      if (scc.getPredicateQuantifier() != SubqueryCompareCriteria.SOME
          //TODO: could add an inline view if not a query
          || !(scc.getCommand() instanceof Query)) {
        return result;
      }    

      Query query = (Query)scc.getCommand();
      Expression rightExpr = SymbolMap.getExpression(query.getProjectedSymbols().get(0));
     
      if (result.not && !isNonNull(query, rightExpr)) {
        return result;
      }
      if (result.type == null) {
        result.type = scc.getClass();
      }
      result.query = query;
      result.additionalCritieria = (Criteria)new CompareCriteria(scc.getLeftExpression(), scc.getOperator(), rightExpr).clone();
    }
    if (crit instanceof ExistsCriteria) {
      ExistsCriteria exists = (ExistsCriteria)crit;
      if (exists.getSubqueryHint().isNoUnnest()) {
        return result;
View Full Code Here

    }

    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;
    }
View Full Code Here

        }.evaluateTVL(crit, tuple));
    }

    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;       
    }
View Full Code Here

    /**
     * Special case: if ALL is specified and the subquery returns no rows,
     * the result is true.
     */
    @Test public void testCompareSubqueryCriteriaNoRows() throws Exception {
        SubqueryCompareCriteria crit = helpGetCompareSubqueryCriteria(SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.ALL);
        helpTestCompareSubqueryCriteria(crit, true, Collections.emptyList());
    }
View Full Code Here

    /**
     * Special case: if ANY/SOME is specified and the subquery returns no rows,
     * the result is false.
     */
    @Test public void testCompareSubqueryCriteriaNoRows2() throws Exception {
        SubqueryCompareCriteria crit = helpGetCompareSubqueryCriteria(SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME);
        helpTestCompareSubqueryCriteria(crit, false, Collections.emptyList());
    }
View Full Code Here

        SubqueryCompareCriteria crit = helpGetCompareSubqueryCriteria(SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME);
        helpTestCompareSubqueryCriteria(crit, false, Collections.emptyList());
    }

    @Test public void testCompareSubqueryCriteria2() throws Exception {
        SubqueryCompareCriteria crit = helpGetCompareSubqueryCriteria(SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.ALL);
        ArrayList values = new ArrayList();
        values.add("a"); //$NON-NLS-1$
        values.add("b"); //$NON-NLS-1$
        values.add("c"); //$NON-NLS-1$
        helpTestCompareSubqueryCriteria(crit, false, values);
View Full Code Here

        values.add("c"); //$NON-NLS-1$
        helpTestCompareSubqueryCriteria(crit, false, values);
    }

    @Test public void testCompareSubqueryCriteria3() throws Exception {
        SubqueryCompareCriteria crit = helpGetCompareSubqueryCriteria(SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME);
        ArrayList values = new ArrayList();
        values.add("a"); //$NON-NLS-1$
        values.add("b"); //$NON-NLS-1$
        values.add("c"); //$NON-NLS-1$
        helpTestCompareSubqueryCriteria(crit, true, values);
View Full Code Here

        values.add("c"); //$NON-NLS-1$
        helpTestCompareSubqueryCriteria(crit, true, values);
    }
   
    @Test public void testCompareSubqueryCriteria4() throws Exception {
        SubqueryCompareCriteria crit = helpGetCompareSubqueryCriteria(SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME);
        ArrayList values = new ArrayList();
        values.add("b"); //$NON-NLS-1$
        values.add("c"); //$NON-NLS-1$
        helpTestCompareSubqueryCriteria(crit, false, values);
    }
View Full Code Here

        values.add("c"); //$NON-NLS-1$
        helpTestCompareSubqueryCriteria(crit, false, values);
    }

    @Test public void testCompareSubqueryCriteria5() throws Exception {
        SubqueryCompareCriteria crit = helpGetCompareSubqueryCriteria(SubqueryCompareCriteria.EQ, SubqueryCompareCriteria.SOME);
        ArrayList values = new ArrayList();
        values.add("a"); //$NON-NLS-1$
        values.add("b"); //$NON-NLS-1$
        values.add("c"); //$NON-NLS-1$
        helpTestCompareSubqueryCriteria(crit, true, values);
View Full Code Here

TOP

Related Classes of org.teiid.query.sql.lang.SubqueryCompareCriteria

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.