Skip to content

planner, sessionctx: support alternative logical plans | tidb-test=pr/2752#68646

Open
AilinKid wants to merge 4 commits into
pingcap:release-8.5from
AilinKid:cp-alternative-85
Open

planner, sessionctx: support alternative logical plans | tidb-test=pr/2752#68646
AilinKid wants to merge 4 commits into
pingcap:release-8.5from
AilinKid:cp-alternative-85

Conversation

@AilinKid
Copy link
Copy Markdown
Contributor

@AilinKid AilinKid commented May 26, 2026

Issue Number: ref #66676

What changed

Cherry-pick the alternative logical plan support onto release-8.5:

The correlated planner test was adapted without copying upstream testdata; it uses inline test cases on this branch.

Tests

  • GOCACHE=/tmp/index-join-refactor-go-build go test -tags=intest ./pkg/sessionctx/stmtctx ./pkg/util/context ./pkg/util/hint ./pkg/planner
  • GOCACHE=/tmp/index-join-refactor-go-build go test -tags=intest ./pkg/planner/core -run ^
  • GOCACHE=/tmp/index-join-refactor-go-build go test -tags=intest ./pkg/planner -run ^
  • GOCACHE=/tmp/index-join-refactor-go-build go test -tags=intest ./pkg/sessionctx/variable -run 'TestNewSessionVars|TestVarsutil'
  • GOCACHE=/tmp/index-join-refactor-go-build go test -tags=intest ./pkg/planner/core/casetest/correlated
  • GOCACHE=/tmp/index-join-refactor-go-build go test -run TestOptimizeHintOnPartitionTable -tags=intest,deadlock ./pkg/planner/core/casetest/hint

Release note

Added the `tidb_opt_enable_alternative_logical_plans` system variable to enable alternative logical plan optimization for subquery decorrelation.

Summary by CodeRabbit

  • New Features

    • Added tidb_opt_enable_alternative_logical_plans session variable to enable alternative logical optimization plans for subquery decorrelation scenarios.
  • Tests

    • Added regression test for NATURAL JOIN with correlated subqueries.
    • Enhanced test coverage for session state management and hint processing.
  • Chores

    • Updated test and build configurations.
    • Refactored internal hint processing and plan state management for improved optimization flow.

Review Change Stack

@ti-chi-bot
Copy link
Copy Markdown

ti-chi-bot Bot commented May 26, 2026

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@ti-chi-bot ti-chi-bot Bot added do-not-merge/cherry-pick-not-approved do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. sig/planner SIG: Planner labels May 26, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 26, 2026

📝 Walkthrough

Walkthrough

This PR implements a multi-round logical plan optimization framework to find better physical plans by exploring alternative logical plans. It refactors hint state management to use per-build snapshots, adds decorrelation tracking to logical and physical joins, and introduces tidb_opt_enable_alternative_logical_plans to enable an optional second optimization round that disables decorrelation rules.

Changes

Alternative Logical Plans Infrastructure

