Skip to content

parser: add LATERAL derived table syntax (MySQL WL#8652)#67076

Merged
ti-chi-bot[bot] merged 6 commits intopingcap:masterfrom
terry1purcell:lateral-parser
Mar 18, 2026
Merged

parser: add LATERAL derived table syntax (MySQL WL#8652)#67076
ti-chi-bot[bot] merged 6 commits intopingcap:masterfrom
terry1purcell:lateral-parser

Conversation

@terry1purcell
Copy link
Copy Markdown
Contributor

@terry1purcell terry1purcell commented Mar 17, 2026

Add parser support for the LATERAL keyword in derived tables, following MySQL 8.0 syntax. This is parser-only; planner support follows in a separate PR. There is a planner change to ensure that LATERAL is correctly rejected until the planner code is delivered.

Grammar: LATERAL SubSelect TableAsName IdentListWithParenOpt

  • Alias is required (TableAsName, not TableAsNameOpt)
  • AS keyword is optional
  • Optional column list: LATERAL (...) AS dt(c1, c2)

AST changes:

  • TableSource.Lateral bool flag
  • TableSource.ColumnNames []CIStr for column aliases
  • Restore() emits LATERAL keyword and column list

What problem does this PR solve?

Issue Number: ref #40328

Problem Summary:

What changed and how does it work?

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
  • 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

Summary by CodeRabbit

  • New Features

    • Recognizes and preserves LATERAL table sources in FROM/JOIN clauses, including optional derived-column lists when present.
  • Tests

    • Added comprehensive parsing and round‑trip tests for LATERAL usages, column‑list handling, joins, nesting, and negative cases.
  • Bug Fixes

    • Preprocessor now returns a clear "not supported" error for LATERAL derived tables.

Add parser support for the LATERAL keyword in derived tables, following
MySQL 8.0 syntax. This is parser-only; planner support follows in a
separate PR.

Grammar: LATERAL SubSelect TableAsName IdentListWithParenOpt
- Alias is required (TableAsName, not TableAsNameOpt)
- AS keyword is optional
- Optional column list: LATERAL (...) AS dt(c1, c2)

AST changes:
- TableSource.Lateral bool flag
- TableSource.ColumnNames []CIStr for column aliases
- Restore() emits LATERAL keyword and column list

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ti-chi-bot ti-chi-bot bot added do-not-merge/needs-linked-issue release-note-none Denotes a PR that doesn't merit a release note. labels Mar 17, 2026
@pantheon-ai
Copy link
Copy Markdown

pantheon-ai bot commented Mar 17, 2026

⚠️ Review Partially Completed

Infrastructure Issues:

  • 2 of 3 review agents failed due to Azure OpenAI model configuration errors after multiple retries
  • critical_review and review_agent_v1.1 could not complete analysis

Results from Successful Agent:

  • review_code completed successfully
  • Found and verified: 2 P2 issues
  • Posted: 2 inline comments

Note: This review is incomplete. The posted findings are valid, but additional issues may exist that weren't caught due to the agent failures. Consider re-triggering the review once infrastructure issues are resolved.

ℹ️ Learn more details on Pantheon AI.

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

tiprow bot commented Mar 17, 2026

Hi @terry1purcell. 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
Copy link
Copy Markdown

coderabbitai bot commented Mar 17, 2026

📝 Walkthrough

Walkthrough

Adds LATERAL support across lexer, parser, AST restore and tests; records LATERAL and optional column lists on TableSource; planner preprocessor now rejects LATERAL derived tables as not supported.

Changes

Cohort / File(s) Summary
Keyword/token updates
pkg/parser/keywords.go, pkg/parser/misc.go
Add LATERAL as a reserved keyword and map it to the lateral token in the token lookup.
Parser grammar
pkg/parser/parser.y
Recognize LATERAL table factors before subselects, set TableSource.Lateral, and capture optional derived column-name lists.
AST & restore
pkg/parser/ast/dml.go
Add Lateral bool and ColumnNames []CIStr to TableSource; Restorer emits LATERAL, enforces invariants (no LATERAL on plain table names, alias required for column list), and renders derived column lists after AS.
Tests & build
pkg/parser/lateral_test.go, pkg/parser/BUILD.bazel, pkg/parser/keywords_test.go
Add TestLateralParsing covering parsing, restore round-trips, and column-name assertions; include new test in BUILD; update keyword-count expectations.
Planner check
pkg/planner/core/preprocess.go, pkg/planner/core/preprocess_test.go
Preprocessor now returns ErrNotSupportedYet("LATERAL derived tables") for lateral TableSource nodes; tests added to assert rejection.

Sequence Diagram(s)

sequenceDiagram
  participant Client as "Client (SQL)"
  participant Lexer as "Lexer / Tokenizer"
  participant Parser as "Parser (yacc)"
  participant AST as "AST (TableSource)"
  participant Restorer as "Restorer"
  participant Planner as "Preprocessor/Planner"

  Client->>Lexer: send SQL with LATERAL ...
  Lexer->>Parser: emit tokens (LATERAL recognized)
  Parser->>AST: build TableSource {Lateral=true, ColumnNames?}
  AST->>Restorer: restore SQL (emit LATERAL and column list)
  Restorer->>Client: return restored SQL
  Parser->>Planner: pass AST for planning
  Planner->>Planner: detect TableSource.Lateral == true
  Planner-->>Client: return ErrNotSupportedYet("LATERAL derived tables")
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 I scoped a lateral hop so neat,
Tokens met parser for the feat,
Subqueries twirled with alias cheer,
Column names peeked, then hopped out clear,
The planner sighed — "Not yet!" — still sweet. ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: adding parser support for LATERAL derived table syntax following MySQL WL#8652.
Description check ✅ Passed The description addresses most required template sections with an Issue Number reference (#40328), clear problem statement, detailed AST changes, and unit test confirmation, though some template sections lack elaboration.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.11.3)

Command failed


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.

@hawkingrei
Copy link
Copy Markdown
Member

/ok-to-test

@ti-chi-bot ti-chi-bot bot added ok-to-test Indicates a PR is ready to be tested. and removed do-not-merge/needs-linked-issue labels Mar 17, 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/parser/ast/dml.go (1)

609-618: Fail fast if ColumnNames is set without an alias.

Line 609 only restores ColumnNames inside AsName != ""; if ColumnNames is populated but alias is empty, restore silently drops the column list. Prefer returning an error for this invalid AST state.

Proposed guard
 	if asName := n.AsName.String(); asName != "" {
 		ctx.WriteKeyWord(" AS ")
 		ctx.WriteName(asName)
 		if len(n.ColumnNames) > 0 {
 			ctx.WritePlain("(")
 			for i, col := range n.ColumnNames {
 				if i > 0 {
 					ctx.WritePlain(", ")
 				}
 				ctx.WriteName(col.String())
 			}
 			ctx.WritePlain(")")
 		}
+	} else if len(n.ColumnNames) > 0 {
+		return errors.New("column alias list requires table alias")
 	}

As per coding guidelines: "Keep error handling actionable and contextual; avoid silently swallowing errors."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/parser/ast/dml.go` around lines 609 - 618, The restore logic currently
drops n.ColumnNames when n.AsName is empty; add a guard in the Restore method
surrounding the shown block to fail fast: if len(n.ColumnNames) > 0 && n.AsName
== "" then return a descriptive error (e.g. "column list provided without
alias") instead of silently omitting the list. Update the code path that
currently writes the column list (references: n.ColumnNames, n.AsName,
ctx.WritePlain, ctx.WriteName) so the guard executes before any writes and
returns the error using the method's existing error return mechanism.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/parser/ast/dml.go`:
- Around line 559-562: The parser/AST exposes a Lateral flag (n.Lateral) and
restores it via ctx.WriteKeyWord, but the planner/preprocessor doesn't reject
LATERAL; add validation in the TableSource handler in preprocess.go to
explicitly error for any TableSource/derived table where x.Lateral (or the AST
node's Lateral flag) is true (e.g., check the same field the parser sets),
returning a clear "LATERAL not supported" validation error so queries with
LATERAL are rejected until planner support is implemented.

In `@pkg/parser/parser.y`:
- Line 201: The parser currently adds lateral as a reserved keyword by defining
the token lateral "LATERAL" in the reserved-keyword block, which causes unquoted
identifiers/aliases named lateral to fail at parse time; remove or comment out
the lateral "LATERAL" entry from the reserved-keyword block so lateral remains
an ordinary identifier, or instead treat it as contextual by leaving the token
out of the global reserved list and handling it as a keyword only in grammar
rules where needed (i.e., detect the IDENT "lateral" in the LATERAL-specific
grammar productions rather than reserving it globally).

---

Nitpick comments:
In `@pkg/parser/ast/dml.go`:
- Around line 609-618: The restore logic currently drops n.ColumnNames when
n.AsName is empty; add a guard in the Restore method surrounding the shown block
to fail fast: if len(n.ColumnNames) > 0 && n.AsName == "" then return a
descriptive error (e.g. "column list provided without alias") instead of
silently omitting the list. Update the code path that currently writes the
column list (references: n.ColumnNames, n.AsName, ctx.WritePlain, ctx.WriteName)
so the guard executes before any writes and returns the error using the method's
existing error return mechanism.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 50886dce-e85d-44e6-86bc-83996694a647

📥 Commits

Reviewing files that changed from the base of the PR and between 319a683 and 8bba27b.

📒 Files selected for processing (8)
  • pkg/parser/BUILD.bazel
  • pkg/parser/ast/dml.go
  • pkg/parser/keywords.go
  • pkg/parser/keywords_test.go
  • pkg/parser/lateral_test.go
  • pkg/parser/misc.go
  • pkg/parser/parser.go
  • pkg/parser/parser.y

Comment thread pkg/parser/parser.y
…lands

The parser now accepts the LATERAL keyword (from the previous commit),
but the planner does not yet support it. Add a preprocessor check that
returns a clear "not supported yet" error for any TableSource with
Lateral=true, so users get an actionable message instead of a confusing
plan-build failure.

This guard will be removed when planner support for LATERAL is added.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds MySQL 8.0-style LATERAL support at the parser/AST layer for derived tables, including AST flags and SQL restoration output, while explicitly rejecting execution in the planner until full support lands.

Changes:

  • Extend the grammar/keyword set to parse LATERAL (subquery) [AS] alias [(col_list)].
  • Add AST fields on ast.TableSource (Lateral, ColumnNames) and update Restore() to emit LATERAL and the optional column list.
  • Add parser unit tests covering parsing + restore round-trip for LATERAL derived tables.

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
pkg/planner/core/preprocess.go Rejects LATERAL table sources during preprocessing (currently contains a critical visitor-return bug).
pkg/parser/parser.y Adds LATERAL derived table production with required alias and optional column list.
pkg/parser/misc.go Maps LATERAL keyword to the new token.
pkg/parser/keywords.go Registers LATERAL as a reserved keyword.
pkg/parser/keywords_test.go Updates keyword/reserved counts for the new keyword.
pkg/parser/ast/dml.go Adds TableSource.Lateral/ColumnNames and restores them into SQL output.
pkg/parser/lateral_test.go New unit tests for parsing/restoring LATERAL derived tables.
pkg/parser/BUILD.bazel Adds the new test file to Bazel test targets.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pkg/planner/core/preprocess.go Outdated
Comment thread pkg/planner/core/preprocess.go Outdated
Comment thread pkg/planner/core/preprocess.go Outdated
Add a guard in TableSource.Restore() that returns a descriptive error
if ColumnNames is non-empty but AsName is empty, instead of silently
dropping the column list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 17, 2026

Codecov Report

❌ Patch coverage is 76.00000% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 77.5851%. Comparing base (102f7af) to head (81d7e32).
⚠️ Report is 7 commits behind head on master.

Additional details and impacted files
@@               Coverage Diff                @@
##             master     #67076        +/-   ##
================================================
- Coverage   77.7098%   77.5851%   -0.1247%     
================================================
  Files          2016       1936        -80     
  Lines        552001     540124     -11877     
================================================
- Hits         428959     419056      -9903     
+ Misses       121300     121063       -237     
+ Partials       1742          5      -1737     
Flag Coverage Δ
integration 41.1792% <0.0000%> (-6.9476%) ⬇️
unit 76.6973% <76.0000%> (+0.4459%) ⬆️

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

Components Coverage Δ
dumpling 57.0098% <ø> (ø)
parser ∅ <ø> (∅)
br 48.8593% <ø> (-11.9552%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/parser/ast/dml.go`:
- Around line 559-562: Before emitting SQL in TableSource.Restore(), validate
and reject unsupported AST shapes early: check fields on the TableSource
receiver (e.g., Lateral, ColumnNames, Source) and return an error if
combinations are invalid (for example Lateral==true with Source being
*TableName, ColumnNames present when Source is *TableName, or ColumnNames
without an Alias). Do this validation before branching on n.Source so that
Restore() never proceeds to write keywords or silently drop state; update the
Restore() implementation on type TableSource to perform these guards and return
clear errors for those invalid combinations.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 2d1a87b7-9874-4d34-8b33-b53743b0a934

📥 Commits

Reviewing files that changed from the base of the PR and between 8bba27b and 6557730.

📒 Files selected for processing (3)
  • pkg/parser/ast/dml.go
  • pkg/planner/core/preprocess.go
  • pkg/planner/core/preprocess_test.go

Comment thread pkg/parser/ast/dml.go
Verify that LATERAL derived tables are rejected during preprocessing
with ErrNotSupportedYet, covering both comma syntax and LEFT JOIN forms.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

♻️ Duplicate comments (1)
pkg/parser/ast/dml.go (1)

553-563: ⚠️ Potential issue | 🟡 Minor

Broaden Lateral invariant checks before restore.

Good start, but Line 555 only blocks *TableName. Lateral should be rejected for any non-derived source, and Line 561 should also enforce alias-required when Lateral is true (even if ColumnNames is empty), otherwise Restore() can still emit invalid SQL for programmatically-built ASTs.

♻️ Suggested patch
 func (n *TableSource) Restore(ctx *format.RestoreCtx) error {
 	// Validate AST invariants before emitting any SQL.
-	_, isTableName := n.Source.(*TableName)
-	if n.Lateral && isTableName {
-		return errors.New("LATERAL cannot be applied to a table name, only to derived tables")
-	}
-	if len(n.ColumnNames) > 0 && isTableName {
-		return errors.New("column alias list cannot be applied to a table name")
-	}
+	isDerivedTable := false
+	switch n.Source.(type) {
+	case *SelectStmt, *SetOprStmt:
+		isDerivedTable = true
+	}
+	if n.Lateral && !isDerivedTable {
+		return errors.New("LATERAL is only valid for derived tables")
+	}
+	if len(n.ColumnNames) > 0 && !isDerivedTable {
+		return errors.New("column alias list can only be applied to a derived table")
+	}
+	if n.Lateral && n.AsName.String() == "" {
+		return errors.New("alias required for LATERAL derived table")
+	}
 	if len(n.ColumnNames) > 0 && n.AsName.String() == "" {
 		return errors.New("column list provided without alias for derived table")
 	}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/parser/ast/dml.go` around lines 553 - 563, The current checks only treat
*TableName as invalid for LATERAL; instead, in the validation in the node
handling LATERAL (check n.Lateral and n.Source), reject LATERAL for any
non-derived source (i.e., require n.Source to be a *DerivedTable or equivalent
derived-table node), and also require an alias whenever n.Lateral is true (even
if n.ColumnNames is empty) by adding a guard that if n.Lateral &&
n.AsName.String() == "" return an error; update the existing conditions around
n.Lateral, n.Source, n.ColumnNames and n.AsName.String() to enforce these two
rules so Restore() cannot emit invalid SQL for programmatically-built ASTs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@pkg/parser/ast/dml.go`:
- Around line 553-563: The current checks only treat *TableName as invalid for
LATERAL; instead, in the validation in the node handling LATERAL (check
n.Lateral and n.Source), reject LATERAL for any non-derived source (i.e.,
require n.Source to be a *DerivedTable or equivalent derived-table node), and
also require an alias whenever n.Lateral is true (even if n.ColumnNames is
empty) by adding a guard that if n.Lateral && n.AsName.String() == "" return an
error; update the existing conditions around n.Lateral, n.Source, n.ColumnNames
and n.AsName.String() to enforce these two rules so Restore() cannot emit
invalid SQL for programmatically-built ASTs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 02508c8d-c3c9-4b10-b09e-b2128625ac30

📥 Commits

Reviewing files that changed from the base of the PR and between 6557730 and 866750f.

📒 Files selected for processing (2)
  • pkg/parser/ast/dml.go
  • pkg/planner/core/preprocess_test.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • pkg/planner/core/preprocess_test.go

Comment thread pkg/parser/parser.y
Comment thread pkg/parser/lateral_test.go
Check Lateral flag and ColumnNames on both the original and re-parsed
(round-tripped) AST so that regressions in Restore() column-list
emission are caught. Also adds negative assertion for non-LATERAL
cases on the round-tripped statement.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

🧹 Nitpick comments (1)
pkg/parser/lateral_test.go (1)

188-208: Helper function correctly traverses top-level FROM clause structure.

The function handles the expected AST nodes (*ast.TableSource and *ast.Join) that appear in FROM clauses. Note that it intentionally does not recurse into SelectStmt or SetOprStmt sources—this means it only finds LATERAL derived tables at the current query level, not within nested subqueries. This is appropriate for the test's purpose of validating top-level LATERAL parsing.

One minor observation: for test robustness, consider adding *ast.TableName to the switch for completeness, though it would simply return nil since table names cannot be LATERAL.

Optional: Add explicit TableName case for clarity
 	switch n := node.(type) {
 	case *ast.TableSource:
 		if n.Lateral {
 			return n
 		}
 		return findLateralTableSource(n.Source)
 	case *ast.Join:
 		if ts := findLateralTableSource(n.Left); ts != nil {
 			return ts
 		}
 		return findLateralTableSource(n.Right)
+	case *ast.TableName:
+		return nil // TableName cannot be LATERAL
 	}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/parser/lateral_test.go` around lines 188 - 208, The test helper
findLateralTableSource should explicitly handle ast.TableName to make the switch
exhaustive and clearer; update the switch in findLateralTableSource to add a
case for *ast.TableName that returns nil (and optionally a brief comment noting
table names cannot be LATERAL) so callers see the intent when reading the
function (refer to function name findLateralTableSource and the switch over
node.(type)).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@pkg/parser/lateral_test.go`:
- Around line 188-208: The test helper findLateralTableSource should explicitly
handle ast.TableName to make the switch exhaustive and clearer; update the
switch in findLateralTableSource to add a case for *ast.TableName that returns
nil (and optionally a brief comment noting table names cannot be LATERAL) so
callers see the intent when reading the function (refer to function name
findLateralTableSource and the switch over node.(type)).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 012f6356-3fc6-4778-b575-ab5de335e3b7

📥 Commits

Reviewing files that changed from the base of the PR and between 866750f and fb4d15c.

📒 Files selected for processing (1)
  • pkg/parser/lateral_test.go

@ti-chi-bot ti-chi-bot bot added the needs-1-more-lgtm Indicates a PR needs 1 more LGTM. label Mar 17, 2026
Copy link
Copy Markdown
Contributor

@fixdb fixdb left a comment

Choose a reason for hiding this comment

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

+1

@fixdb
Copy link
Copy Markdown
Contributor

fixdb commented Mar 17, 2026

/retest

@terry1purcell
Copy link
Copy Markdown
Contributor Author

/retest-required

@benmeadowcroft
Copy link
Copy Markdown

/approve

Copy link
Copy Markdown

@yudongusa yudongusa left a comment

Choose a reason for hiding this comment

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

Please open a document PR

Copy link
Copy Markdown
Collaborator

@Benjamin2037 Benjamin2037 left a comment

Choose a reason for hiding this comment

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

LGTM

@ti-chi-bot
Copy link
Copy Markdown

ti-chi-bot bot commented Mar 18, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Benjamin2037, benmeadowcroft, fixdb, hawkingrei, tangenta, yudongusa

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

The pull request process is described 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 the approved label Mar 18, 2026
@terry1purcell
Copy link
Copy Markdown
Contributor Author

/retest-required

2 similar comments
@terry1purcell
Copy link
Copy Markdown
Contributor Author

/retest-required

@terry1purcell
Copy link
Copy Markdown
Contributor Author

/retest-required

@fixdb
Copy link
Copy Markdown
Contributor

fixdb commented Mar 18, 2026

/retest

1 similar comment
@hawkingrei
Copy link
Copy Markdown
Member

/retest

@pingcap pingcap deleted a comment from ti-chi-bot bot Mar 18, 2026
@ti-chi-bot ti-chi-bot bot merged commit 270aa75 into pingcap:master Mar 18, 2026
35 checks passed
terry1purcell added a commit to terry1purcell/docs that referenced this pull request Mar 18, 2026
Document the LATERAL derived table syntax support added in pingcap/tidb#67076.
Includes a new page with syntax, examples, and current limitations, plus
updates to mysql-compatibility.md and TOC.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
terry1purcell added a commit to terry1purcell/docs that referenced this pull request Mar 18, 2026
LATERAL was added as a reserved keyword in pingcap/tidb#67076.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@terry1purcell terry1purcell deleted the lateral-parser branch March 26, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved lgtm 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.

8 participants