Skip to content

planner: fix LEADING hint generation for derived query blocks - #68561

Open
lichunzhu wants to merge 18 commits into
pingcap:masterfrom
lichunzhu:refine-leading-generate
Open

planner: fix LEADING hint generation for derived query blocks#68561
lichunzhu wants to merge 18 commits into
pingcap:masterfrom
lichunzhu:refine-leading-generate

Conversation

@lichunzhu

@lichunzhu lichunzhu commented May 21, 2026

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: close #68564

Problem Summary: EXPLAIN FORMAT='hint' may miss or generate invalid LEADING hints when a join group contains derived-table aliases or spans multiple query blocks. This makes exported hints incomplete and can break create ... binding from history replay for these queries.

What changed and how does it work?

  • Preserve the owner query block of each join group independently from the origin query blocks of its operands across legacy and new join reorder paths.
  • Resolve each join operand to the alias visible in that owner query block with one strict resolver shared by LEADING generation and matching; fail closed when visibility cannot be proven.
  • Resolve descendant alias candidates before deduplication, so nested derived-table aliases that become the same outer visible operand are treated as one identity.
  • Preserve LeadingList in HintData so restored query-block placement remains stable.

This PR guarantees round-trip generation and application for derived-table owner/visible aliases. It does not claim complete reproduction of every physical join order: physical join-group extraction still stops at join-group-preserving Selection / Projection wrappers, and traversal through those wrappers is deferred to #70351. Complete CTE alias support is tracked by #68977. Reconciling an original statement LEADING hint with a plan-derived LEADING hint is tracked separately by #70238.

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
    check a complicate join case using a local tidb cluster. After this MR:
  1. explain format='hint' can export correct leading hint.
  2. create binding from history can make sure the physical plan is affected by given leading hint.
  • No need to test
    • I checked and no code files have been changed.

Side effects

  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Breaking backward compatibility

Documentation

  • Affects user behaviors
  • Contains syntax changes
  • Contains variable changes
  • Contains experimental features
  • Changes MySQL compatibility

Release note

Please refer to Release Notes Language Style Guide to write a quality release note.

None

@pantheon-ai

pantheon-ai Bot commented May 21, 2026

Copy link
Copy Markdown

@lichunzhu I've received your pull request and will start the review. I'll conduct a thorough review covering code quality, potential issues, and implementation details.

⏳ This process typically takes 10-30 minutes depending on the complexity of the changes.

ℹ️ Learn more details on Pantheon AI.

@ti-chi-bot ti-chi-bot Bot added contribution This PR is from a community contributor. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. needs-ok-to-test Indicates a PR created by contributors and need ORG member send '/ok-to-test' to start testing. labels May 21, 2026
@ti-chi-bot

ti-chi-bot Bot commented May 21, 2026

Copy link
Copy Markdown

Hi @lichunzhu. Thanks for your PR.

I'm waiting for a pingcap member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

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.

@pingcap-cla-assistant

pingcap-cla-assistant Bot commented May 21, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@ti-chi-bot ti-chi-bot Bot added the sig/planner SIG: Planner label May 21, 2026
@tiprow

tiprow Bot commented May 21, 2026

Copy link
Copy Markdown

Hi @lichunzhu. 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.

@coderabbitai

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds staged alias-recovery and refined LEADING hint generation/restoration so EXPLAIN FORMAT='hint' and binding-from-history export stable, replayable leading(...) hints for queries with derived tables and CTEs; includes unit and cluster tests exercising generation, replay, and binding behavior.

Changes

Join leading hint recovery and export

Layer / File(s) Summary
Join hint table alias extraction pipeline
pkg/planner/core/hint_utils.go, pkg/planner/core/joinorder/util.go
Adds fallback pipeline to recover hint table aliases by scanning descendant query-block metadata, falling back to output-name extraction (plannerutil.ExtractTableAlias), then node extraction; adds helpers with ambiguity detection (extractLeadingHintTableAlias, extractDerivedTableAliasFromDescendants, extractHintTableByBlockOffset, extractHintTableByOutputNames).
Join method hint QBName and table collection
pkg/planner/core/hint_utils.go
Refines QBName selection to reuse the first effective join-table QBName when a hint-level QBName cannot be generated; adjusts collection to preserve hint-table items even when qbOffset is invalid for later QB assignment.
Leading join-order hint generation
pkg/planner/core/hint_utils.go
Reworks leading hint generation to mark join groups visited only after successfully emitting a LEADING hint, trims mixed-query-block items when hint-level QBName is absent, and emits LEADING using HintData with ast.LeadingList.
Leading hint restoration in parser
pkg/parser/ast/misc.go
LeadingList.RestoreWithQB now emits the @<currentQBName> prefix for the first *HintTable when currentQBName is non-empty, then resets currentQBName for subsequent items.
Core planner tests for hint roundtrip
pkg/planner/core/explain_format_hint_roundtrip_test.go, pkg/planner/core/plan_test.go, pkg/planner/core/BUILD.bazel
Adds tests validating EXPLAIN FORMAT='hint' generates and replays leading(...) including derived-table aliases and multi-block leading groups; asserts no statement warnings and correct hint strings after replay; updates test target sources.
Binding creation tests from hint history
pkg/infoschema/test/clustertablestest/cluster_tables_test.go
Adds cluster-level tests that create session bindings from plan history for queries with derived-table aliases and multiple leading query blocks, checking created binding contents, produced warnings, and @@last_plan_from_binding behavior.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested reviewers

  • qw4990
  • guo-shaoge
  • hawkingrei