Layer / File(s) Summary
Logical plan build state snapshots and restoration
pkg/sessionctx/stmtctx/stmtctx.go, pkg/sessionctx/stmtctx/stmtctx_test.go, pkg/util/context/plancache.go
Introduces LogicalPlanBuildState struct to snapshot statement-scoped planner state including warnings, table metadata, prune mode, update-plan column refs, and plan-cache configuration. Adds SaveLogicalPlanBuildState() and RestoreLogicalPlanBuildState() methods to enable state transfer across optimization rounds. Extends StatementContext with AlternativeLogicalPlanDecorrelatedApply and AlternativeLogicalPlanSameOrderIndexJoin signal fields. Adds PlanCacheTracker.Save() and Restore() to persist planning-time state. Tests validate state preservation across snapshot/restore cycles.
Hint system refactoring to per-build state
pkg/util/hint/hint_query_block.go
Refactors QBHintHandler to move mutable state (QBOffsetToHints, ViewQBNameUsed) into explicit QBHintBuildState instead of handler-owned maps. Adds NewBuildState() to initialize per-build state, updates GetCurrentStmtHints() signature to accept build state, changes HandleUnusedViewHints() to take build state and return warnings, adds MarkViewQBNameUsed() for tracking used view hints, and adds SetWarns() to emit collected warnings.
PlanBuilder hint state integration
pkg/planner/core/planbuilder.go
Adds hintState field to PlanBuilder to track per-build QB hint state separately from immutable hintProcessor. Initializes hintState via processor.NewBuildState() in Init(). Adds GetHintState() accessor and HandleUnusedViewHints() method that collects warnings from hint processor. Threads hint state through view planning logic.
Decorrelation tracking with FromDecorrelatedApply
pkg/planner/core/operator/logicalop/logical_join.go, pkg/planner/core/physical_plans.go, pkg/planner/core/exhaust_physical_plans.go, pkg/planner/core/task.go
Adds FromDecorrelatedApply boolean field to LogicalJoin and PhysicalIndexJoin to mark plans produced by decorrelation. Updates PhysicalIndexJoin.Clone() to copy this field. Sets the flag during physical candidate generation when decorrelated apply is preserved and during task attachment to mark alternative-plan signals.
Multiple optimization rounds framework
pkg/planner/optimize.go
Refactors optimize() to support multiple alternative logical-plan optimization rounds. Introduces logicalPlanBuildCtx snapshot mechanism to save/restore session state between rounds. Adds buildAndOptimizeLogicalPlanRound() helper encapsulating build, privilege checks, physical optimization, and best-plan tracking. Implements shouldTryAlternativeLogicalPlanRound() predicate checking alternative-plan signals. Coordinates shared timing and best-plan tracking across rounds.
Decorrelation rule and view planning integration
pkg/planner/core/rule_decorrelate.go, pkg/planner/core/logical_plan_builder.go
Updates DecorrelateSolver.Optimize() to mark joins as FromDecorrelatedApply and record alternative-plan signals when EnableAlternativeLogicalPlans is set. Updates pushTableHints() to thread hintState into GetCurrentStmtHints(). Updates view planning to use explicit hintState, call MarkViewQBNameUsed() via hint processor, and defer cleanup with explicit state.
System variable configuration
pkg/sessionctx/variable/tidb_vars.go, pkg/sessionctx/variable/sysvar.go, pkg/sessionctx/variable/session.go, pkg/sessionctx/variable/setvar_affect.go, pkg/sessionctx/variable/varsutil_test.go
Introduces tidb_opt_enable_alternative_logical_plans system variable to enable alternative logical plan optimization. Adds EnableAlternativeLogicalPlans field to SessionVars initialized from DefOptEnableAlternativeLogicalPlans default. Registers variable in system variable definitions and hint-updatable allowlist. Tests verify default and setter behavior.
Test coverage and validation
pkg/planner/core/casetest/correlated/correlated_test.go, pkg/sessionctx/stmtctx/stmtctx_test.go, pkg/executor/test/simpletest/BUILD.bazel, pkg/parser/ast/BUILD.bazel, pkg/planner/BUILD.bazel, pkg/planner/core/casetest/correlated/BUILD.bazel, pkg/statistics/handle/handletest/BUILD.bazel, pkg/sessionctx/stmtctx/BUILD.bazel
Adds TestNaturalJoinWithCorrelatedSubquery regression test exercising NATURAL JOIN with correlated EXISTS and alternative-plan behavior toggling. Adds TestLogicalPlanBuildStateRestore validating state snapshots and restoration. Adds TestQBHintHandlerBuildState validating hint build state preservation. Updates BUILD files with shard counts, test sources, and dependencies.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • pingcap/tidb#66677: Overlaps with QB hint build state refactoring for multi-alternative logical plan optimization, particularly hint-state isolation and MarkViewQBNameUsed flow changes.

Suggested labels

size/XL

Suggested reviewers

  • qw4990
  • guo-shaoge
  • RidRisR

Poem

🐰 Two paths now bloom where once there was one,
Decorrelate forbidden, the second begun,
Hints dance in their state, snapshot by snapshot,
Better plans flourish where alternatives plot,
Alternative logic, alternative might!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 15.79% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main objective: adding support for alternative logical plans to the planner and sessionctx packages.
Description check ✅ Passed The PR description provides issue reference, a clear summary of what was cherry-picked, test commands executed, and a release note, matching the template structure.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ti-chi-bot ti-chi-bot Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label May 26, 2026
@tiprow
Copy link
Copy Markdown

tiprow Bot commented May 26, 2026

Hi @AilinKid. Thanks for your PR.

PRs from untrusted users cannot be marked as trusted with /ok-to-test in this repo meaning untrusted PR authors can never trigger tests themselves. Collaborators can still trigger tests on the PR using /test all.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@AilinKid AilinKid marked this pull request as ready for review May 26, 2026 10:16
@ti-chi-bot ti-chi-bot Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 26, 2026
@AilinKid AilinKid added the type/cherry-pick-for-release-8.5 This PR is cherry-picked to release-8.5 from a source PR. label May 26, 2026
@ti-chi-bot ti-chi-bot Bot removed the type/cherry-pick-for-release-8.5 This PR is cherry-picked to release-8.5 from a source PR. label May 26, 2026
@ti-chi-bot
Copy link
Copy Markdown

