public static HintNode create(HintNode hintNode, Hint hint) { return create(hintNode, hint, ""); }
if (hint == null) { if (other.hint != null) return false; } else if (!hint.equals(other.hint)) return false; if (isDistinct != other.isDistinct) return false; if (limit == null) {
private JoinCompiler(PhoenixStatement statement, SelectStatement select, ColumnResolver resolver) { this.statement = statement; this.select = select; this.origResolver = resolver; this.useStarJoin = !select.getHint().hasHint(Hint.NO_STAR_JOIN); this.columnRefs = new HashMap<ColumnRef, ColumnRefType>(); this.columnNodes = new HashMap<ColumnRef, ColumnParseNode>(); this.useSortMergeJoin = select.getHint().hasHint(Hint.USE_SORT_MERGE_JOIN); }
public HintNode hint(String hint) { return new HintNode(hint); }
outerWhere = FACTORY.and(Lists.newArrayList(outerWhere, extractedCondition)); HintNode hint = HintNode.combine(HintNode.subtract(indexSelect.getHint(), new Hint[] {Hint.INDEX, Hint.NO_CHILD_PARENT_JOIN_OPTIMIZATION}), FACTORY.hint("NO_INDEX")); SelectStatement query = FACTORY.select(dataSelect, hint, outerWhere); ColumnResolver queryResolver = FromCompiler.getResolverForQuery(query, statement.getConnection());
public SelectStatement select(SelectStatement statement, HintNode hint) { return hint == null || hint.isEmpty() ? statement : select(statement.getFrom(), hint, statement.isDistinct(), statement.getSelect(), statement.getWhere(), statement.getGroupBy(), statement.getHaving(), statement.getOrderBy(), statement.getLimit(), statement.getOffset(), statement.getBindCount(), statement.isAggregate(), statement.hasSequence(), statement.getSelects(), statement.getUdfParseNodes()); }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((fromTable == null) ? 0 : fromTable.hashCode()); result = prime * result + ((groupBy == null) ? 0 : groupBy.hashCode()); result = prime * result + ((having == null) ? 0 : having.hashCode()); result = prime * result + ((hint == null) ? 0 : hint.hashCode()); result = prime * result + (isDistinct ? 1231 : 1237); result = prime * result + ((limit == null) ? 0 : limit.hashCode()); result = prime * result + ((orderBy == null) ? 0 : orderBy.hashCode()); result = prime * result + ((select == null) ? 0 : select.hashCode()); result = prime * result + ((where == null) ? 0 : where.hashCode()); return result; }
private QueryPlan getHintedQueryPlan(PhoenixStatement statement, SelectStatement select, List<PTable> indexes, List<? extends PDatum> targetColumns, ParallelIteratorFactory parallelIteratorFactory, List<QueryPlan> plans) throws SQLException { QueryPlan dataPlan = plans.get(0); String indexHint = select.getHint().getHint(Hint.INDEX); if (indexHint == null) { return null;
hintRewrite = hintRewrite == null ? hint : HintNode.combine(hint, hintRewrite);
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 static HintNode create(HintNode hintNode, Hint hint, String value) { Map<Hint,String> hints = new HashMap<Hint,String>(hintNode.hints); hints.put(hint, value); return new HintNode(hints); }
outerWhere = FACTORY.and(Lists.newArrayList(outerWhere, extractedCondition)); HintNode hint = HintNode.combine(HintNode.subtract(indexSelect.getHint(), new Hint[] {Hint.INDEX, Hint.NO_CHILD_PARENT_JOIN_OPTIMIZATION}), FACTORY.hint("NO_INDEX")); SelectStatement query = FACTORY.select(dataSelect, hint, outerWhere); ColumnResolver queryResolver = FromCompiler.getResolverForQuery(query, statement.getConnection());
public static SelectStatement create(SelectStatement select, HintNode hint) { if (select.getHint() == hint || hint.isEmpty()) { return select; } return new SelectStatement(select.getFrom(), hint, select.isDistinct(), select.getSelect(), select.getWhere(), select.getGroupBy(), select.getHaving(), select.getOrderBy(), select.getLimit(), select.getOffset(), select.getBindCount(), select.isAggregate(), select.hasSequence(), select.getSelects(), select.getUdfParseNodes()); }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((fromTable == null) ? 0 : fromTable.hashCode()); result = prime * result + ((groupBy == null) ? 0 : groupBy.hashCode()); result = prime * result + ((having == null) ? 0 : having.hashCode()); result = prime * result + ((hint == null) ? 0 : hint.hashCode()); result = prime * result + (isDistinct ? 1231 : 1237); result = prime * result + ((limit == null) ? 0 : limit.hashCode()); result = prime * result + ((orderBy == null) ? 0 : orderBy.hashCode()); result = prime * result + ((select == null) ? 0 : select.hashCode()); result = prime * result + ((where == null) ? 0 : where.hashCode()); return result; }
private QueryPlan getHintedQueryPlan(PhoenixStatement statement, SelectStatement select, List<PTable> indexes, List<? extends PDatum> targetColumns, ParallelIteratorFactory parallelIteratorFactory, List<QueryPlan> plans) throws SQLException { QueryPlan dataPlan = plans.get(0); String indexHint = select.getHint().getHint(Hint.INDEX); if (indexHint == null) { return null;
hintRewrite = hintRewrite == null ? hint : HintNode.combine(hint, hintRewrite);
private static boolean isSerial(StatementContext context, FilterableStatement statement, TableRef tableRef, OrderBy orderBy, boolean isDataWithinThreshold) throws SQLException { if (isDataWithinThreshold) { PTable table = tableRef.getTable(); boolean hasSerialHint = statement.getHint().hasHint(HintNode.Hint.SERIAL); boolean canBeExecutedSerially = ScanUtil.canQueryBeExecutedSerially(table, orderBy, context); if (!canBeExecutedSerially) { if (hasSerialHint) { logger.warn("This query cannot be executed serially. Ignoring the hint"); } return false; } return true; } return false; }