diff --git a/processing/src/main/java/org/apache/druid/segment/DimensionDictionarySelector.java b/processing/src/main/java/org/apache/druid/segment/DimensionDictionarySelector.java index a02c025b4b8..10cb4668535 100644 --- a/processing/src/main/java/org/apache/druid/segment/DimensionDictionarySelector.java +++ b/processing/src/main/java/org/apache/druid/segment/DimensionDictionarySelector.java @@ -47,7 +47,12 @@ public interface DimensionDictionarySelector * dimension selector has no dictionary, and avoid storing ids, calling "lookupId", or calling "lookupName" * outside of the context of operating on a single row. * - * @return the value cardinality, or -1 if unknown. + * If cardinality is known then it is assumed that underlying dictionary is lexicographically sorted by the encoded + * value. + * For example if there are values "A" , "B" , "C" in a column with cardinality 3 then it is assumed that + * id("A") < id("B") < id("C") + * + * @return the value cardinality, or {@link DimensionDictionarySelector#CARDINALITY_UNKNOWN} if unknown. */ int getValueCardinality(); diff --git a/processing/src/main/java/org/apache/druid/segment/column/StringDictionaryEncodedColumn.java b/processing/src/main/java/org/apache/druid/segment/column/StringDictionaryEncodedColumn.java index a76cc8a2140..c08a2db7a2a 100644 --- a/processing/src/main/java/org/apache/druid/segment/column/StringDictionaryEncodedColumn.java +++ b/processing/src/main/java/org/apache/druid/segment/column/StringDictionaryEncodedColumn.java @@ -121,6 +121,14 @@ public class StringDictionaryEncodedColumn implements DictionaryEncodedColumn