ti-chi-bot Bot commented May 26, 2026

@AilinKid: You cannot manually add or delete the cherry pick branch category labels. It will be added automatically by bot when the PR is created.

Details

In response to adding label named type/cherry-pick-for-release-8.5.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository.

@AilinKid AilinKid added type/cherry-pick-for-release-8.5 This PR is cherry-picked to release-8.5 from a source PR. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels May 26, 2026
@ti-chi-bot ti-chi-bot Bot removed the type/cherry-pick-for-release-8.5 This PR is cherry-picked to release-8.5 from a source PR. label May 26, 2026
@ti-chi-bot
Copy link
Copy Markdown

ti-chi-bot Bot commented May 26, 2026

@AilinKid: You cannot manually add or delete the cherry pick branch category labels. It will be added automatically by bot when the PR is created.

Details

In response to adding label named type/cherry-pick-for-release-8.5.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository.

@ti-chi-bot ti-chi-bot Bot added the do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. label May 26, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
pkg/planner/core/planbuilder.go (1)

493-495: ⚡ Quick win

Clear hintState when no processor is provided.

At Line 493, hintState is only assigned in the non-nil branch. If the builder is re-initialized without a processor, stale state can survive from a prior build.

Suggested diff
 	b.hintProcessor = processor
 	if processor != nil {
 		b.hintState = processor.NewBuildState()
+	} else {
+		b.hintState = nil
 	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/planner/core/planbuilder.go` around lines 493 - 495, The code only sets
b.hintState when processor != nil, which can leave stale state when
re-initialized without a processor; update the initialization in the function
that uses processor so that if processor is nil you explicitly clear b.hintState
(set it to nil) else set it to processor.NewBuildState(); reference b.hintState,
processor and NewBuildState to locate and fix the logic.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/planner/core/task.go`:
- Around line 170-172: The decorrelated-apply same-order mark is only invoked in
one code path so PhysicalIndexHashJoin and PhysicalIndexMergeJoin never call
MarkAlternativeLogicalPlanSameOrderIndexJoin() and still trigger
shouldTryAlternativeLogicalPlanRound(); fix by ensuring the same-order mark runs
for index-based joins: either move the FromDecorrelatedApply check and the call
to
SCtx().GetSessionVars().StmtCtx.MarkAlternativeLogicalPlanSameOrderIndexJoin()
into the shared PhysicalIndexJoin code path that both PhysicalIndexHashJoin and
PhysicalIndexMergeJoin use, or explicitly add the same FromDecorrelatedApply
guard and MarkAlternativeLogicalPlanSameOrderIndexJoin() call inside the
PhysicalIndexHashJoin and PhysicalIndexMergeJoin implementations so that when
FromDecorrelatedApply is true those join types also mark same-order INLHJ/INLMJ
candidates.

In `@pkg/planner/optimize.go`:
- Around line 515-516: The deferred call to builder.HandleUnusedViewHints()
causes unused-view-hint diagnostics to be added after bestLogicalPlanCtx was
captured, so when optimize() later restores bestLogicalPlanCtx those warnings
are lost; to fix, ensure you materialize unused-view hints before capturing or
restoring the winner snapshot: invoke builder.HandleUnusedViewHints() (or flush
its results) and then update/capture bestLogicalPlanCtx (the snapshot used by
optimize()) so the saved StmtCtx includes those diagnostics; apply the same
change to the other occurrences referenced (around the blocks at the other two
locations).

---

Nitpick comments:
In `@pkg/planner/core/planbuilder.go`:
- Around line 493-495: The code only sets b.hintState when processor != nil,
which can leave stale state when re-initialized without a processor; update the
initialization in the function that uses processor so that if processor is nil
you explicitly clear b.hintState (set it to nil) else set it to
processor.NewBuildState(); reference b.hintState, processor and NewBuildState to
locate and fix the logic.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 520640d5-20ae-4d44-a2d6-52e6fb1c6fd9

📥 Commits

Reviewing files that changed from the base of the PR and between 15cb1cf and 36ef93c.

📒 Files selected for processing (24)
  • pkg/executor/test/simpletest/BUILD.bazel
  • pkg/parser/ast/BUILD.bazel
  • pkg/planner/BUILD.bazel
  • pkg/planner/core/casetest/correlated/BUILD.bazel
  • pkg/planner/core/casetest/correlated/correlated_test.go
  • pkg/planner/core/exhaust_physical_plans.go
  • pkg/planner/core/logical_plan_builder.go
  • pkg/planner/core/operator/logicalop/logical_join.go
  • pkg/planner/core/physical_plans.go
  • pkg/planner/core/planbuilder.go
  • pkg/planner/core/rule_decorrelate.go
  • pkg/planner/core/task.go
  • pkg/planner/optimize.go
  • pkg/sessionctx/stmtctx/BUILD.bazel
  • pkg/sessionctx/stmtctx/stmtctx.go
  • pkg/sessionctx/stmtctx/stmtctx_test.go
  • pkg/sessionctx/variable/session.go
  • pkg/sessionctx/variable/setvar_affect.go
  • pkg/sessionctx/variable/sysvar.go
  • pkg/sessionctx/variable/tidb_vars.go
  • pkg/sessionctx/variable/varsutil_test.go
  • pkg/statistics/handle/handletest/BUILD.bazel
  • pkg/util/context/plancache.go
  • pkg/util/hint/hint_query_block.go

Comment thread pkg/planner/core/task.go
Comment on lines +170 to +172
if p.FromDecorrelatedApply {
p.SCtx().GetSessionVars().StmtCtx.MarkAlternativeLogicalPlanSameOrderIndexJoin()
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Count same-order INLHJ/INLMJ candidates too.

PhysicalIndexHashJoin and PhysicalIndexMergeJoin embed PhysicalIndexJoin, but they bypass this method, so their FromDecorrelatedApply plans never call MarkAlternativeLogicalPlanSameOrderIndexJoin(). When the decorrelated plan only produces a same-order INLHJ/INLMJ, shouldTryAlternativeLogicalPlanRound() still fires and we pay the extra optimization round anyway.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/planner/core/task.go` around lines 170 - 172, The decorrelated-apply
same-order mark is only invoked in one code path so PhysicalIndexHashJoin and
PhysicalIndexMergeJoin never call MarkAlternativeLogicalPlanSameOrderIndexJoin()
and still trigger shouldTryAlternativeLogicalPlanRound(); fix by ensuring the
same-order mark runs for index-based joins: either move the
FromDecorrelatedApply check and the call to
SCtx().GetSessionVars().StmtCtx.MarkAlternativeLogicalPlanSameOrderIndexJoin()
into the shared PhysicalIndexJoin code path that both PhysicalIndexHashJoin and
PhysicalIndexMergeJoin use, or explicitly add the same FromDecorrelatedApply
guard and MarkAlternativeLogicalPlanSameOrderIndexJoin() call inside the
PhysicalIndexHashJoin and PhysicalIndexMergeJoin implementations so that when
FromDecorrelatedApply is true those join types also mark same-order INLHJ/INLMJ
candidates.

Comment thread pkg/planner/optimize.go
Comment on lines +515 to +516
// TODO: when buildRound > 1, only emit unused view-hint warnings for the winner build.
defer builder.HandleUnusedViewHints()
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Save the winner snapshot after unused-view hints are materialized.

builder.HandleUnusedViewHints() runs in the defer, but bestLogicalPlanCtx is captured before that defer fires. When optimize() restores bestLogicalPlanCtx at the end, it rewinds StmtCtx to a state that predates those warnings, so the winning round can silently lose its unused-view-hint diagnostics.

Also applies to: 582-584, 705-706

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/planner/optimize.go` around lines 515 - 516, The deferred call to
builder.HandleUnusedViewHints() causes unused-view-hint diagnostics to be added
after bestLogicalPlanCtx was captured, so when optimize() later restores
bestLogicalPlanCtx those warnings are lost; to fix, ensure you materialize
unused-view hints before capturing or restoring the winner snapshot: invoke
builder.HandleUnusedViewHints() (or flush its results) and then update/capture
bestLogicalPlanCtx (the snapshot used by optimize()) so the saved StmtCtx
includes those diagnostics; apply the same change to the other occurrences
referenced (around the blocks at the other two locations).

@codecov
Copy link
Copy Markdown

codecov Bot commented May 26, 2026

Codecov Report

❌ Patch coverage is 89.60573% with 29 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (release-8.5@15cb1cf). Learn more about missing BASE report.

Additional details and impacted files
@@               Coverage Diff                @@
##             release-8.5     #68646   +/-   ##
================================================
  Coverage               ?   55.6833%           
================================================
  Files                  ?       1824           
  Lines                  ?     662733           
  Branches               ?          0           
================================================
  Hits                   ?     369032           
  Misses                 ?     266879           
  Partials               ?      26822           
Flag Coverage Δ
integration 38.5228% <52.6881%> (?)
unit 65.7583% <88.1720%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
dumpling 55.5963% <0.0000%> (?)
parser ∅ <0.0000%> (?)
br 55.9791% <0.0000%> (?)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@AilinKid AilinKid changed the title planner, sessionctx: support alternative logical plans planner, sessionctx: support alternative logical plans | tidb-test=pr/2752 Jun 2, 2026
@AilinKid
Copy link
Copy Markdown
Contributor Author

AilinKid commented Jun 2, 2026

/test mysql-test

@tiprow
Copy link
Copy Markdown

tiprow Bot commented Jun 2, 2026

@AilinKid: PRs from untrusted users cannot be marked as trusted with /ok-to-test in this repo meaning untrusted PR authors can never trigger tests themselves. Collaborators can still trigger tests on the PR using /test.

Details

In response to this:

/test mysql-test

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@AilinKid
Copy link
Copy Markdown
Contributor Author

AilinKid commented Jun 2, 2026

/test mysql-test

@tiprow
Copy link
Copy Markdown

tiprow Bot commented Jun 2, 2026

@AilinKid: PRs from untrusted users cannot be marked as trusted with /ok-to-test in this repo meaning untrusted PR authors can never trigger tests themselves. Collaborators can still trigger tests on the PR using /test.

Details

In response to this:

/test mysql-test

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@AilinKid
Copy link
Copy Markdown
Contributor Author

AilinKid commented Jun 2, 2026

/ok-to-test

@ti-chi-bot
Copy link
Copy Markdown

ti-chi-bot Bot commented Jun 2, 2026

@AilinKid: You cannot manually add or delete the cherry pick approval state labels, only I and the tursted members have permission to do so. You can approve it in internal platform.

Details

In response to adding label named cherry-pick-approved.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository.

@ti-chi-bot ti-chi-bot Bot added do-not-merge/cherry-pick-not-approved and removed cherry-pick-approved Cherry pick PR approved by release team. labels Jun 2, 2026
@AilinKid AilinKid added release-note Denotes a PR that will be considered when it comes time to generate release notes. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Jun 2, 2026
@ti-chi-bot ti-chi-bot Bot added do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. and removed release-note Denotes a PR that will be considered when it comes time to generate release notes. labels Jun 2, 2026
@AilinKid AilinKid added the release-note Denotes a PR that will be considered when it comes time to generate release notes. label Jun 2, 2026
@ti-chi-bot ti-chi-bot Bot removed the release-note Denotes a PR that will be considered when it comes time to generate release notes. label Jun 2, 2026
@AilinKid AilinKid added release-note Denotes a PR that will be considered when it comes time to generate release notes. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Jun 2, 2026
@ti-chi-bot ti-chi-bot Bot added do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. release-note Denotes a PR that will be considered when it comes time to generate release notes. and removed release-note Denotes a PR that will be considered when it comes time to generate release notes. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Jun 2, 2026
@ti-chi-bot ti-chi-bot Bot added the needs-1-more-lgtm Indicates a PR needs 1 more LGTM. label Jun 3, 2026
@ti-chi-bot
Copy link
Copy Markdown

ti-chi-bot Bot commented Jun 3, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: hawkingrei, qw4990
Once this PR has been reviewed and has the lgtm label, please assign d3hunter, terry1purcell for approval. For more information see the Code Review Process.
Please ensure that each of them provides their approval before proceeding.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot Bot added lgtm and removed needs-1-more-lgtm Indicates a PR needs 1 more LGTM. labels Jun 3, 2026
@ti-chi-bot
Copy link
Copy Markdown

ti-chi-bot Bot commented Jun 3, 2026

[LGTM Timeline notifier]

Timeline:

  • 2026-06-03 07:19:13.737198916 +0000 UTC m=+339654.807516316: ☑️ agreed by qw4990.
  • 2026-06-03 07:37:31.327440269 +0000 UTC m=+340752.397757659: ☑️ agreed by hawkingrei.

@ti-chi-bot ti-chi-bot Bot added cherry-pick-approved Cherry pick PR approved by release team. and removed do-not-merge/cherry-pick-not-approved labels Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cherry-pick-approved Cherry pick PR approved by release team. lgtm ok-to-test Indicates a PR is ready to be tested. release-note Denotes a PR that will be considered when it comes time to generate release notes. sig/planner SIG: Planner size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants