From 7b9d6fcec61cd72ffb257abf17eb0e9d6c462f9e Mon Sep 17 00:00:00 2001 From: Huaxin Gao Date: Sat, 16 Sep 2017 17:23:38 -0700 Subject: [PATCH 1/2] [SPARK-21338][SQL]implement isCascadingTruncateTable() method in AggregatedDialect --- .../scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala | 4 ++++ .../src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala | 2 ++ 2 files changed, 6 insertions(+) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala index 467d8d62d1b7..fc77163dad0e 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala @@ -41,4 +41,8 @@ private class AggregatedDialect(dialects: List[JdbcDialect]) extends JdbcDialect override def getJDBCType(dt: DataType): Option[JdbcType] = { dialects.flatMap(_.getJDBCType(dt)).headOption } + + override def isCascadingTruncateTable(): Option[Boolean] = { + dialects.flatMap(_.isCascadingTruncateTable).headOption + } } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala index 689f4106824a..fd12bb9e530b 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala @@ -740,11 +740,13 @@ class JDBCSuite extends SparkFunSuite } else { None } + override def isCascadingTruncateTable(): Option[Boolean] = Some(true) }, testH2Dialect)) assert(agg.canHandle("jdbc:h2:xxx")) assert(!agg.canHandle("jdbc:h2")) assert(agg.getCatalystType(0, "", 1, null) === Some(LongType)) assert(agg.getCatalystType(1, "", 1, null) === Some(StringType)) + assert(agg.isCascadingTruncateTable() === Some(true)) } test("DB2Dialect type mapping") { From bd8e2b95a6c8be0bf1f201e9cccb0b22c14abc96 Mon Sep 17 00:00:00 2001 From: Huaxin Gao Date: Mon, 18 Sep 2017 15:33:57 -0700 Subject: [PATCH 2/2] return true if any of the dialect's isCascadingTruncateTable returns true --- .../scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala index fc77163dad0e..7432a1538ce9 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala @@ -43,6 +43,6 @@ private class AggregatedDialect(dialects: List[JdbcDialect]) extends JdbcDialect } override def isCascadingTruncateTable(): Option[Boolean] = { - dialects.flatMap(_.isCascadingTruncateTable).headOption + dialects.flatMap(_.isCascadingTruncateTable()).reduceOption(_ || _) } }