From 0786c6a74fc5ad5b9622ff253678817db0b42612 Mon Sep 17 00:00:00 2001 From: Shujing Yang Date: Tue, 23 Sep 2025 17:38:12 -0700 Subject: [PATCH] init --- .../spark/sql/execution/command/tables.scala | 11 +++++--- .../command/v1/DescribeTableSuite.scala | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala index d5dd934af2be1..73c3fe6ac17ca 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala @@ -838,6 +838,13 @@ case class DescribeColumnCommand( Row("data_type", dataType), Row("comment", comment.getOrElse("NULL")) ) + + // show default value if present + val defaultKey = CURRENT_DEFAULT_COLUMN_METADATA_KEY + if (field.metadata.contains(defaultKey)) { + buffer += Row("default", field.metadata.getString(defaultKey)) + } + if (isExtended) { // Show column stats when EXTENDED or FORMATTED is specified. buffer += Row("min", cs.flatMap(_.min.map( @@ -854,10 +861,6 @@ case class DescribeColumnCommand( hist <- c.histogram } yield histogramDescription(hist) buffer ++= histDesc.getOrElse(Seq(Row("histogram", "NULL"))) - val defaultKey = CURRENT_DEFAULT_COLUMN_METADATA_KEY - if (field.metadata.contains(defaultKey)) { - buffer += Row("default", field.metadata.getString(defaultKey)) - } } buffer.toSeq } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DescribeTableSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DescribeTableSuite.scala index f07dcea6b30e6..e0541f41d42f7 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DescribeTableSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DescribeTableSuite.scala @@ -237,6 +237,34 @@ trait DescribeTableSuiteBase extends command.DescribeTableSuiteBase } } + test("DESCRIBE table_name column_name should show default value") { + withTable("t") { + sql(s"""CREATE TABLE t( + | id INT, + | name STRING COMMENT 'name column' DEFAULT 'default', + | value DOUBLE + |) $defaultUsing""".stripMargin) + val descriptionDf = sql("DESCRIBE t name") + QueryTest.checkAnswer( + descriptionDf, + Seq( + Row("col_name", "name"), + Row("data_type", "string"), + Row("comment", "name column"), + Row("default", "'default'"))) + } + } + + test("DESCRIBE EXTENDED table_name column_name should not duplicate default value") { + withTable("t") { + sql(s"CREATE TABLE t(name STRING DEFAULT 'test') $defaultUsing") + val descriptionDf = sql("DESCRIBE TABLE EXTENDED t name") + val defaultRows = descriptionDf.collect().filter(_.getString(0) == "default") + assert(defaultRows.length == 1, "Default value should appear only once") + assert(defaultRows(0).getString(1) == "'test'") + } + } + test("DESCRIBE AS JSON partitions, clusters, buckets") { withNamespaceAndTable("ns", "table") { t => val tableCreationStr =