public SelectStatement getAsSubquery(List<OrderByNode> orderBy) throws SQLException { if (isSubselect()) return SubselectRewriter.applyOrderBy( SubselectRewriter.applyPostFilters(subselect, preFilters, tableNode.getAlias()), orderBy, tableNode.getAlias(), tableNode); return NODE_FACTORY.select(tableNode, select.getHint(), false, getSelectNodes(), getPreFiltersCombined(), null, null, orderBy, null, null, 0, false, select.hasSequence(), Collections.<SelectStatement> emptyList(), select.getUdfParseNodes()); }
@Override public final String toString() { StringBuilder buf = new StringBuilder(); toSQL(null,buf); return buf.toString(); }
private PTable getParentOfView(PTable view) throws SQLException { //TODO just use view.getParentName().getString() after implementing https://issues.apache.org/jira/browse/PHOENIX-2114 SelectStatement select = new SQLParser(view.getViewStatement()).parseQuery(); String parentName = SchemaUtil.normalizeFullTableName(select.getFrom().toString().trim()); return connection.getTable(new PTableKey(view.getTenantId(), parentName)); }
@Override public List<TableName> visit(JoinTableNode joinNode) throws SQLException { List<TableName> lhs = joinNode.getLHS().accept(this); List<TableName> rhs = joinNode.getType() == JoinType.Semi || joinNode.getType() == JoinType.Anti ? Collections.<TableName> emptyList() : joinNode.getRHS().accept(this); List<TableName> ret = Lists.<TableName>newArrayListWithExpectedSize(lhs.size() + rhs.size()); ret.addAll(lhs); ret.addAll(rhs); return ret; }
if (fromTable != null) { buf.append(" FROM "); fromTable.toSQL(resolver, buf);
public SelectStatement getAsSubquery(List<OrderByNode> orderBy) throws SQLException { if (isSubselect()) return SubselectRewriter.applyOrderBy( SubselectRewriter.applyPostFilters(subselect, preFilters, tableNode.getAlias()), orderBy, tableNode.getAlias(), tableNode); return NODE_FACTORY.select(tableNode, select.getHint(), false, getSelectNodes(), getPreFiltersCombined(), null, null, orderBy, null, null, 0, false, select.hasSequence(), Collections.<SelectStatement> emptyList(), select.getUdfParseNodes()); }
@Override public TableNode visit(JoinTableNode joinNode) throws SQLException { TableNode lhs = joinNode.getLHS(); TableNode rhs = joinNode.getRHS(); TableNode lhsReplace = lhs.accept(this); TableNode rhsReplace = rhs.accept(this); if (lhs == lhsReplace && rhs == rhsReplace) return joinNode; return FACTORY.join(joinNode.getType(), lhsReplace, rhsReplace, joinNode.getOnNode(), joinNode.isSingleValueOnly()); }
@Override public final String toString() { StringBuilder buf = new StringBuilder(); toSQL(null,buf); return buf.toString(); }
public SelectStatement getAsSubquery(List<OrderByNode> orderBy) throws SQLException { if (isSubselect()) return SubselectRewriter.applyOrderBy( SubselectRewriter.applyPostFilters(subselect, preFilters, tableNode.getAlias()), orderBy, tableNode.getAlias(), tableNode); return NODE_FACTORY.select(tableNode, select.getHint(), false, getSelectNodes(), getPreFiltersCombined(), null, null, orderBy, null, null, 0, false, select.hasSequence(), Collections.<SelectStatement> emptyList(), select.getUdfParseNodes()); }
@Override public TableNode visit(JoinTableNode joinNode) throws SQLException { TableNode lhsNode = joinNode.getLHS(); TableNode rhsNode = joinNode.getRHS(); ParseNode onNode = joinNode.getOnNode(); TableNode normLhsNode = lhsNode.accept(this); TableNode normRhsNode = rhsNode.accept(this); parseNodeRewriter.reset(); ParseNode normOnNode = onNode == null ? null : onNode.accept(parseNodeRewriter); if (lhsNode == normLhsNode && rhsNode == normRhsNode && onNode == normOnNode) return joinNode; return NODE_FACTORY.join(joinNode.getType(), normLhsNode, normRhsNode, normOnNode, joinNode.isSingleValueOnly()); }
@Override public final String toString() { StringBuilder buf = new StringBuilder(); toSQL(null,buf); return buf.toString(); }
@Override public Pair<Table, List<JoinSpec>> visit(JoinTableNode joinNode) throws SQLException { Pair<Table, List<JoinSpec>> lhs = joinNode.getLHS().accept(this); Pair<Table, List<JoinSpec>> rhs = joinNode.getRHS().accept(this); JoinTable joinTable = rhs.getSecond() == null ? new JoinTable(rhs.getFirst()) : new JoinTable(rhs.getFirst(), rhs.getSecond()); List<JoinSpec> joinSpecs = lhs.getSecond(); if (joinSpecs == null) { joinSpecs = new ArrayList<JoinSpec>(); } joinSpecs.add(new JoinSpec(joinNode.getType(), joinNode.getOnNode(), joinTable, joinNode.isSingleValueOnly(), origResolver)); return new Pair<Table, List<JoinSpec>>(lhs.getFirst(), joinSpecs); }
if (fromTable != null) { buf.append(" FROM "); fromTable.toSQL(resolver, buf);
/** * Iterate through the nodes in the FROM clause to build a column resolver used to lookup a column given the name * and alias. * * @param statement * the select statement * @return the column resolver * @throws SQLException * @throws SQLFeatureNotSupportedException * if unsupported constructs appear in the FROM clause * @throws TableNotFoundException * if table name not found in schema */ public static ColumnResolver getResolverForQuery(SelectStatement statement, PhoenixConnection connection, boolean alwaysHitServer, TableName mutatingTableName) throws SQLException { TableNode fromNode = statement.getFrom(); if (fromNode == null) return EMPTY_TABLE_RESOLVER; if (fromNode instanceof NamedTableNode) return new SingleTableColumnResolver(connection, (NamedTableNode) fromNode, true, 1, statement.getUdfParseNodes(), alwaysHitServer, mutatingTableName); MultiTableColumnResolver visitor = new MultiTableColumnResolver(connection, 1, statement.getUdfParseNodes(), mutatingTableName); fromNode.accept(visitor); return visitor; }
if (fromTable != null) { buf.append(" FROM "); fromTable.toSQL(resolver, buf);
Map<String,ParseNode> aliasMap = rewriter.getAliasMap(); TableNode from = statement.getFrom(); TableNode normFrom = from == null ? null : from.accept(new TableNodeRewriter(rewriter)); ParseNode where = statement.getWhere(); ParseNode normWhere = where;
normSelectNodes = Lists.newArrayList(selectNodes.subList(0, i)); List<TableName> tableNames = statement.getFrom().accept(new TableNameVisitor()); for (TableName tableName : tableNames) { TableWildcardParseNode node = NODE_FACTORY.tableWildcard(tableName);
final SelectStatement select, final Map<TableRef, TableRef> replacement) throws SQLException { TableNode from = select.getFrom(); TableNode newFrom = from.accept(new TableNodeVisitor<TableNode>() { private TableRef resolveTable(String alias, TableName name) throws SQLException { if (alias != null)
public static JoinTable compile(PhoenixStatement statement, SelectStatement select, ColumnResolver resolver) throws SQLException { JoinCompiler compiler = new JoinCompiler(statement, select, resolver); JoinTableConstructor constructor = compiler.new JoinTableConstructor(); Pair<Table, List<JoinSpec>> res = select.getFrom().accept(constructor); JoinTable joinTable = res.getSecond() == null ? compiler.new JoinTable(res.getFirst()) : compiler.new JoinTable(res.getFirst(), res.getSecond()); if (select.getWhere() != null) {