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

   When a CTE has multiple consumers requiring different column subsets, the 
producer's shared-scan output is pruned to the union of all consumers' required 
columns (CTranslatorDXLToExpr::PruneCTEs). But each consumer independently 
decided its own output columns in CPhysicalCTEConsumer from its own per-column 
GetUsage(). A consumer that considers all of its columns used (e.g. SELECT a.*) 
kept every column with an identity index map, while the producer emitted only 
the pruned union. The consumer then read the shared tuple by stale positions, 
producing wrong results (a join key read from the wrong slot -> LEFT JOIN 
yields NULLs) and "invalid attnum N for relation shareX_refY" during EXPLAIN.
   
   Drive the consumer's kept columns from the producer's finalized used mask 
(CLogicalCTEProducer::UsedMask) -- the single source of truth -- so every 
consumer exposes exactly the producer's surviving columns. When the producer 
was not pruned the mask is NULL and behavior is unchanged.
   
   Add a regression test (cte_prune_multi_consumer) covering multi-consumer 
CTEs where a SELECT * consumer is referenced directly with a join key. It 
asserts the EXPLAIN no longer errors and returns correct results; the ORCA path 
is exercised with shared scans and matches the Postgres planner.
   
   (cherry picked from commit 3d1c8cdf79af159e82cf22c0f08b1f343996efe8)
   
   
   Fixes #1900 
   
   ### 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
   <!-- Any other information that would help reviewers? Remove if none -->
   
   ### 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