private Query buildSubquery(DocumentNode eResource, org.teiid.query.sql.symbol.Expression projected) { Select s1 = new Select(); s1.addSymbol(projected); Query q = new Query(); From from = new From(); from.addGroup(eResource.getGroupSymbol()); q.setFrom(from); q.setCriteria(DocumentNode.buildJoinCriteria(eResource, this.ctxQuery)); q.setSelect(s1); return q; }
public void visit(Query obj) { preVisitVisitor(obj); visitNodes(obj.getWith()); visitNode(obj.getSelect()); visitNode(obj.getInto()); visitNode(obj.getFrom()); visitNode(obj.getCriteria()); visitNode(obj.getGroupBy()); visitNode(obj.getHaving()); visitNode(obj.getOrderBy()); visitNode(obj.getLimit()); visitNode(obj.getOption()); postVisitVisitor(obj); } public void visit(RaiseStatement obj) {
/** * Constructs an instance of this class given all the clauses * @param select SELECT clause * @param from FROM clause * @param criteria WHERE clause * @param groupBy GROUP BY clause * @param having HAVING clause * @param orderBy ORDER BY clause * @param option OPTION clause */ public Query( Select select, From from, Criteria criteria, GroupBy groupBy, Criteria having, OrderBy orderBy, Option option ) { super(); setSelect( select ); setFrom( from ); setCriteria( criteria ); setGroupBy( groupBy ); setHaving( having ); setOrderBy( orderBy ); setOption( option ); }
/** * Constructs an instance of this class given the specified clauses * @param select SELECT clause * @param from FROM clause * @param criteria WHERE clause * @param orderBy ORDER BY clause * @param option OPTION clause */ public Query( Select select, From from, Criteria criteria, OrderBy orderBy, Option option ) { super(); setSelect( select ); setFrom( from ); setCriteria( criteria ); setOrderBy( orderBy ); setOption( option ); }
public boolean hasAggregates() { return getGroupBy() != null || getHaving() != null || !AggregateSymbolCollectorVisitor.getAggregates(getSelect(), false).isEmpty(); }
@Test public void testQuery4() { Select select = new Select(); select.addSymbol(new MultipleElementSymbol()); From from = new From(); from.addGroup(new GroupSymbol("m.g")); //$NON-NLS-1$ CompareCriteria cc = new CompareCriteria(new ElementSymbol("e1"), CompareCriteria.EQ, new Constant(new Integer(5))); //$NON-NLS-1$ CompareCriteria having = new CompareCriteria(new ElementSymbol("e1"), CompareCriteria.GT, new Constant(new Integer(0))); //$NON-NLS-1$ OrderBy orderBy = new OrderBy(); orderBy.addVariable(new ElementSymbol("e1")); //$NON-NLS-1$ Query query = new Query(); query.setSelect(select); query.setFrom(from); query.setCriteria(cc); query.setHaving(having); query.setOrderBy(orderBy); helpTest(query, "SELECT * FROM m.g WHERE e1 = 5 HAVING e1 > 0 ORDER BY e1"); //$NON-NLS-1$ }
@Test public void testLimitWithOffset() { Query query = new Query(); Select select = new Select(Arrays.asList(new MultipleElementSymbol())); From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$ query.setSelect(select); query.setFrom(from); query.setLimit(new Limit(new Constant(new Integer(50)), new Constant(new Integer(100)))); helpTest(query, "SELECT * FROM a LIMIT 50, 100"); //$NON-NLS-1$ }
public static Query createMatViewQuery(Object matMetadataId, String matTableName, List<? extends Expression> select, boolean isGlobal) { Query query = new Query(); query.setSelect(new Select(select)); GroupSymbol gs = new GroupSymbol(matTableName); gs.setGlobalTable(isGlobal); gs.setMetadataID(matMetadataId); query.setFrom(new From(Arrays.asList(new UnaryFromClause(gs)))); return query; }
@Test public void testCacheMultipleComments() { String sql = "/* hello */ /*+ cache */ /* world */ SELECT * FROM t1"; //$NON-NLS-1$ Query query = new Query(); Select select = new Select(); select.addSymbol(new MultipleElementSymbol()); query.setSelect(select); From from = new From(); UnaryFromClause ufc = new UnaryFromClause(); from.addClause(ufc); ufc.setGroup(new GroupSymbol("t1")); //$NON-NLS-1$ query.setFrom(from); query.setCacheHint(new CacheHint()); TestParser.helpTest(sql, "/*+ cache */ SELECT * FROM t1", query); //$NON-NLS-1$ }
/** SELECT y FROM h ORDER BY x */ public static final Query sample1() { Query q2 = new Query(); Select select = new Select(); select.addSymbol(new ElementSymbol("y")); //$NON-NLS-1$ q2.setSelect(select); From from = new From(); from.addGroup(new GroupSymbol("h")); //$NON-NLS-1$ q2.setFrom(from); OrderBy orderBy = new OrderBy(); orderBy.addVariable(new ElementSymbol("x")); //$NON-NLS-1$ q2.setOrderBy(orderBy); return q2; }
private boolean canRaiseInputset(Command command, Collection<ElementSymbol> bindings) { // check to see if this is query. if (!(command instanceof Query)) { return false; } Query query = (Query)command; Criteria crit = query.getCriteria(); if (crit != null && (query.getGroupBy() != null || query.getHaving() != null || query.getLimit() != null)) { return false; } //temporarily remove the criteria query.setCriteria(null); //just throw away order by query.setOrderBy(null); List<ElementSymbol> references = QueryUtil.getBindingsReferences(query, bindings); query.setCriteria(crit); //if there are any input set bindings in the rest of the command, don't convert return references.isEmpty(); }
public static Query rowConstructor(List<Expression> select) { Query query = new Query(); query.setSelect(new Select()); query.getSelect().addSymbols(select); query.setRowConstructor(true); return query; }
private Query rewriteGroupBy(Query query) throws TeiidComponentException, TeiidProcessingException { if (query.getGroupBy() == null) { rewriteAggs = false; return query; } if (isDistinctWithGroupBy(query)) { query.getSelect().setDistinct(false); } rewriteExpressions(query.getGroupBy()); List<Expression> expr = query.getGroupBy().getSymbols(); for (Iterator<Expression> iter = expr.iterator(); iter.hasNext();) { if (EvaluatableVisitor.willBecomeConstant(iter.next())) { iter.remove(); } } if (expr.isEmpty()) { query.setGroupBy(null); } return query; }
public TupleSource processQuery(Query query, final VDBMetaData vdb, final TransformationMetadata metadata, final CommandContext cc) throws QueryMetadataException, TeiidComponentException { return new ExtractionTupleSource(query.getCriteria(), createIterator(vdb, metadata, cc), cc, vdb, metadata, this); }
public Query selectQuery() throws TeiidException { if (!this.exceptions.isEmpty()) { throw this.exceptions.get(0); } Query query = this.context.buildQuery(); if (this.countQuery) { AggregateSymbol aggregateSymbol = new AggregateSymbol(AggregateSymbol.Type.COUNT.name(), false, null); Select select = new Select(Arrays.asList(aggregateSymbol)); query.setSelect(select); } else if (this.orderBy != null) { if (this.context.getIterator() != null) { //currently this doesn't matter as the ordering can only be based upon the parent entity ((AggregateSymbol)((AliasSymbol)query.getSelect().getSymbol(query.getSelect().getProjectedSymbols().size() - 1)).getSymbol()).setOrderBy(this.orderBy); } else { query.setOrderBy(this.orderBy); } } if (this.expandOption != null) { processExpandOption(this.expandOption, this.context, query, 1, null); } return query; }
@Override protected TupleSource createTupleSource() throws TeiidComponentException, TeiidProcessingException { TempTableStore tts = contextStore; TempTable tt = tts.getOrCreateTempTable(tableName, query, bufferManager, true, false, context, group); if (context.getDataObjects() != null) { Object id = RelationalPlanner.getTrackableGroup(group, context.getMetadata()); if (id != null) { context.accessedDataObject(id); } } return tt.createTupleSource(query.getProjectedSymbols(), query.getCriteria(), query.getOrderBy()); } };
public void testHasNoCriteria2() { Query query = new Query(); CompareCriteria crit = new CompareCriteria(new Constant("a"), CompareCriteria.EQ, new Constant("b")); //$NON-NLS-1$ //$NON-NLS-2$ query.setCriteria(crit); assertEquals("Got incorrect answer checking for no criteria", false, RuleValidateWhereAll.hasNoCriteria(query)); //$NON-NLS-1$ }
@Test public void testElementSymbolForms() { String sql = "SELECT pm1.g1.e1, e2, pm1.g1.e3 AS a, e4 AS b FROM pm1.g1"; //$NON-NLS-1$ Query resolvedQuery = (Query) helpResolve(sql); helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$ helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1", "pm1.g1.e2", "a", "b" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ helpCheckElements(resolvedQuery.getSelect(), new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$ }