Support setting visibility on ALTER COLUMN
.
#4809
Merged
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.
MySQL 8.0 introduced the ability to hide and unhide columns. Columns can be hidden in a
CREATE TABLE
statement (currently unimplemented insqlglot
) and can be subsequently changed with anALTER TABLE
syntax:ALTER COLUMN x SET {VISIBLE|INVISIBLE}
.This commit adds support for column hiding through the
ALTER TABLE
syntax. However, it does so in a MySQL-specific way. Other RDBMSs have similar support for column hiding, but implement it slightly differently:MODIFY x INVISIBLE
ALTER x t IMPLICITLY HIDDEN
ALTER x ADD HIDDEN
As there is no other dialect in
sqlglot
that implements invisibility, and because the parser currently maintains other dialect-specific implementations, I wasn't sure if the amount of effort to refactor the parser to be dialect-agnostic was worthwhile for this specific change (I couldn't find a similar pattern). If you disagree, I would be willing to attempt the refactor, though, I would appreciate some suggestions on how it could be done, as it was not immediately apparent.