@Override public FilterableStatement getStatement() { return delegate.getStatement(); }
public CursorFetchPlan(QueryPlan cursorQueryPlan,String cursorName) { super(cursorQueryPlan); this.isAggregate = delegate.getStatement().isAggregate() || delegate.getStatement().isDistinct(); this.cursorName = cursorName; }
public SerialIterators(QueryPlan plan, Integer perScanLimit, Integer offset, ParallelIteratorFactory iteratorFactory, ParallelScanGrouper scanGrouper, Scan scan, Map<ImmutableBytesPtr,ServerCache> caches, QueryPlan dataPlan) throws SQLException { super(plan, perScanLimit, offset, scanGrouper, scan, caches, dataPlan); this.offset = offset; // must be a offset or a limit specified or a SERIAL hint Preconditions.checkArgument( offset != null || perScanLimit != null || plan.getStatement().getHint().hasHint(HintNode.Hint.SERIAL)); this.iteratorFactory = iteratorFactory; }
if(this.plan.getStatement().getTableSamplingRate()!=null){ buf.append(plan.getStatement().getTableSamplingRate()/100D).append("-").append("SAMPLED ");
/** * The method validates the statement passed to the query plan. List of conditions are * <ol> * <li>Is a SELECT statement</li> * <li>doesn't contain ORDER BY expression</li> * <li>doesn't contain LIMIT</li> * <li>doesn't contain GROUP BY expression</li> * <li>doesn't contain DISTINCT</li> * <li>doesn't contain AGGREGATE functions</li> * </ol> * @param queryPlan * @return */ private boolean isValidStatement(final QueryPlan queryPlan) { if(queryPlan.getStatement().getOperation() != PhoenixStatement.Operation.QUERY) { throw new IllegalArgumentException("Query passed isn't a SELECT statement"); } if(!queryPlan.getOrderBy().getOrderByExpressions().isEmpty() || queryPlan.getLimit() != null || (queryPlan.getGroupBy() != null && !queryPlan.getGroupBy().isEmpty()) || queryPlan.getStatement().isDistinct() || queryPlan.getStatement().isAggregate()) { throw new IllegalArgumentException("SELECT statement shouldn't contain DISTINCT or ORDER BY or LIMIT or GROUP BY expressions"); } return true; }
private List<QueryPlan> getApplicablePlansForSingleFlatQuery(QueryPlan dataPlan, PhoenixStatement statement, List<? extends PDatum> targetColumns, ParallelIteratorFactory parallelIteratorFactory, boolean stopAtBestPlan) throws SQLException { SelectStatement select = (SelectStatement)dataPlan.getStatement();
try { final byte[] cacheId; String queryString = plan.getStatement().toString().replaceAll("\\$[0-9]+", "\\$"); if (usePersistentCache) { cacheId = Arrays.copyOfRange(digest.digest(queryString.getBytes()), 0, 8);
public BaseResultIterators(QueryPlan plan, Integer perScanLimit, Integer offset, ParallelScanGrouper scanGrouper, Scan scan, Map<ImmutableBytesPtr,ServerCache> caches, QueryPlan dataPlan) throws SQLException { super(plan.getContext(), plan.getTableRef(), plan.getGroupBy(), plan.getOrderBy(), plan.getStatement().getHint(), QueryUtil.getOffsetLimit(plan.getLimit(), plan.getOffset()), offset); this.plan = plan; this.scan = scan;
@Override public FilterableStatement getStatement() { return delegate.getStatement(); }
@Override public FilterableStatement getStatement() { return delegate.getStatement(); }
PTable table = context.getCurrentTable().getTable(); ParseNode viewWhere = table.getViewStatement() == null ? null : new SQLParser(table.getViewStatement()).parseQuery().getWhere(); context.setResolver(FromCompiler.getResolverForQuery((SelectStatement) (delegate.getStatement()), delegate.getContext().getConnection())); if (recompileWhereClause) { postFilter = WhereCompiler.compile(delegate.getContext(), delegate.getStatement(), viewWhere, null); WhereCompiler.compile(delegate.getContext(), delegate.getStatement(), viewWhere, keyRangeExpressions, null);
SelectStatement select = (SelectStatement) dataPlan.getStatement(); if (!select.isUnion() && !select.isJoin()
public CursorFetchPlan(QueryPlan cursorQueryPlan,String cursorName) { super(cursorQueryPlan); this.isAggregate = delegate.getStatement().isAggregate() || delegate.getStatement().isDistinct(); this.cursorName = cursorName; }
public CursorFetchPlan(QueryPlan cursorQueryPlan,String cursorName) { super(cursorQueryPlan); this.isAggregate = delegate.getStatement().isAggregate() || delegate.getStatement().isDistinct(); this.cursorName = cursorName; }
FilterableStatement statement = plan.getStatement(); RowProjector projector = plan.getProjector(); boolean optimizeProjection = false; !plan.getStatement().getHint().hasHint(HintNode.Hint.RANGE_SCAN) && cols < plan.getTableRef().getTable().getRowKeySchema().getFieldCount() && plan.getGroupBy().isOrderPreserving() &&
SelectStatement dataSelect = (SelectStatement)dataPlan.getStatement(); ParseNode where = dataSelect.getWhere(); if (isHinted && where != null) {
if (stream != null) Closeables.closeQuietly(stream); sampleScans(parallelScans,this.plan.getStatement().getTableSamplingRate()); return parallelScans;
public SerialIterators(QueryPlan plan, Integer perScanLimit, Integer offset, ParallelIteratorFactory iteratorFactory, ParallelScanGrouper scanGrouper, Scan scan, Map<ImmutableBytesPtr,ServerCache> caches, QueryPlan dataPlan) throws SQLException { super(plan, perScanLimit, offset, scanGrouper, scan, caches, dataPlan); this.offset = offset; // must be a offset or a limit specified or a SERIAL hint Preconditions.checkArgument( offset != null || perScanLimit != null || plan.getStatement().getHint().hasHint(HintNode.Hint.SERIAL)); this.iteratorFactory = iteratorFactory; }
public SerialIterators(QueryPlan plan, Integer perScanLimit, Integer offset, ParallelIteratorFactory iteratorFactory, ParallelScanGrouper scanGrouper, Scan scan, Map<ImmutableBytesPtr,ServerCache> caches, QueryPlan dataPlan) throws SQLException { super(plan, perScanLimit, offset, scanGrouper, scan, caches, dataPlan); this.offset = offset; // must be a offset or a limit specified or a SERIAL hint Preconditions.checkArgument( offset != null || perScanLimit != null || plan.getStatement().getHint().hasHint(HintNode.Hint.SERIAL)); this.iteratorFactory = iteratorFactory; }
tableRef = plan.getTableRef(); context.getScan().setFamilyMap(plan.getContext().getScan().getFamilyMap()); query = joinTable.getAsSingleSubquery((SelectStatement) plan.getStatement(), asSubquery); tupleProjector = new TupleProjector(plan.getProjector()); rhsTableRef = plan.getTableRef(); context.getScan().setFamilyMap(plan.getContext().getScan().getFamilyMap()); rhs = rhsJoinTable.getAsSingleSubquery((SelectStatement) plan.getStatement(), asSubquery); tupleProjector = new TupleProjector(plan.getProjector());