/** * Returns the partition function for the given column, null if there isn't one. * * @param column Column for which to return the partition function. * @return Partition function for the column. */ @Nullable public String getFunctionName(@Nonnull String column) { ColumnPartitionConfig columnPartitionConfig = _columnPartitionMap.get(column); return (columnPartitionConfig != null) ? columnPartitionConfig.getFunctionName() : null; }
private SegmentPartitionMetadata getPartitionMetadataFromTableConfig(String tableName, int numPartitions, int partitionId) { Map<String, ColumnPartitionMetadata> partitionMetadataMap = new HashMap<>(); if (_propertyStore == null) { return null; } TableConfig tableConfig = getRealtimeTableConfig(tableName); SegmentPartitionMetadata partitionMetadata = null; SegmentPartitionConfig partitionConfig = tableConfig.getIndexingConfig().getSegmentPartitionConfig(); if (partitionConfig != null && partitionConfig.getColumnPartitionMap() != null && partitionConfig.getColumnPartitionMap().size() > 0) { Map<String, ColumnPartitionConfig> columnPartitionMap = partitionConfig.getColumnPartitionMap(); for (Map.Entry<String, ColumnPartitionConfig> entry : columnPartitionMap.entrySet()) { String column = entry.getKey(); ColumnPartitionConfig columnPartitionConfig = entry.getValue(); partitionMetadataMap.put(column, new ColumnPartitionMetadata(columnPartitionConfig.getFunctionName(), numPartitions, Collections.singleton(partitionId))); } partitionMetadata = new SegmentPartitionMetadata(partitionMetadataMap); } return partitionMetadata; }
public RealtimeColumnStatistics(ColumnDataSource dataSource, int[] sortedDocIdIterationOrder, ColumnPartitionConfig columnPartitionConfig) { _dataSource = dataSource; _sortedDocIdIterationOrder = sortedDocIdIterationOrder; _dictionaryReader = (MutableDictionary) dataSource.getDictionary(); _block = dataSource.nextBlock(); if (columnPartitionConfig != null) { String functionName = columnPartitionConfig.getFunctionName(); _numPartitions = columnPartitionConfig.getNumPartitions(); _partitionFunction = (functionName != null) ? PartitionFunctionFactory.getPartitionFunction(functionName, _numPartitions) : null; if (_partitionFunction != null) { // Iterate over the dictionary to check the partitioning _partitions = new HashSet<>(); int length = _dictionaryReader.length(); for (int i = 0; i < length; i++) { _partitions.add(_partitionFunction.getPartition(_dictionaryReader.get(i))); } } } }
ColumnPartitionConfig actualColumnConfig = entry.getValue(); assertEquals(actualColumnConfig.getFunctionName(), expectedColumnConfig.getFunctionName());