@Override protected R visitTableSubquery(TableSubquery node, C context) { return process(node.getQuery(), context); }
public static Relation subquery(Query query) { return new TableSubquery(query); }
@Override protected RelationPlan visitTableSubquery(TableSubquery node, Void context) { return process(node.getQuery(), context); }
@Override public Node visitShowStatsForQuery(SqlBaseParser.ShowStatsForQueryContext context) { QuerySpecification specification = (QuerySpecification) visitQuerySpecification(context.querySpecification()); Query query = new Query(Optional.empty(), specification, Optional.empty(), Optional.empty()); return new ShowStats(Optional.of(getLocation(context)), new TableSubquery(query)); }
@Override protected Void visitTableSubquery(TableSubquery node, Integer indent) { builder.append('(') .append('\n'); process(node.getQuery(), indent + 1); append(indent, ") "); return null; }
@Override public Node visitSubquery(SqlBaseParser.SubqueryContext context) { return new TableSubquery(getLocation(context), (Query) visit(context.queryNoWith())); }
@Override protected Scope visitTableSubquery(TableSubquery node, Optional<Scope> scope) { StatementAnalyzer analyzer = new StatementAnalyzer(analysis, metadata, sqlParser, accessControl, session, WarningCollector.NOOP); Scope queryScope = analyzer.analyze(node.getQuery(), scope); return createAndAssignScope(node, scope, queryScope.getRelationType()); }
@Override public Node visitSubqueryRelation(SqlBaseParser.SubqueryRelationContext context) { return new TableSubquery(getLocation(context), (Query) visit(context.query())); }
@Override protected Node visitShowStats(ShowStats node, Void context) { checkState(queryExplainer.isPresent(), "Query explainer must be provided for SHOW STATS SELECT"); if (node.getRelation() instanceof TableSubquery) { Query query = ((TableSubquery) node.getRelation()).getQuery(); QuerySpecification specification = (QuerySpecification) query.getQueryBody(); Plan plan = queryExplainer.get().getLogicalPlan(session, new Query(Optional.empty(), specification, Optional.empty(), Optional.empty()), parameters, warningCollector); validateShowStatsSubquery(node, query, specification, plan); Table table = (Table) specification.getFrom().get(); Constraint<ColumnHandle> constraint = getConstraint(plan); return rewriteShowStats(node, table, constraint); } else if (node.getRelation() instanceof Table) { Table table = (Table) node.getRelation(); return rewriteShowStats(node, table, Constraint.alwaysTrue()); } else { throw new IllegalArgumentException("Expected either TableSubquery or Table as relation"); } }
query.getColumnNames().ifPresent(columnNames -> appendAliasColumns(builder, columnNames)); builder.append(" AS "); process(new TableSubquery(query.getQuery()), indent); builder.append('\n'); if (queries.hasNext()) {
@Override protected Void visitTableSubquery(TableSubquery node, Integer indent) { builder.append('(') .append('\n'); process(node.getQuery(), indent + 1); append(indent, ") "); return null; }
private ShowStats createShowStats(QualifiedName name, List<SelectItem> selects, Optional<Expression> where) { return new ShowStats( new TableSubquery(simpleQuery(new Select(false, selects), new Table(name), where, Optional.empty()))); }
@Override protected R visitTableSubquery(TableSubquery node, C context) { return process(node.getQuery(), context); }
query.getColumnNames().ifPresent(columnNames -> appendAliasColumns(builder, columnNames)); builder.append(" AS "); process(new TableSubquery(query.getQuery()), indent); builder.append('\n'); if (queries.hasNext()) {
@Override protected RelationPlan visitTableSubquery(TableSubquery node, Void context) { return process(node.getQuery(), context); }
public static Relation subquery(Query query) { return new TableSubquery(query); }
@Override protected R visitTableSubquery(TableSubquery node, C context) { return process(node.getQuery(), context); }
public static Relation subquery(Query query) { return new TableSubquery(query); }
@Override protected Void visitTableSubquery(TableSubquery node, Integer indent) { builder.append('(') .append('\n'); process(node.getQuery(), indent + 1); append(indent, ") "); return null; }
@Override public Node visitShowStatsForQuery(SqlBaseParser.ShowStatsForQueryContext context) { QuerySpecification specification = (QuerySpecification) visitQuerySpecification(context.querySpecification()); Query query = new Query(Optional.empty(), specification, Optional.empty(), Optional.empty()); return new ShowStats(Optional.of(getLocation(context)), new TableSubquery(query)); }