Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1031
What does this PR do?
If the current GDD is closed and there is a
forupdate
statement, ORCA and planner does not need to generate aLockRows
operator, expect the table is foreign table. However, if the current GDD is enabled, ORCA will generate a plan without theLockRows
operator, which is a wrong plan.Supporting locking clauses in ORCA is a very difficult thing. Because ORCA does not fill
root->glob->paramExecTypes
in every operator, even if ORCA generates theLockRows
operator, it may not working in the executor. For details, please refer to the EPQ(evalPlanQual) mechanism.Also I don't think ORCA should consider supporting locking clause. ORCA is an optimizer that is more biased towards OLAP scenarios. Support the EPQ mechanism will make ORCA more complex and more difficult to expand.
Type of Change
Breaking Changes
Test Plan
make installcheck
make -C src/test installcheck-cbdb-parallel
Impact
Performance:
User-facing changes:
Dependencies:
Checklist
Additional Context
CI Skip Instructions