Repository: phoenix Updated Branches: refs/heads/calcite d3b227a18 -> d561370b3
Fix QueryPlan.getSourceRefs() Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/d561370b Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/d561370b Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/d561370b Branch: refs/heads/calcite Commit: d561370b309c95cdd6423fa39784b86152b7baa3 Parents: d3b227a Author: maryannxue <maryann....@gmail.com> Authored: Fri May 6 10:36:05 2016 -0400 Committer: maryannxue <maryann....@gmail.com> Committed: Fri May 6 10:36:05 2016 -0400 ---------------------------------------------------------------------- .../apache/phoenix/calcite/PhoenixSchema.java | 50 +++++++----- .../apache/phoenix/calcite/PhoenixTable.java | 14 ++-- .../apache/phoenix/calcite/TableMapping.java | 83 +++++++++++--------- .../calcite/rel/PhoenixServerAggregate.java | 2 +- .../phoenix/calcite/rel/PhoenixTableScan.java | 6 +- .../apache/phoenix/execute/AggregatePlan.java | 10 +-- .../apache/phoenix/execute/BaseQueryPlan.java | 4 +- .../phoenix/execute/DegenerateQueryPlan.java | 2 +- .../execute/LiteralResultIterationPlan.java | 2 +- .../org/apache/phoenix/execute/ScanPlan.java | 10 +-- .../phoenix/calcite/ToExpressionTest.java | 4 +- 11 files changed, 108 insertions(+), 79 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java index 683a16b..46bcaa0 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java @@ -60,7 +60,7 @@ public class PhoenixSchema implements Schema { protected final Map<String, Schema> subSchemas; protected final Map<String, Table> tables; protected final Map<String, Function> views; - protected final Set<PTable> viewTables; + protected final Set<TableRef> viewTables; protected PhoenixSchema(String name, String schemaName, SchemaPlus parentSchema, PhoenixConnection pc) { @@ -111,10 +111,10 @@ public class PhoenixSchema implements Schema { ImmutableList.<ColumnDef>of()), pc); final List<TableRef> tables = x.getTables(); assert tables.size() == 1; - PTable pTable = tables.get(0).getTable(); - if (!isView(pTable)) { - pTable = fixTableMultiTenancy(pTable); - table = new PhoenixTable(pc, pTable); + TableRef tableRef = tables.get(0); + if (!isView(tableRef.getTable())) { + tableRef = fixTableMultiTenancy(tableRef); + table = new PhoenixTable(pc, tableRef); } } catch (TableNotFoundException e) { } catch (SQLException e) { @@ -151,7 +151,8 @@ public class PhoenixSchema implements Schema { ImmutableList.<ColumnDef>of()), pc); final List<TableRef> tables = x.getTables(); assert tables.size() == 1; - PTable pTable = tables.get(0).getTable(); + final TableRef tableRef = tables.get(0); + final PTable pTable = tableRef.getTable(); if (isView(pTable)) { String viewSql = pTable.getViewStatement(); if (viewSql == null) { @@ -166,7 +167,7 @@ public class PhoenixSchema implements Schema { CalciteSchema.from(viewSqlSchema).path(null), pTable.getViewType() == ViewType.UPDATABLE); views.put(name, func); - viewTables.add(pTable); + viewTables.add(tableRef); } } catch (TableNotFoundException e) { } catch (SQLException e) { @@ -226,16 +227,23 @@ public class PhoenixSchema implements Schema { try { for (Table table : tables.values()) { if (table instanceof PhoenixTable) { - PTable pTable = ((PhoenixTable) table).tableMapping.getPTable(); - for (PTable index : pTable.getIndexes()) { - addMaterialization(index, path, calciteSchema); + TableRef tableRef = ((PhoenixTable) table).tableMapping.getTableRef(); + for (PTable index : tableRef.getTable().getIndexes()) { + TableRef indexTableRef = new TableRef(null, index, + tableRef.getTimeStamp(), tableRef.getLowerBoundTimeStamp(), + false); + addMaterialization(indexTableRef, path, calciteSchema); } } } - for (PTable pTable : viewTables) { + for (TableRef tableRef : viewTables) { + final PTable pTable = tableRef.getTable(); for (PTable index : pTable.getIndexes()) { if (index.getParentName().equals(pTable.getName())) { - addMaterialization(index, path, calciteSchema); + TableRef indexTableRef = new TableRef(null, index, + tableRef.getTimeStamp(), tableRef.getLowerBoundTimeStamp(), + false); + addMaterialization(indexTableRef, path, calciteSchema); } } } @@ -244,10 +252,11 @@ public class PhoenixSchema implements Schema { } } - private void addMaterialization(PTable index, List<String> path, + private void addMaterialization(TableRef indexTableRef, List<String> path, CalciteSchema calciteSchema) throws SQLException { - index = fixTableMultiTenancy(index); - PhoenixTable table = new PhoenixTable(pc, index); + indexTableRef = fixTableMultiTenancy(indexTableRef); + final PhoenixTable table = new PhoenixTable(pc, indexTableRef); + final PTable index = indexTableRef.getTable(); tables.put(index.getTableName().getString(), table); StringBuffer sb = new StringBuffer(); sb.append("SELECT"); @@ -268,16 +277,19 @@ public class PhoenixSchema implements Schema { && table.getViewType() != ViewType.MAPPED; } - private PTable fixTableMultiTenancy(PTable table) throws SQLException { - if (pc.getTenantId() != null || !table.isMultiTenant()) { - return table; + private TableRef fixTableMultiTenancy(TableRef tableRef) throws SQLException { + if (pc.getTenantId() != null || !tableRef.getTable().isMultiTenant()) { + return tableRef; } - return PTableImpl.makePTable( + PTable table = tableRef.getTable(); + table = PTableImpl.makePTable( table.getTenantId(), table.getSchemaName(), table.getTableName(), table.getType(), table.getIndexState(), table.getTimeStamp(), table.getSequenceNumber(), table.getPKName(), table.getBucketNum(), PTableImpl.getColumnsToClone(table), table.getParentSchemaName(), table.getParentTableName(), table.getIndexes(), table.isImmutableRows(), table.getPhysicalNames(), table.getDefaultFamilyName(), table.getViewStatement(), table.isWALDisabled(), false, table.getStoreNulls(), table.getViewType(), table.getViewIndexId(), table.getIndexType(), table.rowKeyOrderOptimizable(), table.isTransactional(), table.getUpdateCacheFrequency(), table.getTableStats(), table.getBaseColumnCount(), table.getIndexDisableTimestamp()); + return new TableRef(null, table, tableRef.getTimeStamp(), + tableRef.getLowerBoundTimeStamp(), tableRef.hasDynamicCols()); } private PhoenixSequence resolveSequence(String name) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java index 7b5d287..905441f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixTable.java @@ -20,7 +20,6 @@ import org.apache.calcite.schema.TranslatableTable; import org.apache.calcite.schema.impl.AbstractTable; import org.apache.calcite.sql.type.SqlTypeName; import org.apache.calcite.util.ImmutableBitSet; -import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.util.Pair; @@ -42,6 +41,7 @@ import org.apache.phoenix.schema.PTable; import org.apache.phoenix.schema.SortOrder; import org.apache.phoenix.schema.TableRef; import org.apache.phoenix.schema.PTable.IndexType; +import org.apache.phoenix.schema.PTableType; import org.apache.phoenix.schema.stats.StatisticsUtil; import org.apache.phoenix.schema.types.PDataType; import org.apache.phoenix.util.SchemaUtil; @@ -61,10 +61,11 @@ public class PhoenixTable extends AbstractTable implements TranslatableTable { public final long rowCount; public final PhoenixConnection pc; - public PhoenixTable(PhoenixConnection pc, PTable pTable) throws SQLException { + public PhoenixTable(PhoenixConnection pc, TableRef tableRef) throws SQLException { this.pc = Preconditions.checkNotNull(pc); - PTable extendedTable = null; - if (pTable.getIndexType() == IndexType.LOCAL) { + PTable pTable = tableRef.getTable(); + TableRef dataTable = null; + if (pTable.getType() == PTableType.INDEX) { ColumnResolver x = FromCompiler.getResolver( NamedTableNode.create(null, TableName.create(pTable.getParentSchemaName().getString(), @@ -72,9 +73,9 @@ public class PhoenixTable extends AbstractTable implements TranslatableTable { ImmutableList.<ColumnDef>of()), pc); final List<TableRef> tables = x.getTables(); assert tables.size() == 1; - extendedTable = tables.get(0).getTable(); + dataTable = tables.get(0); } - this.tableMapping = extendedTable == null ? new TableMapping(pTable) : new TableMapping(pTable, extendedTable); + this.tableMapping = new TableMapping(tableRef, dataTable, pTable.getIndexType() == IndexType.LOCAL); List<Integer> pkPositions = Lists.<Integer> newArrayList(); List<RelFieldCollation> fieldCollations = Lists.<RelFieldCollation> newArrayList(); final List<PColumn> columns = tableMapping.getMappedColumns(); @@ -90,7 +91,6 @@ public class PhoenixTable extends AbstractTable implements TranslatableTable { this.collation = RelCollationTraitDef.INSTANCE.canonize(RelCollations.of(fieldCollations)); try { PhoenixStatement stmt = new PhoenixStatement(pc); - TableRef tableRef = new TableRef(CalciteUtils.createTempAlias(), pTable, HConstants.LATEST_TIMESTAMP, false); ColumnResolver resolver = FromCompiler.getResolver(tableRef); StatementContext context = new StatementContext(stmt, resolver, new Scan(), new SequenceManager(stmt)); Pair<Long, Long> estimatedCount = BaseResultIterators.getEstimatedCount(context, pTable); http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java index 839370d..ccf460f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java @@ -50,53 +50,62 @@ import com.google.common.collect.Sets; public class TableMapping { private final TableRef tableRef; + private final TableRef dataTableRef; private final List<PColumn> mappedColumns; private final int extendedColumnsOffset; private final TableRef extendedTableRef; public TableMapping(PTable table) { this.tableRef = new TableRef(table); + this.dataTableRef = null; this.mappedColumns = getMappedColumns(table); this.extendedColumnsOffset = mappedColumns.size(); this.extendedTableRef = null; } - public TableMapping(PTable table, PTable dataTable) throws SQLException { - this.tableRef = new TableRef(table); - this.mappedColumns = Lists.newArrayList(); - this.mappedColumns.addAll(getMappedColumns(table)); - this.extendedColumnsOffset = mappedColumns.size(); - Set<String> names = Sets.newHashSet(); - for (PColumn column : this.mappedColumns) { - names.add(column.getName().getString()); - } - TableRef dataTableRef = new TableRef(dataTable); - List<PColumn> projectedColumns = new ArrayList<PColumn>(); - for (PColumn sourceColumn : dataTable.getColumns()) { - if (!SchemaUtil.isPKColumn(sourceColumn)) { - String colName = IndexUtil.getIndexColumnName(sourceColumn); - if (!names.contains(colName)) { - ColumnRef sourceColumnRef = - new ColumnRef(dataTableRef, sourceColumn.getPosition()); - PColumn column = new ProjectedColumn(PNameFactory.newName(colName), - sourceColumn.getFamilyName(), projectedColumns.size(), - sourceColumn.isNullable(), sourceColumnRef); - projectedColumns.add(column); - } - } + public TableMapping(TableRef tableRef, TableRef dataTableRef, boolean extend) throws SQLException { + this.tableRef = tableRef; + this.dataTableRef = dataTableRef; + if (!extend) { + this.mappedColumns = getMappedColumns(tableRef.getTable()); + this.extendedColumnsOffset = mappedColumns.size(); + this.extendedTableRef = null; + } else { + this.mappedColumns = Lists.newArrayList(); + this.mappedColumns.addAll(getMappedColumns(tableRef.getTable())); + this.extendedColumnsOffset = mappedColumns.size(); + Set<String> names = Sets.newHashSet(); + for (PColumn column : this.mappedColumns) { + names.add(column.getName().getString()); + } + PTable dataTable = dataTableRef.getTable(); + List<PColumn> projectedColumns = new ArrayList<PColumn>(); + for (PColumn sourceColumn : dataTable.getColumns()) { + if (!SchemaUtil.isPKColumn(sourceColumn)) { + String colName = IndexUtil.getIndexColumnName(sourceColumn); + if (!names.contains(colName)) { + ColumnRef sourceColumnRef = + new ColumnRef(dataTableRef, sourceColumn.getPosition()); + PColumn column = new ProjectedColumn(PNameFactory.newName(colName), + sourceColumn.getFamilyName(), projectedColumns.size(), + sourceColumn.isNullable(), sourceColumnRef); + projectedColumns.add(column); + } + } + } + this.mappedColumns.addAll(projectedColumns); + PTable extendedTable = PTableImpl.makePTable(dataTable.getTenantId(), + TupleProjectionCompiler.PROJECTED_TABLE_SCHEMA, dataTable.getName(), + PTableType.PROJECTED, null, dataTable.getTimeStamp(), + dataTable.getSequenceNumber(), dataTable.getPKName(), null, + projectedColumns, null, null, Collections.<PTable>emptyList(), + dataTable.isImmutableRows(), Collections.<PName>emptyList(), null, null, + dataTable.isWALDisabled(), false, dataTable.getStoreNulls(), + dataTable.getViewType(), null, null, dataTable.rowKeyOrderOptimizable(), + dataTable.isTransactional(), dataTable.getUpdateCacheFrequency(), + dataTable.getIndexDisableTimestamp()); + this.extendedTableRef = new TableRef(extendedTable); } - this.mappedColumns.addAll(projectedColumns); - PTable extendedTable = PTableImpl.makePTable(dataTable.getTenantId(), - TupleProjectionCompiler.PROJECTED_TABLE_SCHEMA, dataTable.getName(), - PTableType.PROJECTED, null, dataTable.getTimeStamp(), - dataTable.getSequenceNumber(), dataTable.getPKName(), null, - projectedColumns, null, null, Collections.<PTable>emptyList(), - dataTable.isImmutableRows(), Collections.<PName>emptyList(), null, null, - dataTable.isWALDisabled(), false, dataTable.getStoreNulls(), - dataTable.getViewType(), null, null, dataTable.rowKeyOrderOptimizable(), - dataTable.isTransactional(), dataTable.getUpdateCacheFrequency(), - dataTable.getIndexDisableTimestamp()); - this.extendedTableRef = new TableRef(extendedTable); } public TableRef getTableRef() { @@ -107,6 +116,10 @@ public class TableMapping { return tableRef.getTable(); } + public TableRef getDataTableRef() { + return dataTableRef; + } + public List<PColumn> getMappedColumns() { return mappedColumns; } http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java index 65cca2e..4177764 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java @@ -78,7 +78,7 @@ public class PhoenixServerAggregate extends PhoenixAbstractAggregate { GroupBy groupBy = super.getGroupBy(implementor); super.serializeAggregators(implementor, context, groupBy.isEmpty()); - QueryPlan aggPlan = new AggregatePlan(context, basePlan.getStatement(), basePlan.getTableRef(), RowProjector.EMPTY_PROJECTOR, null, null, OrderBy.EMPTY_ORDER_BY, null, groupBy, null, basePlan.getDynamicFilter()); + QueryPlan aggPlan = new AggregatePlan(context, basePlan.getStatement(), basePlan.getTableRef(), basePlan.getSourceRefs().iterator().next(), RowProjector.EMPTY_PROJECTOR, null, null, OrderBy.EMPTY_ORDER_BY, null, groupBy, null, basePlan.getDynamicFilter()); if (hashJoinPlan != null) { aggPlan = HashJoinPlan.create(hashJoinPlan.getStatement(), aggPlan, hashJoinPlan.getJoinInfo(), hashJoinPlan.getSubPlans()); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java index b4d64b1..76e9a4d 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java @@ -46,6 +46,7 @@ import org.apache.phoenix.query.QueryServicesOptions; import org.apache.phoenix.schema.PColumn; import org.apache.phoenix.schema.PName; import org.apache.phoenix.schema.PTable; +import org.apache.phoenix.schema.TableRef; import org.apache.phoenix.schema.types.PDataType; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; @@ -285,7 +286,10 @@ public class PhoenixTableScan extends TableScan implements PhoenixQueryRel { OrderBy.FWD_ROW_KEY_ORDER_BY : OrderBy.REV_ROW_KEY_ORDER_BY); ParallelIteratorFactory iteratorFactory = null; - return new ScanPlan(context, select, tableMapping.getTableRef(), RowProjector.EMPTY_PROJECTOR, null, null, orderBy, iteratorFactory, true, dynamicFilter); + TableRef tableRef = tableMapping.getTableRef(); + TableRef srcRef = tableMapping.getDataTableRef() == null ? + tableRef : tableMapping.getDataTableRef(); + return new ScanPlan(context, select, tableRef, srcRef, RowProjector.EMPTY_PROJECTOR, null, null, orderBy, iteratorFactory, true, dynamicFilter); } catch (SQLException e) { throw new RuntimeException(e); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java index e5ea255..5ab8e3a 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java @@ -79,21 +79,21 @@ public class AggregatePlan extends BaseQueryPlan { private List<List<Scan>> scans; public static AggregatePlan create(AggregatePlan plan, OrderBy newOrderBy) { - return new AggregatePlan(plan.getContext(), plan.getStatement(), plan.getTableRef(), plan.getProjector(), null, null, newOrderBy, plan.parallelIteratorFactory, plan.getGroupBy(), plan.getHaving(), plan.dynamicFilter); + return new AggregatePlan(plan.getContext(), plan.getStatement(), plan.getTableRef(), plan.getSourceRefs().iterator().next(), plan.getProjector(), null, null, newOrderBy, plan.parallelIteratorFactory, plan.getGroupBy(), plan.getHaving(), plan.dynamicFilter); } public AggregatePlan(StatementContext context, FilterableStatement statement, TableRef table, RowProjector projector, Integer limit, Integer offset, OrderBy orderBy, ParallelIteratorFactory parallelIteratorFactory, GroupBy groupBy, Expression having) { - this(context, statement, table, projector, limit, offset, orderBy, parallelIteratorFactory, groupBy, having, + this(context, statement, table, table, projector, limit, offset, orderBy, parallelIteratorFactory, groupBy, having, null); } public AggregatePlan(StatementContext context, FilterableStatement statement, TableRef table, - RowProjector projector, Integer limit, Integer offset, OrderBy orderBy, + TableRef srcRef, RowProjector projector, Integer limit, Integer offset, OrderBy orderBy, ParallelIteratorFactory parallelIteratorFactory, GroupBy groupBy, Expression having, Expression dynamicFilter) { - super(context, statement, table, projector, context.getBindManager().getParameterMetaData(), limit, offset, + super(context, statement, table, srcRef, projector, context.getBindManager().getParameterMetaData(), limit, offset, orderBy, groupBy, parallelIteratorFactory, dynamicFilter); this.having = having; this.aggregators = context.getAggregationManager().getAggregators(); @@ -260,7 +260,7 @@ public class AggregatePlan extends BaseQueryPlan { if (limit == this.limit || (limit != null && limit.equals(this.limit))) return this; - return new AggregatePlan(this.context, this.statement, this.tableRef, this.projection, + return new AggregatePlan(this.context, this.statement, this.tableRef, this.tableRefs.iterator().next(), this.projection, limit, this.offset, this.orderBy, this.parallelIteratorFactory, this.groupBy, this.having, this.dynamicFilter); } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java index c5c9a0e..206a11f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java @@ -112,14 +112,14 @@ public abstract class BaseQueryPlan implements QueryPlan { protected BaseQueryPlan( - StatementContext context, FilterableStatement statement, TableRef table, + StatementContext context, FilterableStatement statement, TableRef table, TableRef srcRef, RowProjector projection, ParameterMetaData paramMetaData, Integer limit, Integer offset, OrderBy orderBy, GroupBy groupBy, ParallelIteratorFactory parallelIteratorFactory, Expression dynamicFilter) { this.context = context; this.statement = statement; this.tableRef = table; - this.tableRefs = ImmutableSet.of(table); + this.tableRefs = ImmutableSet.of(srcRef); this.projection = projection; this.paramMetaData = paramMetaData; this.limit = limit; http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/execute/DegenerateQueryPlan.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/DegenerateQueryPlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/DegenerateQueryPlan.java index dbda84a..8f4711c 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/execute/DegenerateQueryPlan.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/DegenerateQueryPlan.java @@ -38,7 +38,7 @@ import org.apache.phoenix.schema.TableRef; public class DegenerateQueryPlan extends BaseQueryPlan { public DegenerateQueryPlan(StatementContext context, FilterableStatement statement, TableRef table) { - super(context, statement, table, RowProjector.EMPTY_PROJECTOR, PhoenixParameterMetaData.EMPTY_PARAMETER_META_DATA, null,null, OrderBy.EMPTY_ORDER_BY, GroupBy.EMPTY_GROUP_BY, null, null); + super(context, statement, table, table, RowProjector.EMPTY_PROJECTOR, PhoenixParameterMetaData.EMPTY_PARAMETER_META_DATA, null,null, OrderBy.EMPTY_ORDER_BY, GroupBy.EMPTY_GROUP_BY, null, null); context.setScanRanges(ScanRanges.NOTHING); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/execute/LiteralResultIterationPlan.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/LiteralResultIterationPlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/LiteralResultIterationPlan.java index 055c802..63acaff 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/execute/LiteralResultIterationPlan.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/LiteralResultIterationPlan.java @@ -52,7 +52,7 @@ public class LiteralResultIterationPlan extends BaseQueryPlan { public LiteralResultIterationPlan(Iterable<Tuple> tuples, StatementContext context, FilterableStatement statement, TableRef tableRef, RowProjector projection, Integer limit, Integer offset, OrderBy orderBy, ParallelIteratorFactory parallelIteratorFactory) { - super(context, statement, tableRef, projection, context.getBindManager().getParameterMetaData(), limit, offset, orderBy, GroupBy.EMPTY_GROUP_BY, parallelIteratorFactory, null); + super(context, statement, tableRef, tableRef, projection, context.getBindManager().getParameterMetaData(), limit, offset, orderBy, GroupBy.EMPTY_GROUP_BY, parallelIteratorFactory, null); this.tuples = tuples; } http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java index 581dc05..b085f08 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java @@ -83,15 +83,15 @@ public class ScanPlan extends BaseQueryPlan { private boolean allowPageFilter; public static ScanPlan create(ScanPlan plan, OrderBy newOrderBy) throws SQLException { - return new ScanPlan(plan.getContext(), plan.getStatement(), plan.getTableRef(), plan.getProjector(), null, null, newOrderBy, plan.parallelIteratorFactory, plan.allowPageFilter, plan.dynamicFilter); + return new ScanPlan(plan.getContext(), plan.getStatement(), plan.getTableRef(), plan.getSourceRefs().iterator().next(), plan.getProjector(), null, null, newOrderBy, plan.parallelIteratorFactory, plan.allowPageFilter, plan.dynamicFilter); } public ScanPlan(StatementContext context, FilterableStatement statement, TableRef table, RowProjector projector, Integer limit, Integer offset, OrderBy orderBy, ParallelIteratorFactory parallelIteratorFactory, boolean allowPageFilter) throws SQLException { - this(context, statement, table, projector, limit, offset, orderBy, parallelIteratorFactory, allowPageFilter, null); + this(context, statement, table, table, projector, limit, offset, orderBy, parallelIteratorFactory, allowPageFilter, null); } - public ScanPlan(StatementContext context, FilterableStatement statement, TableRef table, RowProjector projector, Integer limit, Integer offset, OrderBy orderBy, ParallelIteratorFactory parallelIteratorFactory, boolean allowPageFilter, Expression dynamicFilter) throws SQLException { - super(context, statement, table, projector, context.getBindManager().getParameterMetaData(), limit,offset, orderBy, GroupBy.EMPTY_GROUP_BY, + public ScanPlan(StatementContext context, FilterableStatement statement, TableRef table, TableRef srcRef, RowProjector projector, Integer limit, Integer offset, OrderBy orderBy, ParallelIteratorFactory parallelIteratorFactory, boolean allowPageFilter, Expression dynamicFilter) throws SQLException { + super(context, statement, table, srcRef, projector, context.getBindManager().getParameterMetaData(), limit,offset, orderBy, GroupBy.EMPTY_GROUP_BY, parallelIteratorFactory != null ? parallelIteratorFactory : buildResultIteratorFactory(context, statement, table, orderBy, limit, offset, allowPageFilter), dynamicFilter); this.allowPageFilter = allowPageFilter; @@ -271,7 +271,7 @@ public class ScanPlan extends BaseQueryPlan { return this; try { - return new ScanPlan(this.context, this.statement, this.tableRef, this.projection, + return new ScanPlan(this.context, this.statement, this.tableRef, this.tableRefs.iterator().next(), this.projection, limit, this.offset, this.orderBy, this.parallelIteratorFactory, this.allowPageFilter, this.dynamicFilter); } catch (SQLException e) { throw new RuntimeException(e); http://git-wip-us.apache.org/repos/asf/phoenix/blob/d561370b/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java b/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java index e49df4a..5917617 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/calcite/ToExpressionTest.java @@ -40,7 +40,7 @@ import org.apache.phoenix.query.BaseConnectionlessQueryTest; import org.apache.phoenix.schema.PName; import org.apache.phoenix.schema.PTable; import org.apache.phoenix.schema.PTableKey; - +import org.apache.phoenix.schema.TableRef; import org.junit.Test; @@ -167,7 +167,7 @@ public class ToExpressionTest extends BaseConnectionlessQueryTest { PTable table = rootTables.get(name); try { - return new PhoenixTable(pc, table); + return new PhoenixTable(pc, new TableRef(table)); } catch (SQLException e) { throw new RuntimeException(e); }