Skip to content

Commit f0618b9

Browse files
committed
Feat(spark): support AS JSON suffix in describe statement closes #6866
1 parent 5922ba6 commit f0618b9

4 files changed

Lines changed: 5 additions & 1 deletion

File tree

sqlglot/expressions.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,6 +1618,7 @@ class Describe(Expression):
16181618
"expressions": False,
16191619
"partition": False,
16201620
"format": False,
1621+
"as_json": False,
16211622
}
16221623

16231624

sqlglot/generator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1328,8 +1328,9 @@ def describe_sql(self, expression: exp.Describe) -> str:
13281328
partition = f" {partition}" if partition else ""
13291329
format = self.sql(expression, "format")
13301330
format = f" {format}" if format else ""
1331+
as_json = " AS JSON" if expression.args.get("as_json") else ""
13311332

1332-
return f"DESCRIBE{style}{format} {self.sql(expression, 'this')}{partition}"
1333+
return f"DESCRIBE{style}{format} {self.sql(expression, 'this')}{partition}{as_json}"
13331334

13341335
def heredoc_sql(self, expression: exp.Heredoc) -> str:
13351336
tag = self.sql(expression, "tag")

sqlglot/parser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2991,6 +2991,7 @@ def _parse_describe(self) -> exp.Describe:
29912991
expressions=expressions,
29922992
partition=partition,
29932993
format=format,
2994+
as_json=self._match_text_seq("AS", "JSON"),
29942995
)
29952996

29962997
def _parse_multitable_inserts(self, comments: t.Optional[t.List[str]]) -> exp.MultitableInserts:

tests/dialects/test_databricks.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def test_databricks(self):
1212
self.assertEqual(null_type.sql(), "NULL")
1313
self.assertEqual(null_type.sql("databricks"), "VOID")
1414

15+
self.validate_identity("DESCRIBE EXTENDED staging.onetrade_startb AS JSON")
1516
self.validate_identity("SELECT BITMAP_BIT_POSITION(10)")
1617
self.validate_identity("SELECT BITMAP_BUCKET_NUMBER(32769)")
1718
self.validate_identity("SELECT BITMAP_CONSTRUCT_AGG(value)")

0 commit comments

Comments
 (0)