somu-imply commented on code in PR #14587:
URL: https://github.com/apache/druid/pull/14587#discussion_r1265824974
##########
processing/src/main/java/org/apache/druid/segment/UnnestStorageAdapter.java:
##########
@@ -366,24 +366,16 @@ void addPreFilter(@Nullable final Filter filter)
final int origFilterSize;
if (queryFilter.getRequiredColumns().contains(outputColumnName)) {
// outside filter contains unnested column
- // requires check for OR
- if (queryFilter instanceof OrFilter) {
- origFilterSize = ((OrFilter) queryFilter).getFilters().size();
- for (Filter filter : ((OrFilter) queryFilter).getFilters()) {
- if (filter.getRequiredColumns().contains(outputColumnName)) {
- final Filter newFilter = rewriteFilterOnUnnestColumnIfPossible(
- filter,
- inputColumn,
- inputColumnCapabilites
- );
- if (newFilter != null) {
- preFilterList.add(newFilter);
- }
- } else {
- preFilterList.add(filter);
- }
- }
- if (preFilterList.size() == origFilterSize) {
+ // requires check for OR and And filters, disqualify rewrite for
non-unnest filters
+ if (queryFilter instanceof BooleanFilter) {
+ origFilterSize = ((BooleanFilter) queryFilter).getFilters().size();
+ recursiveRewriteOnUnnestFilters(
+ (BooleanFilter) queryFilter,
+ preFilterList,
+ inputColumn,
+ inputColumnCapabilites
+ );
+ if (preFilterList.size() >= origFilterSize) {
// there has been successful rewrites
final OrFilter preOrFilter = new OrFilter(preFilterList);
filterSplitter.addPreFilter(preOrFilter);
Review Comment:
There seems to be an issue with the test
`test_pushdown_or_filters_unnested_and_original_dimension_with_unnest_adapters`
as the expected results have changed. I'm going through the code today
--
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]