public static DataMapWrapperSimpleInfo fromDataMapWrapper(DataMapExprWrapper dataMapExprWrapper) { if (dataMapExprWrapper instanceof DataMapExprWrapperImpl) { return new DataMapWrapperSimpleInfo( ((DataMapExprWrapperImpl) dataMapExprWrapper).getDataMapSchema()); } else if (dataMapExprWrapper instanceof AndDataMapExprWrapper) { return new DataMapWrapperSimpleInfo(WrapperType.AND, fromDataMapWrapper(dataMapExprWrapper.getLeftDataMapWrapper()), fromDataMapWrapper(dataMapExprWrapper.getRightDataMapWrapprt())); } else { return new DataMapWrapperSimpleInfo(WrapperType.OR, fromDataMapWrapper(dataMapExprWrapper.getLeftDataMapWrapper()), fromDataMapWrapper(dataMapExprWrapper.getRightDataMapWrapprt())); } }
@Override public FilterResolverIntf getFilterResolverIntf(String uniqueId) { FilterResolverIntf leftExp = left.getFilterResolverIntf(uniqueId); FilterResolverIntf rightExp = right.getFilterResolverIntf(uniqueId); if (leftExp != null) { return leftExp; } else if (rightExp != null) { return rightExp; } return null; }
@Override public String toString() { return "DatamapWrapperSchema: Name->" + getDataMapWrapperName() + ", Provider->" + getDataMapWrapperProvider(); } }
@Override public List<ExtendedBlocklet> prune(List<Segment> segments, List<PartitionSpec> partitionsToPrune) throws IOException { List<ExtendedBlocklet> leftPrune = left.prune(segments, partitionsToPrune); List<ExtendedBlocklet> rightPrune = right.prune(segments, partitionsToPrune); List<ExtendedBlocklet> andBlocklets = new ArrayList<>(); for (ExtendedBlocklet blocklet : leftPrune) { if (rightPrune.contains(blocklet)) { andBlocklets.add(blocklet); } } return andBlocklets; }
@Override public List<DataMapDistributableWrapper> toDistributable(List<Segment> segments) throws IOException { List<DataMapDistributableWrapper> wrappers = new ArrayList<>(); wrappers.addAll(left.toDistributable(segments)); wrappers.addAll(right.toDistributable(segments)); return wrappers; }
/** * Get all datamaps of the table for clearing purpose */ public DataMapExprWrapper getAllDataMapsForClear(CarbonTable carbonTable) throws IOException { List<TableDataMap> allDataMapFG = DataMapStoreManager.getInstance().getAllDataMap(carbonTable); DataMapExprWrapper initialExpr = null; if (allDataMapFG.size() > 0) { initialExpr = new DataMapExprWrapperImpl(allDataMapFG.get(0), null); for (int i = 1; i < allDataMapFG.size(); i++) { initialExpr = new AndDataMapExprWrapper(initialExpr, new DataMapExprWrapperImpl(allDataMapFG.get(i), null), null); } } return initialExpr; }
@Override public DataMapLevel getDataMapLevel() { return left.getDataMapLevel(); }
@Override public List<ExtendedBlocklet> pruneBlocklets(List<ExtendedBlocklet> blocklets) throws IOException { List<ExtendedBlocklet> leftPrune = left.pruneBlocklets(blocklets); List<ExtendedBlocklet> rightPrune = right.pruneBlocklets(blocklets); List<ExtendedBlocklet> andBlocklets = new ArrayList<>(); for (ExtendedBlocklet blocklet : leftPrune) { if (rightPrune.contains(blocklet)) { andBlocklets.add(blocklet); } } return andBlocklets; }
public String getDataMapWrapperProvider() { if (WrapperType.PRIMITIVE == wrapperType) { return schema.getProviderName(); } else { return String.format("%s(%s, %s)", wrapperType, left.getDataMapWrapperProvider(), right.getDataMapWrapperProvider()); } }
public String getDataMapWrapperName() { if (WrapperType.PRIMITIVE == wrapperType) { return schema.getDataMapName(); } else { return String.format("%s(%s, %s)", wrapperType, left.getDataMapWrapperName(), right.getDataMapWrapperName()); } }
@Override public List<DataMapDistributableWrapper> toDistributable(List<Segment> segments) throws IOException { List<DataMapDistributable> dataMapDistributables = dataMap.toDistributable(segments); List<DataMapDistributableWrapper> wrappers = new ArrayList<>(); for (DataMapDistributable distributable : dataMapDistributables) { wrappers.add(new DataMapDistributableWrapper(uniqueId, distributable)); } return wrappers; }
/** * Returns default blocklet datamap * @param carbonTable * @param resolverIntf * @return */ public static DataMapExprWrapper getDefaultDataMap(CarbonTable carbonTable, FilterResolverIntf resolverIntf) { // Return the default datamap if no other datamap exists. return new DataMapExprWrapperImpl( DataMapStoreManager.getInstance().getDefaultDataMap(carbonTable), resolverIntf); }
@Override public List<ExtendedBlocklet> prune(DataMapDistributable distributable, List<PartitionSpec> partitionsToPrune) throws IOException { List<ExtendedBlocklet> leftPrune = left.prune(distributable, partitionsToPrune); List<ExtendedBlocklet> rightPrune = right.prune(distributable, partitionsToPrune); List<ExtendedBlocklet> andBlocklets = new ArrayList<>(); for (ExtendedBlocklet blocklet : leftPrune) { if (rightPrune.contains(blocklet)) { andBlocklets.add(blocklet); } } return andBlocklets; }
@Override public List<DataMapDistributableWrapper> toDistributable(List<Segment> segments) throws IOException { List<DataMapDistributableWrapper> wrappers = new ArrayList<>(); wrappers.addAll(left.toDistributable(segments)); wrappers.addAll(right.toDistributable(segments)); return wrappers; }
@Override public FilterResolverIntf getFilterResolverIntf(String uniqueId) { FilterResolverIntf leftExp = left.getFilterResolverIntf(uniqueId); FilterResolverIntf rightExp = right.getFilterResolverIntf(uniqueId); if (leftExp != null) { return leftExp; } else if (rightExp != null) { return rightExp; } return null; }
@Override public DataMapLevel getDataMapLevel() { return left.getDataMapLevel(); }
@Override public List<ExtendedBlocklet> pruneBlocklets(List<ExtendedBlocklet> blocklets) throws IOException { List<ExtendedBlocklet> leftPrune = left.pruneBlocklets(blocklets); List<ExtendedBlocklet> rightPrune = right.pruneBlocklets(blocklets); Set<ExtendedBlocklet> andBlocklets = new HashSet<>(); andBlocklets.addAll(leftPrune); andBlocklets.addAll(rightPrune); return new ArrayList<>(andBlocklets); }
@Override public List<ExtendedBlocklet> prune(DataMapDistributable distributable, List<PartitionSpec> partitionsToPrune) throws IOException { List<ExtendedBlocklet> leftPrune = left.prune(distributable, partitionsToPrune); List<ExtendedBlocklet> rightPrune = right.prune(distributable, partitionsToPrune); Set<ExtendedBlocklet> andBlocklets = new HashSet<>(); andBlocklets.addAll(leftPrune); andBlocklets.addAll(rightPrune); return new ArrayList<>(andBlocklets); }
@Override public List<InputSplit> getSplits(JobContext job) throws IOException { List<DataMapDistributableWrapper> distributables = dataMapExprWrapper.toDistributable(validSegments); List<InputSplit> inputSplits = new ArrayList<>(distributables.size()); inputSplits.addAll(distributables); return inputSplits; }
@Override public List<ExtendedBlocklet> prune(List<Segment> segments, List<PartitionSpec> partitionsToPrune) throws IOException { List<ExtendedBlocklet> leftPrune = left.prune(segments, partitionsToPrune); List<ExtendedBlocklet> rightPrune = right.prune(segments, partitionsToPrune); Set<ExtendedBlocklet> andBlocklets = new HashSet<>(); andBlocklets.addAll(leftPrune); andBlocklets.addAll(rightPrune); return new ArrayList<>(andBlocklets); }