yjhjstz opened a new pull request, #1920:
URL: https://github.com/apache/cloudberry/pull/1920

   There is a crash when use mode() for ORCA.
   ```
   $ psql
   gpadmin=# create table test_mode (a int, b text);
   CREATE TABLE
   gpadmin=# explain select mode() within group (order by b) from test_mode 
limit 10;
   server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
   The connection to the server was lost. Attempting reset: Failed.
   !> \q
   
   ```
   
   Reason: CUtils::FHasOrderedAggToSplit() unconditionally dereferenced the 
direct-args child of an ordered-set aggregate. That child exists but is empty 
for mode(), the only built-in ordered-set aggregate with no direct argument, so 
the access tripped a GPOS_ASSERT in debug builds and caused a SIGSEGV in 
release builds during ORCA query preprocessing.
   
   Guard the ordered aggregate child accesses and bail out early when the args, 
direct-args, or order children are empty. This leaves mode() as a regular 
ordered-set Aggref for ORCA to plan, instead of trying to split it into the 
gp_percentile-specific rewrite.
   
   Add sql regress cases covering mode().
   
   Fixes #ISSUE_Number
   
   ### What does this PR do?
   <!-- Brief overview of the changes, including any major features or fixes -->
   
   ### Type of Change
   - [ ] Bug fix (non-breaking change)
   - [ ] New feature (non-breaking change)
   - [ ] Breaking change (fix or feature with breaking changes)
   - [ ] Documentation update
   
   ### Breaking Changes
   <!-- Remove if not applicable. If yes, explain impact and migration path -->
   
   ### Test Plan
   <!-- How did you test these changes? -->
   - [ ] Unit tests added/updated
   - [ ] Integration tests added/updated
   - [ ] Passed `make installcheck`
   - [ ] Passed `make -C src/test installcheck-cbdb-parallel`
   
   ### Impact
   <!-- Remove sections that don't apply -->
   **Performance:**
   <!-- Any performance implications? -->
   
   **User-facing changes:**
   <!-- Any changes visible to users? -->
   
   **Dependencies:**
   <!-- New dependencies or version changes? -->
   
   ### Checklist
   - [ ] Followed [contribution 
guide](https://cloudberry.apache.org/contribute/code)
   - [ ] Added/updated documentation
   - [ ] Reviewed code for security implications
   - [ ] This PR contains AI-assisted code generation
   - [ ] Requested review from [cloudberry 
committers](https://github.com/orgs/apache/teams/cloudberry-committers)
   
   ### Additional Context
   port from 
https://github.com/warehouse-pg/warehouse-pg/commit/123df9b1a512f2abf5e9836be2915a410959a6e3
   ### CI Skip Instructions
   <!--
   To skip CI builds, add the appropriate CI skip identifier to your PR title.
   The identifier must:
   - Be in square brackets []
   - Include the word "ci" and either "skip" or "no"
   - Only use for documentation-only changes or when absolutely necessary
   -->
   
   ---
   <!-- Join our community:
   - Mailing list: 
[[email protected]](https://lists.apache.org/[email protected])
 (subscribe: [email protected])
   - Discussions: https://github.com/apache/cloudberry/discussions -->
   


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