Skip to content

feat: structure MySQL ALTER TABLE ordering and share table options - #2708

Merged
manticore-projects merged 3 commits into
JSQLParser:masterfrom
minleejae:feat/mysql-alter-table-options-order
Sep 25, 2026
Merged

manticore-projects merged 3 commits into
JSQLParser:masterfrom
minleejae:feat/mysql-alter-table-options-order

Conversation

@minleejae

@minleejae minleejae commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

MySQL ALTER TABLE ORDER BY and combined ENGINE / ROW_FORMAT / statistics clauses could remain opaque ALTER actions. This prevented callers from inspecting or changing the ordering and table settings through the AST.

Add AlterExpressionOrderBy using the existing OrderByElement model and expression traversal. Reuse MySqlTableOption for CREATE and ALTER row format/statistics settings, with explicit option kinds and validation. Keep ORDER BY at the end of the action list: its commas belong to the column list, matching MySQL grammar and execution behavior.

Validation: full Gradle check, including the grammar ambiguity gate; AST mutation/traversal tests, following statements, mixed action boundaries and invalid option values. The two audited ALTER statements execute with matching selected catalog results for original, toString and deparser output on MySQL 9.7.2 and 26.7.0.

Additional execution checks on both MySQL versions confirm that table options before ORDER BY are accepted, while ENGINE or ADD COLUMN after its column list are rejected; matching regression tests cover these boundaries.

Signed-off-by: minleejae <mmj9808@gmail.com>
Signed-off-by: minleejae <mmj9808@gmail.com>

# Conflicts:
#	src/main/java/net/sf/jsqlparser/statement/create/table/TableOption.java
#	src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
@manticore-projects

Copy link
Copy Markdown
Contributor

Please resolve conflicts.

Signed-off-by: minleejae <mmj9808@gmail.com>
@manticore-projects
manticore-projects merged commit aeea767 into JSQLParser:master Sep 25, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants