SubqueryHint getSubqueryHint(Token t) { SubqueryHint hint = new SubqueryHint(); String[] parts = getComment(t).split("\\s"); //$NON-NLS-1$ for (int i = 0; i < parts.length; i++) { if (parts[i].equalsIgnoreCase(SubqueryHint.MJ)) { hint.setMergeJoin(true); } else if (parts[i].equalsIgnoreCase(SubqueryHint.NOUNNEST)) { hint.setNoUnnest(true); } else if (parts[i].equalsIgnoreCase(SubqueryHint.DJ)) { hint.setDepJoin(); } } return hint; }
SubqueryHint getSubqueryHint(Token t) { SubqueryHint hint = new SubqueryHint(); String[] parts = getComment(t).split("\\s"); //$NON-NLS-1$ for (int i = 0; i < parts.length; i++) { if (parts[i].equalsIgnoreCase(SubqueryHint.MJ)) { hint.setMergeJoin(true); } else if (parts[i].equalsIgnoreCase(SubqueryHint.NOUNNEST)) { hint.setNoUnnest(true); } else if (parts[i].equalsIgnoreCase(SubqueryHint.DJ)) { hint.setDepJoin(); } } return hint; }
SubqueryHint getSubqueryHint(Token t) { SubqueryHint hint = new SubqueryHint(); String[] parts = getComment(t).split("\\s"); //$NON-NLS-1$ for (int i = 0; i < parts.length; i++) { if (parts[i].equalsIgnoreCase(SubqueryHint.MJ)) { hint.setMergeJoin(true); } else if (parts[i].equalsIgnoreCase(SubqueryHint.NOUNNEST)) { hint.setNoUnnest(true); } else if (parts[i].equalsIgnoreCase(SubqueryHint.DJ)) { hint.setDepJoin(); } } return hint; }
ec.setSubqueryHint(new ExistsCriteria.SubqueryHint()); ec.getSubqueryHint().setDepJoin(); ec.setCommand(query);
private void buildAggregateQuery(DocumentNode node, Query outerQuery, ExpandDocumentNode expandResource, OrderBy expandOrder, Query query, EdmNavigationProperty navigationProperty) throws TeiidException { Select select = query.getSelect(); Array array = new Array(Object.class, new ArrayList<Expression>(select.getSymbols())); select.getSymbols().clear(); AggregateSymbol symbol = new AggregateSymbol(AggregateSymbol.Type.ARRAY_AGG.name(), false, array); select.addSymbol(symbol); symbol.setOrderBy(expandOrder); Criteria crit = node.buildJoinCriteria(expandResource, navigationProperty); if (crit != null) { query.setCriteria(Criteria.combineCriteria(crit, query.getCriteria())); } // else assertion error? expandResource.setColumnIndex(outerQuery.getSelect().getCount() + 1); ScalarSubquery agg = new ScalarSubquery(query); SubqueryHint subqueryHint = new SubqueryHint(); subqueryHint.setMergeJoin(true); agg.setSubqueryHint(subqueryHint); outerQuery.getSelect().addSymbol(agg); }
@Test public void testScalarSubqueryWithHint() { 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); ScalarSubquery obj = new ScalarSubquery(q1); SubqueryHint subqueryHint = new SubqueryHint(); subqueryHint.setMergeJoin(true); obj.setSubqueryHint(subqueryHint); helpTest(obj, " /*+ MJ */ (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ }
public SubqueryHint clone() { SubqueryHint clone = new SubqueryHint(); clone.mergeJoin = this.mergeJoin; clone.noUnnest = this.noUnnest; clone.depJoin = this.depJoin; return clone; }
public SubqueryHint clone() { SubqueryHint clone = new SubqueryHint(); clone.mergeJoin = this.mergeJoin; clone.noUnnest = this.noUnnest; clone.depJoin = this.depJoin; return clone; }
public SubqueryHint clone() { SubqueryHint clone = new SubqueryHint(); clone.mergeJoin = this.mergeJoin; clone.noUnnest = this.noUnnest; clone.depJoin = this.depJoin; return clone; }