You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by we...@apache.org on 2022/01/12 13:23:51 UTC
[spark] branch master updated: [SPARK-37827][SQL] Put the some built-in table properties into V1Table.propertie to adapt to V2 command
This is an automated email from the ASF dual-hosted git repository.
wenchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new d7d31d0 [SPARK-37827][SQL] Put the some built-in table properties into V1Table.propertie to adapt to V2 command
d7d31d0 is described below
commit d7d31d0606170847721e5c604ea7993fb202596f
Author: PengLei <pe...@gmail.com>
AuthorDate: Wed Jan 12 21:22:18 2022 +0800
[SPARK-37827][SQL] Put the some built-in table properties into V1Table.propertie to adapt to V2 command
### What changes were proposed in this pull request?
Add V2 table build-in properties into V1Table.properties to adapt to V2 command.
### Why are the changes needed?
[#discuss](https://github.com/apache/spark/pull/34773#issuecomment-1005857748)
### Does this PR introduce _any_ user-facing change?
No
### How was this patch tested?
Add ut testcase and existed ut testcase.
Closes #35131 from Peng-Lei/SPARK-37827.
Authored-by: PengLei <pe...@gmail.com>
Signed-off-by: Wenchen Fan <we...@databricks.com>
---
.../spark/sql/catalyst/catalog/interface.scala | 6 ++-
.../spark/sql/connector/catalog/V1Table.scala | 20 +++++++++-
.../sql-tests/results/charvarchar.sql.out | 9 ++---
.../resources/sql-tests/results/describe.sql.out | 6 +--
.../resources/sql-tests/results/group-by.sql.out | 2 +-
.../results/postgreSQL/create_view.sql.out | 42 +++++++--------------
.../sql-tests/results/show-tables.sql.out | 1 -
.../spark/sql/connector/DataSourceV2SQLSuite.scala | 33 +++++++++++++++++
.../command/ShowTblPropertiesSuiteBase.scala | 5 ++-
.../datasources/v2/V2SessionCatalogSuite.scala | 43 +++++++++++++---------
10 files changed, 103 insertions(+), 64 deletions(-)
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/catalog/interface.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/catalog/interface.scala
index 3dc5aca..70ccb06 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/catalog/interface.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/catalog/interface.scala
@@ -386,7 +386,7 @@ case class CatalogTable(
val tableProperties = properties
.filterKeys(!_.startsWith(VIEW_PREFIX))
.toSeq.sortBy(_._1)
- .map(p => p._1 + "=" + p._2).mkString("[", ", ", "]")
+ .map(p => p._1 + "=" + p._2)
val partitionColumns = partitionColumnNames.map(quoteIdentifier).mkString("[", ", ", "]")
val lastAccess = {
if (lastAccessTime <= 0) "UNKNOWN" else new Date(lastAccessTime).toString
@@ -414,7 +414,9 @@ case class CatalogTable(
}
}
- if (properties.nonEmpty) map.put("Table Properties", tableProperties)
+ if (tableProperties.nonEmpty) {
+ map.put("Table Properties", tableProperties.mkString("[", ", ", "]"))
+ }
stats.foreach(s => map.put("Statistics", s.simpleString))
map ++= storage.toLinkedHashMap
if (tracksPartitionsInCatalog) map.put("Partition Provider", "Catalog")
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/connector/catalog/V1Table.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/connector/catalog/V1Table.scala
index a8a1b9a..07f66a6 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/connector/catalog/V1Table.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/connector/catalog/V1Table.scala
@@ -23,8 +23,9 @@ import scala.collection.JavaConverters._
import scala.collection.mutable
import org.apache.spark.sql.catalyst.TableIdentifier
-import org.apache.spark.sql.catalyst.catalog.CatalogTable
+import org.apache.spark.sql.catalyst.catalog.{CatalogTable, CatalogTableType}
import org.apache.spark.sql.catalyst.util.quoteIfNeeded
+import org.apache.spark.sql.connector.catalog.V1Table.addV2TableProperties
import org.apache.spark.sql.connector.expressions.{LogicalExpressions, Transform}
import org.apache.spark.sql.types.StructType
@@ -55,7 +56,7 @@ private[sql] case class V1Table(v1Table: CatalogTable) extends Table {
}
}
- override lazy val properties: util.Map[String, String] = v1Table.properties.asJava
+ override lazy val properties: util.Map[String, String] = addV2TableProperties(v1Table).asJava
override lazy val schema: StructType = v1Table.schema
@@ -82,6 +83,21 @@ private[sql] case class V1Table(v1Table: CatalogTable) extends Table {
override def toString: String = s"V1Table($name)"
}
+private[sql] object V1Table {
+ def addV2TableProperties(v1Table: CatalogTable): Map[String, String] = {
+ val external = v1Table.tableType == CatalogTableType.EXTERNAL
+
+ v1Table.properties ++
+ v1Table.storage.properties.map { case (key, value) =>
+ TableCatalog.OPTION_PREFIX + key -> value } ++
+ v1Table.provider.map(TableCatalog.PROP_PROVIDER -> _) ++
+ v1Table.comment.map(TableCatalog.PROP_COMMENT -> _) ++
+ v1Table.storage.locationUri.map(TableCatalog.PROP_LOCATION -> _.toString) ++
+ (if (external) Some(TableCatalog.PROP_EXTERNAL -> "true") else None) ++
+ Some(TableCatalog.PROP_OWNER -> v1Table.owner)
+ }
+}
+
/**
* A V2 table with V1 fallback support. This is used to fallback to V1 table when the V2 one
* doesn't implement specific capabilities but V1 already has.
diff --git a/sql/core/src/test/resources/sql-tests/results/charvarchar.sql.out b/sql/core/src/test/resources/sql-tests/results/charvarchar.sql.out
index 00180ee..fcd207c 100644
--- a/sql/core/src/test/resources/sql-tests/results/charvarchar.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/charvarchar.sql.out
@@ -193,8 +193,7 @@ Type VIEW
View Text select * from char_tbl
View Original Text select * from char_tbl
View Catalog and Namespace spark_catalog.default
-View Query Output Columns [c, v]
-Table Properties []
+View Query Output Columns [c, v]
-- !query
@@ -342,8 +341,7 @@ Type VIEW
View Text select * from char_tbl2
View Original Text select * from char_tbl2
View Catalog and Namespace spark_catalog.default
-View Query Output Columns [c, v]
-Table Properties []
+View Query Output Columns [c, v]
-- !query
@@ -459,8 +457,7 @@ Type VIEW
View Text select * from char_tbl2
View Original Text select * from char_tbl2
View Catalog and Namespace spark_catalog.default
-View Query Output Columns [c, v]
-Table Properties []
+View Query Output Columns [c, v]
-- !query
diff --git a/sql/core/src/test/resources/sql-tests/results/describe.sql.out b/sql/core/src/test/resources/sql-tests/results/describe.sql.out
index 8a2a59e..04259c0 100644
--- a/sql/core/src/test/resources/sql-tests/results/describe.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/describe.sql.out
@@ -507,8 +507,7 @@ Type VIEW
View Text SELECT * FROM t
View Original Text SELECT * FROM t
View Catalog and Namespace spark_catalog.default
-View Query Output Columns [a, b, c, d]
-Table Properties []
+View Query Output Columns [a, b, c, d]
-- !query
@@ -531,8 +530,7 @@ Type VIEW
View Text SELECT * FROM t
View Original Text SELECT * FROM t
View Catalog and Namespace spark_catalog.default
-View Query Output Columns [a, b, c, d]
-Table Properties []
+View Query Output Columns [a, b, c, d]
-- !query
diff --git a/sql/core/src/test/resources/sql-tests/results/group-by.sql.out b/sql/core/src/test/resources/sql-tests/results/group-by.sql.out
index dce5fd0..cd0fa48 100644
--- a/sql/core/src/test/resources/sql-tests/results/group-by.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/group-by.sql.out
@@ -1,5 +1,5 @@
-- Automatically generated by SQLQueryTestSuite
--- Number of queries: 74
+-- Number of queries: 76
-- !query
diff --git a/sql/core/src/test/resources/sql-tests/results/postgreSQL/create_view.sql.out b/sql/core/src/test/resources/sql-tests/results/postgreSQL/create_view.sql.out
index ab65a8f..a2064a4 100644
--- a/sql/core/src/test/resources/sql-tests/results/postgreSQL/create_view.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/postgreSQL/create_view.sql.out
@@ -250,8 +250,7 @@ Type VIEW
View Text SELECT * FROM base_table
View Original Text SELECT * FROM base_table
View Catalog and Namespace spark_catalog.temp_view_test
-View Query Output Columns [a, id]
-Table Properties []
+View Query Output Columns [a, id]
-- !query
@@ -306,8 +305,7 @@ Type VIEW
View Text SELECT * FROM base_table
View Original Text SELECT * FROM base_table
View Catalog and Namespace spark_catalog.temp_view_test
-View Query Output Columns [a, id]
-Table Properties []
+View Query Output Columns [a, id]
-- !query
@@ -352,8 +350,7 @@ View Original Text SELECT t1.a AS t1_a, t2.a AS t2_a
FROM base_table t1, base_table2 t2
WHERE t1.id = t2.id
View Catalog and Namespace spark_catalog.temp_view_test
-View Query Output Columns [t1_a, t2_a]
-Table Properties []
+View Query Output Columns [t1_a, t2_a]
-- !query
@@ -406,8 +403,7 @@ Type VIEW
View Text SELECT * FROM base_table WHERE id IN (SELECT id FROM base_table2)
View Original Text SELECT * FROM base_table WHERE id IN (SELECT id FROM base_table2)
View Catalog and Namespace spark_catalog.temp_view_test
-View Query Output Columns [a, id]
-Table Properties []
+View Query Output Columns [a, id]
-- !query
@@ -436,8 +432,7 @@ Type VIEW
View Text SELECT t1.id, t2.a FROM base_table t1, (SELECT * FROM base_table2) t2
View Original Text SELECT t1.id, t2.a FROM base_table t1, (SELECT * FROM base_table2) t2
View Catalog and Namespace spark_catalog.temp_view_test
-View Query Output Columns [id, a]
-Table Properties []
+View Query Output Columns [id, a]
-- !query
@@ -466,8 +461,7 @@ Type VIEW
View Text SELECT * FROM base_table WHERE EXISTS (SELECT 1 FROM base_table2)
View Original Text SELECT * FROM base_table WHERE EXISTS (SELECT 1 FROM base_table2)
View Catalog and Namespace spark_catalog.temp_view_test
-View Query Output Columns [a, id]
-Table Properties []
+View Query Output Columns [a, id]
-- !query
@@ -496,8 +490,7 @@ Type VIEW
View Text SELECT * FROM base_table WHERE NOT EXISTS (SELECT 1 FROM base_table2)
View Original Text SELECT * FROM base_table WHERE NOT EXISTS (SELECT 1 FROM base_table2)
View Catalog and Namespace spark_catalog.temp_view_test
-View Query Output Columns [a, id]
-Table Properties []
+View Query Output Columns [a, id]
-- !query
@@ -526,8 +519,7 @@ Type VIEW
View Text SELECT * FROM base_table WHERE EXISTS (SELECT 1)
View Original Text SELECT * FROM base_table WHERE EXISTS (SELECT 1)
View Catalog and Namespace spark_catalog.temp_view_test
-View Query Output Columns [a, id]
-Table Properties []
+View Query Output Columns [a, id]
-- !query
@@ -662,8 +654,7 @@ Type VIEW
View Text SELECT * FROM t1 CROSS JOIN t2
View Original Text SELECT * FROM t1 CROSS JOIN t2
View Catalog and Namespace spark_catalog.testviewschm2
-View Query Output Columns [num, name, num2, value]
-Table Properties []
+View Query Output Columns [num, name, num2, value]
-- !query
@@ -703,8 +694,7 @@ Type VIEW
View Text SELECT * FROM t1 INNER JOIN t2 ON t1.num = t2.num2
View Original Text SELECT * FROM t1 INNER JOIN t2 ON t1.num = t2.num2
View Catalog and Namespace spark_catalog.testviewschm2
-View Query Output Columns [num, name, num2, value]
-Table Properties []
+View Query Output Columns [num, name, num2, value]
-- !query
@@ -744,8 +734,7 @@ Type VIEW
View Text SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num2
View Original Text SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num2
View Catalog and Namespace spark_catalog.testviewschm2
-View Query Output Columns [num, name, num2, value]
-Table Properties []
+View Query Output Columns [num, name, num2, value]
-- !query
@@ -785,8 +774,7 @@ Type VIEW
View Text SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num2 AND t2.value = 'xxx'
View Original Text SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num2 AND t2.value = 'xxx'
View Catalog and Namespace spark_catalog.testviewschm2
-View Query Output Columns [num, name, num2, value]
-Table Properties []
+View Query Output Columns [num, name, num2, value]
-- !query
@@ -887,8 +875,7 @@ View Original Text SELECT * FROM tbl1 WHERE tbl1.a
BETWEEN (SELECT d FROM tbl2 WHERE c = 1) AND (SELECT e FROM tbl3 WHERE f = 2)
AND EXISTS (SELECT g FROM tbl4 LEFT JOIN tbl3 ON tbl4.h = tbl3.f)
View Catalog and Namespace spark_catalog.testviewschm2
-View Query Output Columns [a, b]
-Table Properties []
+View Query Output Columns [a, b]
-- !query
@@ -926,8 +913,7 @@ BETWEEN (SELECT d FROM tbl2 WHERE c = 1) AND (SELECT e FROM tbl3 WHERE f = 2)
AND EXISTS (SELECT g FROM tbl4 LEFT JOIN tbl3 ON tbl4.h = tbl3.f)
AND NOT EXISTS (SELECT g FROM tbl4 LEFT JOIN tmptbl ON tbl4.h = tmptbl.j)
View Catalog and Namespace spark_catalog.testviewschm2
-View Query Output Columns [a, b]
-Table Properties []
+View Query Output Columns [a, b]
-- !query
diff --git a/sql/core/src/test/resources/sql-tests/results/show-tables.sql.out b/sql/core/src/test/resources/sql-tests/results/show-tables.sql.out
index 276989d..1390043 100644
--- a/sql/core/src/test/resources/sql-tests/results/show-tables.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/show-tables.sql.out
@@ -127,7 +127,6 @@ Created Time [not included in comparison]
Last Access [not included in comparison]
Created By [not included in comparison]
Type: VIEW
-Table Properties: []
Schema: root
|-- e: integer (nullable = true)
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala
index 1fcfd94..3667a10 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala
@@ -2842,6 +2842,39 @@ class DataSourceV2SQLSuite
}
}
+ test("SPARK-37827: put build-in properties into V1Table.properties to adapt v2 command") {
+ val t = "tbl"
+ withTable(t) {
+ sql(
+ s"""
+ |CREATE TABLE $t (
+ | a bigint,
+ | b bigint
+ |)
+ |using parquet
+ |OPTIONS (
+ | from = 0,
+ | to = 1)
+ |COMMENT 'This is a comment'
+ |TBLPROPERTIES ('prop1' = '1', 'prop2' = '2')
+ |PARTITIONED BY (a)
+ |LOCATION '/tmp'
+ """.stripMargin)
+
+ val table = spark.sessionState.catalogManager.v2SessionCatalog.asTableCatalog
+ .loadTable(Identifier.of(Array("default"), t))
+ val properties = table.properties
+ assert(properties.get(TableCatalog.PROP_PROVIDER) == "parquet")
+ assert(properties.get(TableCatalog.PROP_COMMENT) == "This is a comment")
+ assert(properties.get(TableCatalog.PROP_LOCATION) == "file:/tmp")
+ assert(properties.containsKey(TableCatalog.PROP_OWNER))
+ assert(properties.get(s"${TableCatalog.OPTION_PREFIX}from") == "0")
+ assert(properties.get(s"${TableCatalog.OPTION_PREFIX}to") == "1")
+ assert(properties.get("prop1") == "1")
+ assert(properties.get("prop2") == "2")
+ }
+ }
+
private def testNotSupportedV2Command(sqlCommand: String, sqlParams: String): Unit = {
val e = intercept[AnalysisException] {
sql(s"$sqlCommand $sqlParams")
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/ShowTblPropertiesSuiteBase.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/ShowTblPropertiesSuiteBase.scala
index 7f9e927..fca1c68 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/ShowTblPropertiesSuiteBase.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/ShowTblPropertiesSuiteBase.scala
@@ -42,8 +42,9 @@ trait ShowTblPropertiesSuiteBase extends QueryTest with DDLCommandTestUtils {
val status = "new"
spark.sql(s"CREATE TABLE $tbl (id bigint, data string) $defaultUsing " +
s"TBLPROPERTIES ('user'='$user', 'status'='$status')")
-
- val properties = sql(s"SHOW TBLPROPERTIES $tbl").filter("key != 'transient_lastDdlTime'")
+ val properties = sql(s"SHOW TBLPROPERTIES $tbl")
+ .filter("key != 'transient_lastDdlTime'")
+ .filter("key != 'option.serialization.format'")
val schema = new StructType()
.add("key", StringType, nullable = false)
.add("value", StringType, nullable = false)
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalogSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalogSuite.scala
index 7465ab6..86f4dc4 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalogSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalogSuite.scala
@@ -122,7 +122,7 @@ class V2SessionCatalogTableSuite extends V2SessionCatalogBaseSuite {
val parsed = CatalystSqlParser.parseMultipartIdentifier(table.name)
assert(parsed == Seq("db", "test_table"))
assert(table.schema == schema)
- assert(table.properties.asScala == Map())
+ assert(filterV2TableProperties(table.properties) == Map())
assert(catalog.tableExists(testIdent))
}
@@ -140,7 +140,7 @@ class V2SessionCatalogTableSuite extends V2SessionCatalogBaseSuite {
val parsed = CatalystSqlParser.parseMultipartIdentifier(table.name)
assert(parsed == Seq("db", "test_table"))
assert(table.schema == schema)
- assert(table.properties == properties)
+ assert(filterV2TableProperties(table.properties).asJava == properties)
assert(catalog.tableExists(testIdent))
}
@@ -253,15 +253,15 @@ class V2SessionCatalogTableSuite extends V2SessionCatalogBaseSuite {
val table = catalog.createTable(testIdent, schema, Array.empty, emptyProps)
- assert(table.properties.asScala == Map())
+ assert(filterV2TableProperties(table.properties) == Map())
val updated = catalog.alterTable(testIdent, TableChange.setProperty("prop-1", "1"))
- assert(updated.properties.asScala == Map("prop-1" -> "1"))
+ assert(filterV2TableProperties(updated.properties) == Map("prop-1" -> "1"))
val loaded = catalog.loadTable(testIdent)
- assert(loaded.properties.asScala == Map("prop-1" -> "1"))
+ assert(filterV2TableProperties(loaded.properties) == Map("prop-1" -> "1"))
- assert(table.properties.asScala == Map())
+ assert(filterV2TableProperties(table.properties) == Map())
}
test("alterTable: add property to existing") {
@@ -272,15 +272,15 @@ class V2SessionCatalogTableSuite extends V2SessionCatalogBaseSuite {
val table = catalog.createTable(testIdent, schema, Array.empty, properties)
- assert(table.properties.asScala == Map("prop-1" -> "1"))
+ assert(filterV2TableProperties(table.properties) == Map("prop-1" -> "1"))
val updated = catalog.alterTable(testIdent, TableChange.setProperty("prop-2", "2"))
- assert(updated.properties.asScala == Map("prop-1" -> "1", "prop-2" -> "2"))
+ assert(filterV2TableProperties(updated.properties) == Map("prop-1" -> "1", "prop-2" -> "2"))
val loaded = catalog.loadTable(testIdent)
- assert(loaded.properties.asScala == Map("prop-1" -> "1", "prop-2" -> "2"))
+ assert(filterV2TableProperties(loaded.properties) == Map("prop-1" -> "1", "prop-2" -> "2"))
- assert(table.properties.asScala == Map("prop-1" -> "1"))
+ assert(filterV2TableProperties(table.properties) == Map("prop-1" -> "1"))
}
test("alterTable: remove existing property") {
@@ -291,15 +291,15 @@ class V2SessionCatalogTableSuite extends V2SessionCatalogBaseSuite {
val table = catalog.createTable(testIdent, schema, Array.empty, properties)
- assert(table.properties.asScala == Map("prop-1" -> "1"))
+ assert(filterV2TableProperties(table.properties) == Map("prop-1" -> "1"))
val updated = catalog.alterTable(testIdent, TableChange.removeProperty("prop-1"))
- assert(updated.properties.asScala == Map())
+ assert(filterV2TableProperties(updated.properties) == Map())
val loaded = catalog.loadTable(testIdent)
- assert(loaded.properties.asScala == Map())
+ assert(filterV2TableProperties(loaded.properties) == Map())
- assert(table.properties.asScala == Map("prop-1" -> "1"))
+ assert(filterV2TableProperties(table.properties) == Map("prop-1" -> "1"))
}
test("alterTable: remove missing property") {
@@ -307,15 +307,15 @@ class V2SessionCatalogTableSuite extends V2SessionCatalogBaseSuite {
val table = catalog.createTable(testIdent, schema, Array.empty, emptyProps)
- assert(table.properties.asScala == Map())
+ assert(filterV2TableProperties(table.properties) == Map())
val updated = catalog.alterTable(testIdent, TableChange.removeProperty("prop-1"))
- assert(updated.properties.asScala == Map())
+ assert(filterV2TableProperties(updated.properties) == Map())
val loaded = catalog.loadTable(testIdent)
- assert(loaded.properties.asScala == Map())
+ assert(filterV2TableProperties(loaded.properties) == Map())
- assert(table.properties.asScala == Map())
+ assert(filterV2TableProperties(table.properties) == Map())
}
test("alterTable: add top-level column") {
@@ -781,6 +781,13 @@ class V2SessionCatalogTableSuite extends V2SessionCatalogBaseSuite {
assert(exc.message.contains(testIdentNewOtherDb.namespace.quoted))
assert(exc.message.contains("RENAME TABLE source and destination databases do not match"))
}
+
+ private def filterV2TableProperties(
+ properties: util.Map[String, String]): Map[String, String] = {
+ properties.asScala.filter(kv => !CatalogV2Util.TABLE_RESERVED_PROPERTIES.contains(kv._1))
+ .filter(!_._1.startsWith(TableCatalog.OPTION_PREFIX))
+ .filter(_._1 != TableCatalog.PROP_EXTERNAL).toMap
+ }
}
class V2SessionCatalogNamespaceSuite extends V2SessionCatalogBaseSuite {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org