return DimensionSelector.constant(baseSelector.getObject().asString(), extractionFn); } else if (baseSelector instanceof NilColumnValueSelector) { return DimensionSelector.constant(null); } else if (extractionFn == null) { class DefaultExpressionDimensionSelector extends BaseSingleValueDimensionSelector
private DimensionSelector makeDimensionSelectorUndecorated(DimensionSpec dimensionSpec) { final String dimension = dimensionSpec.getDimension(); final ExtractionFn extractionFn = dimensionSpec.getExtractionFn(); if (dimension.equals(ColumnHolder.TIME_COLUMN_NAME)) { return new SingleScanTimeDimensionSelector(makeColumnValueSelector(dimension), extractionFn, descending); } final IncrementalIndex.DimensionDesc dimensionDesc = index.getDimension(dimensionSpec.getDimension()); if (dimensionDesc == null) { // not a dimension, column may be a metric ColumnCapabilities capabilities = getColumnCapabilities(dimension); if (capabilities == null) { return DimensionSelector.constant(null, extractionFn); } if (capabilities.getType().isNumeric()) { return capabilities.getType().makeNumericWrappingDimensionSelector( makeColumnValueSelector(dimension), extractionFn ); } // if we can't wrap the base column, just return a column of all nulls return DimensionSelector.constant(null, extractionFn); } else { final DimensionIndexer indexer = dimensionDesc.getIndexer(); return indexer.makeDimensionSelector(dimensionSpec, rowHolder, dimensionDesc); } }