MuhammadTahaNaveed commented on PR #2448:
URL: https://github.com/apache/age/pull/2448#issuecomment-4856755480

   @jrgemignani 
   **GPT 5.5 xhigh review**:
   
     I found one semantic issue with the capture rewrite.
   
     `reduce_capture_mutator()` captures the largest agtype-typed 
outer-reference subtree and
     passes it through the `extras` aggregate argument. That means the captured 
expression is
     evaluated unconditionally as an aggregate argument, before the fold body 
runs. This changes
     short-circuit behavior for `CASE`, `AND`, `OR`, etc.
   
     Repro:
   
     ```sql
     WITH 0 AS z
     RETURN reduce(s = 0, x IN [1] |
       CASE WHEN false THEN s + 1 / z ELSE s END)
   ```
     This currently raises division by zero, even though the branch should not 
be evaluated. The
     same expression without an outer capture returns 0.
   
     I think the capture needs to preserve evaluation order, likely by 
capturing only outer leaf
     values and leaving operators/function calls inside the serialized fold 
expression.
   
     Also, git diff --check apache/master...pr-2448 reports trailing whitespace 
in the newly
     added regress/expected/age_reduce.out lines.
   


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

Reply via email to