Skip to content

Commit 803b196

Browse files
committed
Fix isCascadingTruncateTable for AggregatedDialect.
1 parent 718bbc9 commit 803b196

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

sql/core/src/main/scala/org/apache/spark/sql/jdbc/AggregatedDialect.scala

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,17 @@ private class AggregatedDialect(dialects: List[JdbcDialect]) extends JdbcDialect
4343
}
4444

4545
override def isCascadingTruncateTable(): Option[Boolean] = {
46-
dialects.flatMap(_.isCascadingTruncateTable()).reduceOption(_ || _)
46+
// If any dialect claims cascading truncate, this dialect is also cascading truncate.
47+
// Otherwise, if any dialect has unknown cascading truncate, this dialect is also unknown.
48+
val cascading = dialects.flatMap(_.isCascadingTruncateTable()).reduceOption(_ || _)
49+
if (cascading.get) {
50+
cascading
51+
} else {
52+
if (dialects.exists(_.isCascadingTruncateTable().isEmpty)) {
53+
None
54+
} else {
55+
Some(false)
56+
}
57+
}
4758
}
4859
}

sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,19 @@ class JDBCSuite extends SparkFunSuite
747747
assert(agg.getCatalystType(0, "", 1, null) === Some(LongType))
748748
assert(agg.getCatalystType(1, "", 1, null) === Some(StringType))
749749
assert(agg.isCascadingTruncateTable() === Some(true))
750+
751+
val agg2 = new AggregatedDialect(List(new JdbcDialect {
752+
override def canHandle(url: String) : Boolean = url.startsWith("jdbc:h2:")
753+
override def getCatalystType(
754+
sqlType: Int, typeName: String, size: Int, md: MetadataBuilder): Option[DataType] =
755+
if (sqlType % 2 == 0) {
756+
Some(LongType)
757+
} else {
758+
None
759+
}
760+
override def isCascadingTruncateTable(): Option[Boolean] = Some(false)
761+
}, testH2Dialect))
762+
assert(agg2.isCascadingTruncateTable() === None)
750763
}
751764

752765
test("DB2Dialect type mapping") {

0 commit comments

Comments
 (0)