Skip to content

fix: share MySQL character set parsing across column types and casts - #2662

Merged
manticore-projects merged 1 commit into
JSQLParser:masterfrom
minleejae:fix/mysql-type-character-sets
Sep 21, 2026
Merged

manticore-projects merged 1 commit into
JSQLParser:masterfrom
minleejae:fix/mysql-type-character-sets

Conversation

@minleejae

Copy link
Copy Markdown
Contributor

Valid MySQL casts and column definitions fail when they use the CHARSET abbreviation or quote the character set name. This also affects generated columns and ALTER TABLE MODIFY with ENUM types.

Route these forms through a shared ColDataType character-set production. Preserve the name's spelling and expose whether CHARSET was used; existing characterSet setters continue to render CHARACTER SET by default. CREATE TABLE, ALTER TABLE and CAST use the same path, with type equality/hashCode and AST mutation coverage.

This change addresses type character-set clauses. MySQL CONVERT(expression, type) is a separate existing grammar gap; the existing CONVERT(expression USING charset) form is covered as a control.

References: MySQL column character sets, CAST.

Validation:

  • Full Gradle check passed on Java 17, including grammar ambiguity, formatting, static analysis, coverage and the full test suite. JUnit XML totals: 7822 tests, 0 failures/errors, 25 skipped.
  • MySQL 8.4.11: 15 cases (12 valid, 3 invalid). For all 12 valid cases, the original SQL, toString output and StatementDeParser output executed with identical results.

Signed-off-by: minleejae <mmj9808@gmail.com>
@manticore-projects
manticore-projects merged commit 4136d51 into JSQLParser:master Sep 21, 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