From 145f4908cdcec7ad8a402377c956bf1e75a5c090 Mon Sep 17 00:00:00 2001 From: Kenny Wong <79668578+wong-codaio@users.noreply.github.com> Date: Mon, 17 Jan 2022 04:55:11 -0500 Subject: [PATCH] Support Snowflake column rename (#2327) --- src/sqlfluff/dialects/dialect_snowflake.py | 9 ++++++++- .../snowflake/snowflake_alter_table_column.sql | 4 ++++ .../snowflake/snowflake_alter_table_column.yml | 17 ++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/sqlfluff/dialects/dialect_snowflake.py b/src/sqlfluff/dialects/dialect_snowflake.py index c2f395e228e..7a85618c61d 100644 --- a/src/sqlfluff/dialects/dialect_snowflake.py +++ b/src/sqlfluff/dialects/dialect_snowflake.py @@ -959,7 +959,14 @@ class AlterTableTableColumnActionSegment(BaseSegment): match_grammar = Sequence( OneOf( # @TODO: Add Column - # @TODO: Rename column + # Rename column + Sequence( + "RENAME", + "COLUMN", + Ref("ColumnReferenceSegment"), + "TO", + Ref("ColumnReferenceSegment"), + ), # Alter/Modify column(s) Sequence( OneOf("ALTER", "MODIFY"), diff --git a/test/fixtures/dialects/snowflake/snowflake_alter_table_column.sql b/test/fixtures/dialects/snowflake/snowflake_alter_table_column.sql index 8ad02a4421f..2a501f00d2e 100644 --- a/test/fixtures/dialects/snowflake/snowflake_alter_table_column.sql +++ b/test/fixtures/dialects/snowflake/snowflake_alter_table_column.sql @@ -33,3 +33,7 @@ alter table empl_info modify -- DROP COLUMN ALTER TABLE empl_info DROP COLUMN my_column; ALTER TABLE some_schema.empl_info DROP COLUMN my_column; + + +-- Rename column +ALTER TABLE empl_info RENAME COLUMN old_col_name TO new_col_name; diff --git a/test/fixtures/dialects/snowflake/snowflake_alter_table_column.yml b/test/fixtures/dialects/snowflake/snowflake_alter_table_column.yml index e8bba8f87cb..8f93e3be77a 100644 --- a/test/fixtures/dialects/snowflake/snowflake_alter_table_column.yml +++ b/test/fixtures/dialects/snowflake/snowflake_alter_table_column.yml @@ -3,7 +3,7 @@ # computed by SQLFluff when running the tests. Please run # `python test/generate_parse_fixture_yml.py` to generate them after adding or # altering SQL files. -_hash: ceacb0017f29185609aade7a85afc1b23121f52bd2080202295cdb5d58d83cd0 +_hash: 4db9f464f87c27464350e4314b93708eeda0b3c5b6d44a95cd0984edd9b01dbb file: - statement: alter_table_statement: @@ -202,3 +202,18 @@ file: - column_reference: identifier: my_column - statement_terminator: ; +- statement: + alter_table_statement: + - keyword: ALTER + - keyword: TABLE + - table_reference: + identifier: empl_info + - alter_table_table_column_action: + - keyword: RENAME + - keyword: COLUMN + - column_reference: + identifier: old_col_name + - keyword: TO + - column_reference: + identifier: new_col_name +- statement_terminator: ;