FrankChen021 commented on code in PR #19704:
URL: https://github.com/apache/druid/pull/19704#discussion_r3614170348
##########
indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskRunner.java:
##########
@@ -747,13 +755,17 @@ public void run()
dim,
k -> Collections.synchronizedSet(new HashSet<>())
);
- // Empty getDimension result means a null/missing value;
record null so IS NULL is not pruned
- // (distinct from "", which getDimension returns as [""
]).
- final List<String> dimValues = row.getDimension(dim);
- if (dimValues == null || dimValues.isEmpty()) {
- dimSet.add(null);
+ if (longPartitionDimensions.contains(dim)) {
+ dimSet.add(canonicalLongValue(row.getRaw(dim), dim));
Review Comment:
[P1] Disable legacy string pruning for stamped LONG dimensions
Canonicalizing raw `"00001"` or `"+1"` to `"1"` is correct for the new typed
domain, but the dimension still passes through `possibleInDomain` first. A
native `SelectorDimFilter("code", "00001", ...)` matches indexed LONG `1`
through runtime numeric coercion, while its range set remains literal
`"00001"`. The range check therefore sees no overlap with stamped `"1"` and
prunes the segment before typed pruning runs, dropping valid rows. Exclude
type-stamped LONG dimensions from the legacy string/range channel, or safely
canonicalize that channel, and add a regression test for noncanonical string
selectors.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]