Skip to content

Commit ae95c18

Browse files
committed
fix: alter table add columns closes #3835
1 parent 709ab35 commit ae95c18

File tree

4 files changed

+9
-3
lines changed

4 files changed

+9
-3
lines changed

sqlglot/dialects/spark2.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,6 @@ class Parser(Hive.Parser):
165165
"SHUFFLE_REPLICATE_NL": lambda self: self._parse_join_hint("SHUFFLE_REPLICATE_NL"),
166166
}
167167

168-
def _parse_add_column(self) -> t.Optional[exp.Expression]:
169-
return self._match_text_seq("ADD", "COLUMNS") and self._parse_schema()
170-
171168
def _parse_drop_column(self) -> t.Optional[exp.Drop | exp.Command]:
172169
return self._match_text_seq("DROP", "COLUMNS") and self.expression(
173170
exp.Drop, this=self._parse_schema(), kind="COLUMNS"

sqlglot/generator.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3139,6 +3139,7 @@ def add_column_sql(self, expression: exp.AlterTable) -> str:
31393139
expression,
31403140
key="actions",
31413141
prefix="ADD COLUMN ",
3142+
skip_first=True,
31423143
)
31433144
return f"ADD {self.expressions(expression, key='actions', flat=True)}"
31443145

sqlglot/parser.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6305,6 +6305,13 @@ def _parse_alter_table_add(self) -> t.List[exp.Expression]:
63056305
self._retreat(index)
63066306
if not self.ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN and self._match_text_seq("ADD"):
63076307
return self._parse_wrapped_csv(self._parse_field_def, optional=True)
6308+
6309+
if self._match_text_seq("ADD", "COLUMNS"):
6310+
schema = self._parse_schema()
6311+
if schema:
6312+
return [schema]
6313+
return []
6314+
63086315
return self._parse_wrapped_csv(self._parse_add_column, optional=True)
63096316

63106317
def _parse_alter_table_alter(self) -> t.Optional[exp.Expression]:

tests/dialects/test_databricks.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ class TestDatabricks(Validator):
77
dialect = "databricks"
88

99
def test_databricks(self):
10+
self.validate_identity("ALTER TABLE labels ADD COLUMN label_score FLOAT")
1011
self.validate_identity("DESCRIBE HISTORY a.b")
1112
self.validate_identity("DESCRIBE history.tbl")
1213
self.validate_identity("CREATE TABLE t (a STRUCT<c: MAP<STRING, STRING>>)")

0 commit comments

Comments
 (0)