pranavbhole commented on code in PR #14587:
URL: https://github.com/apache/druid/pull/14587#discussion_r1264285190
##########
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:
you are previously this code was dealign with only OR filters, we need to
change the final filter based on type. I Need refactor the code to create new
PreFilterList.
--
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]