aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
authorCheng Hao <hao.cheng@intel.com>2014-10-28 14:36:06 -0700
committerMichael Armbrust <michael@databricks.com>2014-10-28 14:36:06 -0700
commit4b55482abf899c27da3d55401ad26b4e9247b327 (patch)
tree53d9bff976ad43beff49a7b20e010f0de0cee793 /sql/catalyst
parentabcafcfba38d7c8dba68a5510475c5c49ae54d92 (diff)
downloadspark-4b55482abf899c27da3d55401ad26b4e9247b327.tar.gz
spark-4b55482abf899c27da3d55401ad26b4e9247b327.tar.bz2
spark-4b55482abf899c27da3d55401ad26b4e9247b327.zip
[SPARK-3343] [SQL] Add serde support for CTAS
Currently, `CTAS` (Create Table As Select) doesn't support specifying the `SerDe` in HQL. This PR will pass down the `ASTNode` into the physical operator `execution.CreateTableAsSelect`, which will extract the `CreateTableDesc` object via Hive `SemanticAnalyzer`. In the meantime, I also update the `HiveMetastoreCatalog.createTable` to optionally support the `CreateTableDesc` for table creation. Author: Cheng Hao <hao.cheng@intel.com> Closes #2570 from chenghao-intel/ctas_serde and squashes the following commits: e011ef5 [Cheng Hao] shim for both 0.12 & 0.13.1 cfb3662 [Cheng Hao] revert to hive 0.12 c8a547d [Cheng Hao] Support SerDe properties within CTAS
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala
index 14b03c7445..00bdf108a8 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicOperators.scala
@@ -114,11 +114,13 @@ case class InsertIntoTable(
}
}
-case class CreateTableAsSelect(
+case class CreateTableAsSelect[T](
databaseName: Option[String],
tableName: String,
- child: LogicalPlan) extends UnaryNode {
- override def output = child.output
+ child: LogicalPlan,
+ allowExisting: Boolean,
+ desc: Option[T] = None) extends UnaryNode {
+ override def output = Seq.empty[Attribute]
override lazy val resolved = (databaseName != None && childrenResolved)
}