🐰 I dug through plans in the moonlit net,
Found aliases hiding where joins had met.
I stitched hints together with tidy care,
So derived tables now stand proud and fair.
Replayed and bound — a carrot-coded cheer!

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 32.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ⚠️ Warning The pull request has no description and omits the required issue, problem, changes, test checklist, and release note sections. Add the required template sections, including the linked issue, problem summary, implementation details, testing information, side effects, documentation impact, and release note.
✅ Passed checks (3 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 and concisely describes the main change: fixing LEADING hint generation for derived query blocks.
✨ 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.

@lichunzhu lichunzhu changed the title [DNM] planner: refine the planner logic of leading hint generation [DNM] planner: fix LEADING hint generation for derived query blocks May 21, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

25-54: ⚡ Quick win

Consolidate this derived-table roundtrip case with the existing planner tests.

This file duplicates the same schema/query setup and leading-hint expectation that the PR also adds in pkg/planner/core/plan_test.go, which makes future hint-format updates easy to fix in one place and miss in the other.

As per coding guidelines, "Prefer extending existing test suites and fixtures over creating new scaffolding".

🤖 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/explain_format_hint_roundtrip_test.go` around lines 25 - 54,
This duplicates the derived-table hint roundtrip test: remove the duplicate
constant explainFormatHintDerivedTableSQL, the helper
prepareExplainFormatHintDerivedTableAliasTestKit, and the test
TestExplainFormatHintRecoverableForDerivedTableAlias from this file and instead
add the same case into the existing planner test suite (e.g., extend the test in
plan_test.go) so it reuses the shared testkit/fixture; make the new case use the
existing test helper/fixture in plan_test.go and assert the same expectations
(contains leading(...) and no warnings) to avoid duplicated scaffolding.
🤖 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/hint_utils.go`:
- Around line 401-404: When qbOffset < 0 you must not carry the unresolved join
table handle into later LEADING generation; update the branch that currently
does qbOffsets = append(qbOffsets, -1) and hintTbls = append(hintTbls, ht) so
that hintTbls receives a nil entry instead of ht (i.e., append(nil)) so
unresolved join nodes are represented as nil and will be rejected by the LEADING
path; adjust any nearby logic that builds qbOffsets/hintTbls to keep the same
indexing semantics for -1 + nil pairs (look for qbOffset, ht, qbOffsets,
hintTbls and the LEADING generation code that checks for nil).

---

Nitpick comments:
In `@pkg/planner/core/explain_format_hint_roundtrip_test.go`:
- Around line 25-54: This duplicates the derived-table hint roundtrip test:
remove the duplicate constant explainFormatHintDerivedTableSQL, the helper
prepareExplainFormatHintDerivedTableAliasTestKit, and the test
TestExplainFormatHintRecoverableForDerivedTableAlias from this file and instead
add the same case into the existing planner test suite (e.g., extend the test in
plan_test.go) so it reuses the shared testkit/fixture; make the new case use the
existing test helper/fixture in plan_test.go and assert the same expectations
(contains leading(...) and no warnings) to avoid duplicated scaffolding.
🪄 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: abf7eac8-ddd5-4a0a-9cd2-5b48c1545263

📥 Commits

Reviewing files that changed from the base of the PR and between a15fbb9 and 2acbc02.

📒 Files selected for processing (6)
  • pkg/infoschema/test/clustertablestest/cluster_tables_test.go
  • pkg/parser/ast/misc.go
  • pkg/planner/core/explain_format_hint_roundtrip_test.go
  • pkg/planner/core/hint_utils.go
  • pkg/planner/core/joinorder/util.go
  • pkg/planner/core/plan_test.go

Comment thread pkg/planner/core/hint_utils.go
@Reminiscent

Copy link
Copy Markdown
Contributor

/ok-to-test

@ti-chi-bot ti-chi-bot Bot added ok-to-test Indicates a PR is ready to be tested. and removed needs-ok-to-test Indicates a PR created by contributors and need ORG member send '/ok-to-test' to start testing. labels May 21, 2026
@codecov

codecov Bot commented May 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 88.53755% with 29 lines in your changes missing coverage. Please review.
✅ Project coverage is 73.4379%. Comparing base (b76bfbc) to head (5074401).

⚠️ Current head 5074401 differs from pull request most recent head 81446a2

Please upload reports for the commit 81446a2 to get more accurate results.

Additional details and impacted files
@@               Coverage Diff                @@
##             master     #68561        +/-   ##
================================================
- Coverage   76.3321%   73.4379%   -2.8942%     
================================================
  Files          2041       2058        +17     
  Lines        558864     607736     +48872     
================================================
+ Hits         426593     446309     +19716     
- Misses       131371     158833     +27462     
- Partials        900       2594      +1694     
Flag Coverage Δ
integration 40.8787% <88.5375%> (+1.2101%) ⬆️

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

Components Coverage Δ
dumpling 60.4679% <ø> (+0.5705%) ⬆️
parser ∅ <ø> (∅)
br 44.2054% <ø> (-18.5037%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pkg/planner/core/joinorder/util.go (1)

524-532: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Apply the same CurrentDB fallback here.

extractDerivedTableAliasFromDescendants() now normalizes empty derived-table DB names to CurrentDB, but this path still matches against the raw empty DB name. A schema-qualified replayed/exported LEADING hint can still miss the derived alias here.

Proposed fix
-	derivedDBName := queryBlockNames[blockOffset].DBName.L
+	derivedDBName := queryBlockNames[blockOffset].DBName.L
+	if derivedDBName == "" {
+		derivedDBName = p.SCtx().GetSessionVars().CurrentDB
+	}
 
 	// Check if this alias appears in the LEADING hint
 	return containsTableInLeadingList(leadingHint.LeadingList, derivedDBName, derivedTableAlias)
🤖 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/joinorder/util.go` around lines 524 - 532, The code
retrieves derivedDBName from queryBlockNames[blockOffset].DBName.L and may be
empty even though extractDerivedTableAliasFromDescendants() normalizes empty DB
names to CurrentDB; update the logic in
extractDerivedTableAliasFromDescendants() call site (around
derivedTableAlias/derivedDBName usage) to fallback to CurrentDB when
derivedDBName == "" before calling containsTableInLeadingList so
schema-qualified LEADING hints match exported/replayed aliases; reference
derivedTableAlias, derivedDBName, queryBlockNames, blockOffset,
containsTableInLeadingList and the CurrentDB fallback.
🤖 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.

Outside diff comments:
In `@pkg/planner/core/joinorder/util.go`:
- Around line 524-532: The code retrieves derivedDBName from
queryBlockNames[blockOffset].DBName.L and may be empty even though
extractDerivedTableAliasFromDescendants() normalizes empty DB names to
CurrentDB; update the logic in extractDerivedTableAliasFromDescendants() call
site (around derivedTableAlias/derivedDBName usage) to fallback to CurrentDB
when derivedDBName == "" before calling containsTableInLeadingList so
schema-qualified LEADING hints match exported/replayed aliases; reference
derivedTableAlias, derivedDBName, queryBlockNames, blockOffset,
containsTableInLeadingList and the CurrentDB fallback.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1d34ca81-0ac6-4c8a-a8c7-a3df181df41b

📥 Commits

Reviewing files that changed from the base of the PR and between 449f8d1 and 7b4713b.

📒 Files selected for processing (2)
  • pkg/planner/core/hint_utils.go
  • pkg/planner/core/joinorder/util.go

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

77-82: ⚡ Quick win

Add replay assertion for the mixed-query-block case.

Line 80 currently verifies generation only. Add one replay pass to confirm the exported hint is parseable/stable through EXPLAIN FORMAT='hint' roundtrip.

Proposed test extension
 func TestExplainFormatHintGeneratesMixedQueryBlockLeading(t *testing.T) {
 	tk := prepareExplainFormatHintMixedLeadingTestKit(t)

 	hints := tk.MustQuery("explain format='hint' " + explainFormatHintMixedQueryBlockLeadingSQL).Rows()[0][0]
 	require.Contains(t, hints, "leading(`test`.`t2`, `test`.`t1`, `test`.`t3`@`sel_2`)")
+
+	replayed := tk.MustQuery(fmt.Sprintf("explain format='hint' select /*+ %s */ * from t1 join t2 on t1.a = t2.a where t2.b in (select a from t3 where t3.b = 1) and t1.c = 1", hints)).Rows()[0][0]
+	require.Contains(t, replayed, "leading(`test`.`t2`, `test`.`t1`, `test`.`t3`@`sel_2`)")
 }
🤖 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/explain_format_hint_roundtrip_test.go` around lines 77 - 82,
The test TestExplainFormatHintGeneratesMixedQueryBlockLeading only checks hint
generation; add a replay/assertion that the exported hint round-trips through
EXPLAIN FORMAT='hint' and is parseable/stable. After capturing hints via hints
:= tk.MustQuery("explain format='hint'
"+explainFormatHintMixedQueryBlockLeadingSQL).Rows()[0][0], call
tk.MustQuery("explain format='hint' "+hints) and assert the result still
contains the expected leading hint (e.g. require.Contains(...,
"leading(`test`.`t2`, `test`.`t1`, `test`.`t3`@`sel_2`)")) so the exported hint
can be parsed back; use the same test helpers (tk.MustQuery, require.Contains)
and the existing explainFormatHintMixedQueryBlockLeadingSQL and hints variables
to locate where to add this replay check.
🤖 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/hint_utils.go`:
- Around line 750-755: The fallback that restores the original mixed group is
too broad; narrow it to only the known-safe 3-item case by changing the
condition that checks trimmed and hintTbls. Replace the current condition "if
len(trimmed) <= 2 && len(hintTbls) > 2 { return hintTbls }" so it only returns
the original when the original group had exactly three items (e.g., "if
len(trimmed) <= 2 && len(hintTbls) == 3 { return hintTbls }"), ensuring larger
mixed groups like "2 outer + 2 inner" are not preserved.

---

Nitpick comments:
In `@pkg/planner/core/explain_format_hint_roundtrip_test.go`:
- Around line 77-82: The test
TestExplainFormatHintGeneratesMixedQueryBlockLeading only checks hint
generation; add a replay/assertion that the exported hint round-trips through
EXPLAIN FORMAT='hint' and is parseable/stable. After capturing hints via hints
:= tk.MustQuery("explain format='hint'
"+explainFormatHintMixedQueryBlockLeadingSQL).Rows()[0][0], call
tk.MustQuery("explain format='hint' "+hints) and assert the result still
contains the expected leading hint (e.g. require.Contains(...,
"leading(`test`.`t2`, `test`.`t1`, `test`.`t3`@`sel_2`)")) so the exported hint
can be parsed back; use the same test helpers (tk.MustQuery, require.Contains)
and the existing explainFormatHintMixedQueryBlockLeadingSQL and hints variables
to locate where to add this replay check.
🪄 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: 021acc57-19b2-4d8a-8027-e9b96a018c6d

📥 Commits

Reviewing files that changed from the base of the PR and between 7b4713b and 7d115ca.

📒 Files selected for processing (2)
  • pkg/planner/core/explain_format_hint_roundtrip_test.go
  • pkg/planner/core/hint_utils.go

Comment thread pkg/planner/core/hint_utils.go Outdated
@lichunzhu

Copy link
Copy Markdown
Contributor Author

/retest

@ti-chi-bot ti-chi-bot Bot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels May 26, 2026
@lichunzhu

Copy link
Copy Markdown
Contributor Author

/retest

@ti-chi-bot ti-chi-bot Bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels May 29, 2026
@ti-chi-bot ti-chi-bot Bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Jun 5, 2026
@ti-chi-bot ti-chi-bot Bot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Jun 11, 2026
@tiprow

tiprow Bot commented Jun 11, 2026

Copy link
Copy Markdown

@lichunzhu: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
fast_test_tiprow 7f056ab link true /test fast_test_tiprow
tidb_parser_test 7f056ab link true /test tidb_parser_test

Full PR test history. Your PR dashboard.

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. I understand the commands that are listed here.

@ti-chi-bot

ti-chi-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign ailinkid, 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

@lichunzhu

Copy link
Copy Markdown
Contributor Author

/test check-dev2

@lichunzhu lichunzhu changed the title [DNM] planner: fix LEADING hint generation for derived query blocks planner: fix LEADING hint generation for derived query blocks Jul 9, 2026
@ti-chi-bot

ti-chi-bot Bot commented Aug 6, 2026

Copy link
Copy Markdown

@lichunzhu: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
idc-jenkins-ci-tidb/check_dev 81446a2 link true /test check-dev
idc-jenkins-ci-tidb/build 81446a2 link true /test build
pull-build-next-gen 81446a2 link true /test pull-build-next-gen
idc-jenkins-ci-tidb/unit-test 81446a2 link true /test unit-test
pull-unit-test-next-gen 81446a2 link true /test pull-unit-test-next-gen
idc-jenkins-ci-tidb/check_dev_2 81446a2 link true /test check-dev2
pull-integration-realcluster-test-next-gen 81446a2 link true /test pull-integration-realcluster-test-next-gen

Full PR test history. Your PR dashboard.

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. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contribution This PR is from a community contributor. do-not-merge/needs-triage-completed ok-to-test Indicates a PR is ready to be tested. release-note-none Denotes a PR that doesn't merit a release note. 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.

planner: EXPLAIN FORMAT='hint' may skip outer LEADING when a join group contains a derived table alias

3 participants