Skip to content

fix: add 'K_TYPE' to KeywordOrIdentifier to allow 'type' as a column name - #2448

Open
minleejae wants to merge 1 commit into
JSQLParser:masterfrom
minleejae:fix/drop-column-type-keyword
Open

fix: add 'K_TYPE' to KeywordOrIdentifier to allow 'type' as a column name#2448
minleejae wants to merge 1 commit into
JSQLParser:masterfrom
minleejae:fix/drop-column-type-keyword

Conversation

@minleejae

Copy link
Copy Markdown
Contributor

Fixes #2447

Problem

TYPE is a non-reserved keyword in MySQL 8.0, so this is valid MySQL syntax without quoting:

ALTER TABLE nullable_tbl DROP COLUMN type;

but it fails with ParseException: Encountered unexpected token: "type" "TYPE", while the same identifier parses fine in a SELECT (via RelObjectName(), since K_TYPE is inside the non-reserved word range).

Fix

Adds K_TYPE to KeywordOrIdentifier(), following the exact same approach as #2340 (which added K_DATA for the same class of bug, see #2339).

This covers all KeywordOrIdentifier() call sites: DROP [COLUMN], RENAME [COLUMN], and CHANGE [COLUMN].

Tests

  • testAlterTableDropColumnIssue2447ALTER TABLE test DROP COLUMN type
  • testAlterTableChangeColumnIssue2447ALTER TABLE tb_test CHANGE type INT (10)
  • testAlterTableRenameColumnIssue2447ALTER TABLE test_table RENAME COLUMN type TO type2

Full test suite passes (4646 tests, 0 failures). JavaCC parser generation reports the same pre-existing warnings as master (#2403) with no new choice conflicts.

…name

TYPE is a non-reserved keyword in MySQL, so statements like
'ALTER TABLE tbl DROP COLUMN type' are valid without quoting.
Follows the same approach as JSQLParser#2340 (K_DATA).

Fixes JSQLParser#2447
@minleejae
minleejae force-pushed the fix/drop-column-type-keyword branch from 9c29b1f to f9b5537 Compare August 5, 2026 09:06
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.

[BUG] JSQLParser 5.3 : MySQL : Cannot parse DROP COLUMN where "type" is the column name

1 participant