ankitsultana opened a new issue, #16821:
URL: https://github.com/apache/pinot/issues/16821

   It seems like we are no longer simplifying `IS NULL / IS NOT NULL` 
predicates in the MSE optimizer anymore.
   
   Testing with this query:
   
   ```
   SET useMultistageEngine=true;
   
   explain plan for select * from userAttributes 
     where deviceOS IS NULL
   limit 10
   ```
   
   With Pinot 1.3.0 Docker image, we get this plan, which is what I would 
expect with the null settings in the Quickstart (no column level null handling 
enabled)
   
   ```
   Execution Plan
   LogicalValues(tuples=[[]])
   ```
   
   With latest Docker image, I am getting:
   
   ```
   Execution Plan
   LogicalSort(offset=[0], fetch=[10])
     PinotLogicalSortExchange(distribution=[hash], collation=[[]], 
isSortOnSender=[false], isSortOnReceiver=[false])
       LogicalSort(fetch=[10])
         LogicalProject(daysSinceFirstTrip=[$4], deviceOS=[$5], 
totalTrips=[$6], userUUID=[$7])
           LogicalFilter(condition=[IS NULL($5)])
             PinotLogicalTableScan(table=[[default, userAttributes]])
   ```
   
   I think this is a breaking change because if null vectors are enabled, the 
nullability filter will be evaluated with latest Pinot but it wasn't getting 
evaluated with Pinot 1.3.0
   
   cc: @yashmayya 


-- 
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]

Reply via email to