GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — fix: allow arbitrary column aliases in LATERAL VIEW by fudianchn · Pull Request #2452 · JSQLParser/JSqlParser

Conversation

@fudianchn

@fudianchn fudianchn commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

What

Allow a Hive/Spark LATERAL VIEW to declare an arbitrary number of column aliases, not just two.

Why

LATERAL VIEW ... x AS c1, c2, c3, ..., cN is valid Hive/Spark SQL — json_tuple and similar UDTFs commonly yield many output columns. The grammar only absorbed the first two aliases (#2088); from the third onward the aliases were silently parsed as comma-separated tables in the FROM clause (implicit cross joins):

  • PlainSelect.joins incorrectly contained Join(Table("c3")) ... Join(Table("cN"))
  • LateralView.columnAlias.aliasColumns stopped at 2

Because toString() re-emits the leaked aliases as the join list, the broken AST round-trips to textually identical SQL, so the bug is invisible to round-trip checks.

Reported in #2433.

How

The column-alias production (LateralView) handled the second alias with an optional [ "," name ] block. This adds a ("," name)* loop immediately after it, so the 3rd…Nth aliases are consumed by the lateral view instead of leaking to the FROM clause. The existing single- and two-alias behaviour is unchanged (the loop simply runs zero times).

Testing

  • New HiveTest#testLateralViewManyColumnAliasesIssue2433 parses LATERAL VIEW json_tuple(...) x AS c1, c2, c3, c4, c5, c6, c7 and asserts at the AST level (a round-trip assertion would be vacuous here): PlainSelect.joins is null and LateralView.columnAlias.aliasColumns has size 7.
  • Verified the test fails on master (expected: <null> but was: <[c3, c4, c5, c6, c7]>) and passes with this change.
  • mvn clean test: 4648 tests, 0 failures, 0 errors (26 skipped) — the existing two-alias case ([BUG] JSQLParser Version 5.1-SNAPSHOT: Lateral View with two aliases recognizes second alias as table #2088) and all other tests unchanged.
  • mvn spotless:check: clean.

Fixes #2433

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@fudianchn
fix: allow arbitrary column aliases in LATERAL VIEW
2863e50
Hive/Spark LATERAL VIEW supports an arbitrary number of column aliases
(e.g. json_tuple yielding many output columns), but the grammar only
absorbed the first two aliases (JSQLParser#2088). Any further aliases were
silently parsed as comma-separated tables in the FROM clause (implicit
cross joins), and because toString() re-emitted them as the join list
the broken AST round-tripped identically and was hard to detect by
inspection.

Generalise the column-alias production to consume any number of
aliases after the first two.

Fixes JSQLParser#2433

Signed-off-by: 付典 <[email protected]>
@fudianchn fudianchn mentioned this pull request Aug 7, 2026
[BUG] JSQLParser Version : 5.3 : LATERAL VIEW with three or more column aliases silently mis-parses extras as cross-join tables #2433
Closed
manticore-projects
manticore-projects requested changes Aug 7, 2026
View reviewed changes
Comment thread src/test/java/net/sf/jsqlparser/statement/select/HiveTest.java Resolved

Uh oh!

There was an error while loading. Please reload this page.

@fudianchn
test(hive): 按评审要求补充解析反解析断言
5ea1434
Signed-off-by: 付典 <[email protected]>
@manticore-projects
manticore-projects merged commit f92f5e5 into JSQLParser:master Aug 7, 2026
7 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@manticore-projects

manticore-projects commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Thank you for your work and effort, good job!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@fudianchn fudianchn mentioned this pull request Aug 7, 2026
fix: stop 0x hex literal from swallowing trailing whitespace (#2435) #2450
Merged
@fudianchn
fudianchn deleted the fix/hive-lateral-view-n-column-aliases-2433 branch August 21, 2026 00:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@manticore-projects manticore-projects manticore-projects requested changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

[BUG] JSQLParser Version : 5.3 : LATERAL VIEW with three or more column aliases silently mis-parses extras as cross-join tables

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@fudianchn @manticore-projects
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.