public void computePartitionList(HiveConf conf, RexNode pruneNode, Set<Integer> partOrVirtualCols) { try { if (!hiveTblMetadata.isPartitioned() || pruneNode == null || InputFinder.bits(pruneNode).length() == 0) { // there is no predicate on partitioning column, we need all partitions // in this case. partitionList = PartitionPruner.prune(hiveTblMetadata, null, conf, getName(), partitionCache); return; } // We have valid pruning expressions, only retrieve qualifying partitions ExprNodeDesc pruneExpr = pruneNode.accept(new ExprNodeConverter(getName(), getRowType(), partOrVirtualCols, this.getRelOptSchema().getTypeFactory())); partitionList = PartitionPruner.prune(hiveTblMetadata, pruneExpr, conf, getName(), partitionCache); } catch (HiveException he) { throw new RuntimeException(he); } }
dataSource, RelDataTypeImpl.proto(rowType), metrics, DruidTable.DEFAULT_TIMESTAMP_COLUMN, intervals, null, null); optTable = new RelOptHiveTable(relOptSchema, relOptSchema.getTypeFactory(), fullyQualifiedTabName, rowType, tabMetaData, nonPartitionColumns, partitionColumns, virtualCols, conf, partitionCache, colStatsCache, noColsMissingStats); optTable, druidTable, ImmutableList.of(scan), DruidSqlOperatorConverter.getDefaultMap()); } else { optTable = new RelOptHiveTable(relOptSchema, relOptSchema.getTypeFactory(), fullyQualifiedTabName, rowType, tabMetaData, nonPartitionColumns, partitionColumns, virtualCols, conf, partitionCache, colStatsCache, noColsMissingStats); optTable = new RelOptHiveTable(relOptSchema, relOptSchema.getTypeFactory(), fullyQualifiedTabName, rowType, tabMetaData, nonPartitionColumns, partitionColumns, virtualCols, conf, partitionCache, colStatsCache, noColsMissingStats);
public final RelOptTable extend(List<RelDataTypeField> extendedFields) { final Table table = unwrap(Table.class); // Get the set of extended columns that do not have the same name as a column // in the base table. final List<RelDataTypeField> baseColumns = getRowType().getFieldList(); final List<RelDataTypeField> dedupedFields = RelOptUtil.deduplicateColumns(baseColumns, extendedFields); final List<RelDataTypeField> dedupedExtendedFields = dedupedFields.subList(baseColumns.size(), dedupedFields.size()); if (table instanceof ExtensibleTable) { final Table extendedTable = ((ExtensibleTable) table).extend(dedupedExtendedFields); return extend(extendedTable); } else if (table instanceof ModifiableViewTable) { final ModifiableViewTable modifiableViewTable = (ModifiableViewTable) table; final ModifiableViewTable extendedView = modifiableViewTable.extend(dedupedExtendedFields, getRelOptSchema().getTypeFactory()); return extend(extendedView); } throw new RuntimeException("Cannot extend " + table); }
/** Returns the row type of a table after any {@link ColumnStrategy#VIRTUAL} * columns have been removed. This is the type of the records that are * actually stored. */ public static RelDataType realRowType(RelOptTable table) { final RelDataType rowType = table.getRowType(); final List<ColumnStrategy> strategies = columnStrategies(table); if (!strategies.contains(ColumnStrategy.VIRTUAL)) { return rowType; } final RelDataTypeFactory.Builder builder = table.getRelOptSchema().getTypeFactory().builder(); for (RelDataTypeField field : rowType.getFieldList()) { if (strategies.get(field.getIndex()) != ColumnStrategy.VIRTUAL) { builder.add(field); } } return builder.build(); }
public final RelOptTable extend(List<RelDataTypeField> extendedFields) { final Table table = unwrap(Table.class); // Get the set of extended columns that do not have the same name as a column // in the base table. final List<RelDataTypeField> baseColumns = getRowType().getFieldList(); final List<RelDataTypeField> dedupedFields = RelOptUtil.deduplicateColumns(baseColumns, extendedFields); final List<RelDataTypeField> dedupedExtendedFields = dedupedFields.subList(baseColumns.size(), dedupedFields.size()); if (table instanceof ExtensibleTable) { final Table extendedTable = ((ExtensibleTable) table).extend(dedupedExtendedFields); return extend(extendedTable); } else if (table instanceof ModifiableViewTable) { final ModifiableViewTable modifiableViewTable = (ModifiableViewTable) table; final ModifiableViewTable extendedView = modifiableViewTable.extend(dedupedExtendedFields, getRelOptSchema().getTypeFactory()); return extend(extendedView); } throw new RuntimeException("Cannot extend " + table); }
@Override protected RelOptTable extend(Table extendedTable) { final RelDataType extendedRowType = extendedTable.getRowType(getRelOptSchema().getTypeFactory()); return new RelOptTableImpl(getRelOptSchema(), extendedRowType, getQualifiedName(), extendedTable, expressionFunction, getRowCount()); }
/** Returns the row type of a table after any {@link ColumnStrategy#VIRTUAL} * columns have been removed. This is the type of the records that are * actually stored. */ public static RelDataType realRowType(RelOptTable table) { final RelDataType rowType = table.getRowType(); final List<ColumnStrategy> strategies = columnStrategies(table); if (!strategies.contains(ColumnStrategy.VIRTUAL)) { return rowType; } final RelDataTypeFactory.Builder builder = table.getRelOptSchema().getTypeFactory().builder(); for (RelDataTypeField field : rowType.getFieldList()) { if (strategies.get(field.getIndex()) != ColumnStrategy.VIRTUAL) { builder.add(field); } } return builder.build(); }
@Override protected RelOptTable extend(Table extendedTable) { final RelDataType extendedRowType = extendedTable.getRowType(getRelOptSchema().getTypeFactory()); return new RelOptTableImpl(getRelOptSchema(), extendedRowType, getQualifiedName(), extendedTable, expressionFunction, getRowCount()); }
public void computePartitionList(HiveConf conf, RexNode pruneNode) { try { if (!hiveTblMetadata.isPartitioned() || pruneNode == null || InputFinder.bits(pruneNode).length() == 0) { // there is no predicate on partitioning column, we need all partitions // in this case. partitionList = PartitionPruner.prune(hiveTblMetadata, null, conf, getName(), partitionCache); return; } // We have valid pruning expressions, only retrieve qualifying partitions ExprNodeDesc pruneExpr = pruneNode.accept(new ExprNodeConverter(getName(), getRowType(), HiveCalciteUtil.getInputRefs(pruneNode), this.getRelOptSchema().getTypeFactory())); partitionList = PartitionPruner.prune(hiveTblMetadata, pruneExpr, conf, getName(), partitionCache); } catch (HiveException he) { throw new RuntimeException(he); } }
public RelOptTable extend(List<RelDataTypeField> extendedFields) { final RelDataType extendedRowType = getRelOptSchema().getTypeFactory().builder() .addAll(rowType.getFieldList()) .addAll(extendedFields) .build(); return new MockColumnSet(names, extendedRowType, collationList); } }
public RelOptTable extend(List<RelDataTypeField> extendedFields) { final RelDataType extendedRowType = getRelOptSchema().getTypeFactory().builder() .addAll(rowType.getFieldList()) .addAll(extendedFields) .build(); return new MockColumnSet(names, extendedRowType, collationList); } }