gengliangwang commented on code in PR #41191:
URL: https://github.com/apache/spark/pull/41191#discussion_r1209790677
##########
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/v2Commands.scala:
##########
@@ -1382,11 +1383,64 @@ case class DropIndex(
copy(table = newChild)
}
-case class TableSpec(
+trait TableSpec {
+ def properties: Map[String, String]
+ def provider: Option[String]
+ def options: Map[String, String]
+ def location: Option[String]
+ def comment: Option[String]
+ def serde: Option[SerdeInfo]
+ def external: Boolean
+ def copy(
+ properties: Map[String, String] = properties,
+ provider: Option[String] = provider,
+ options: Map[String, String] = options,
+ location: Option[String] = location,
+ comment: Option[String] = comment,
+ serde: Option[SerdeInfo] = serde,
+ external: Boolean = external): TableSpec
+}
+
+case class UnresolvedTableSpec(
+ properties: Map[String, String],
+ provider: Option[String],
+ optionsExpressions: Map[String, Expression],
+ location: Option[String],
+ comment: Option[String],
+ serde: Option[SerdeInfo],
+ external: Boolean) extends TableSpec {
+ override def options: Map[String, String] = {
+ throw SparkException.internalError("Invalid call to 'options' method for
unresolved TableSpec")
+ }
+ override def copy(
+ properties: Map[String, String],
+ provider: Option[String],
+ options: Map[String, String],
+ location: Option[String],
+ comment: Option[String],
+ serde: Option[SerdeInfo],
+ external: Boolean = external): TableSpec = {
+ UnresolvedTableSpec(
+ properties, provider, optionsExpressions, location, comment, serde,
external)
+ }
+}
+
+case class ResolvedTableSpec(
properties: Map[String, String],
provider: Option[String],
options: Map[String, String],
location: Option[String],
comment: Option[String],
serde: Option[SerdeInfo],
- external: Boolean)
+ external: Boolean) extends TableSpec {
+ override def copy(
Review Comment:
case class has built-in support for method copy. Why do we need this?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]