This is an automated email from the ASF dual-hosted git repository.
maxgekk 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 ced321c8b5a [SPARK-45383][SQL] Fix error message for time travel with
non-existing table
ced321c8b5a is described below
commit ced321c8b5a32c69dfb2841d4bec8a03f21b8038
Author: Wenchen Fan <[email protected]>
AuthorDate: Mon Oct 9 22:15:45 2023 +0300
[SPARK-45383][SQL] Fix error message for time travel with non-existing table
### What changes were proposed in this pull request?
Fixes a small bug to report `TABLE_OR_VIEW_NOT_FOUND` error correctly for
time travel. It was missed before because `RelationTimeTravel` is a leaf node
but it may contain `UnresolvedRelation`.
### Why are the changes needed?
bug fix
### Does this PR introduce _any_ user-facing change?
Yes, the error message becomes reasonable
### How was this patch tested?
new tests
### Was this patch authored or co-authored using generative AI tooling?
no
Closes #43298 from cloud-fan/time-travel.
Authored-by: Wenchen Fan <[email protected]>
Signed-off-by: Max Gekk <[email protected]>
---
.../apache/spark/sql/catalyst/analysis/CheckAnalysis.scala | 4 ++++
.../org/apache/spark/sql/connector/DataSourceV2SQLSuite.scala | 11 +++++++++++
2 files changed, 15 insertions(+)
diff --git
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala
index e140625f47a..611dd7b3009 100644
---
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala
+++
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala
@@ -384,6 +384,9 @@ trait CheckAnalysis extends PredicateHelper with
LookupCatalog with QueryErrorsB
})
operator match {
+ case RelationTimeTravel(u: UnresolvedRelation, _, _) =>
+ u.tableNotFound(u.multipartIdentifier)
+
case etw: EventTimeWatermark =>
etw.eventTime.dataType match {
case s: StructType
@@ -396,6 +399,7 @@ trait CheckAnalysis extends PredicateHelper with
LookupCatalog with QueryErrorsB
"eventName" -> toSQLId(etw.eventTime.name),
"eventType" -> toSQLType(etw.eventTime.dataType)))
}
+
case f: Filter if f.condition.dataType != BooleanType =>
f.failAnalysis(
errorClass = "DATATYPE_MISMATCH.FILTER_NOT_BOOLEAN",
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 ae639b272a2..047bc8de739 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
@@ -3014,6 +3014,17 @@ class DataSourceV2SQLSuiteV1Filter
sqlState = None,
parameters = Map("relationId" -> "`x`"))
+ checkError(
+ exception = intercept[AnalysisException] {
+ sql("SELECT * FROM non_exist VERSION AS OF 1")
+ },
+ errorClass = "TABLE_OR_VIEW_NOT_FOUND",
+ parameters = Map("relationName" -> "`non_exist`"),
+ context = ExpectedContext(
+ fragment = "non_exist",
+ start = 14,
+ stop = 22))
+
val subquery1 = "SELECT 1 FROM non_exist"
checkError(
exception = intercept[AnalysisException] {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]