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 d5e32757429 [SPARK-41435][SQL] Change to call
`invalidFunctionArgumentsError` for `curdate()` when `expressions` is not empty
d5e32757429 is described below
commit d5e327574290e1da92d109081c500782d5a3bc21
Author: yangjie01 <[email protected]>
AuthorDate: Thu Dec 8 15:40:18 2022 +0300
[SPARK-41435][SQL] Change to call `invalidFunctionArgumentsError` for
`curdate()` when `expressions` is not empty
### What changes were proposed in this pull request?
This pr change to call `invalidFunctionArgumentsError` instead of
`invalidFunctionArgumentNumberError ` for `curdate()` when `expressions` is
not empty, then `curdate()` will throw `AnalysisException` with error class
`WRONG_NUM_ARGS` when input args it not empty.
### Why are the changes needed?
`WRONG_NUM_ARGS` is a more appropriate error class
### Does this PR introduce _any_ user-facing change?
No
### How was this patch tested?
Add new test case
Closes #38960 from LuciferYang/curdate-err-msg.
Authored-by: yangjie01 <[email protected]>
Signed-off-by: Max Gekk <[email protected]>
---
.../catalyst/expressions/datetimeExpressions.scala | 4 ++--
.../src/test/resources/sql-tests/inputs/date.sql | 1 +
.../resources/sql-tests/results/ansi/date.sql.out | 23 ++++++++++++++++++++++
.../test/resources/sql-tests/results/date.sql.out | 23 ++++++++++++++++++++++
.../sql-tests/results/datetime-legacy.sql.out | 23 ++++++++++++++++++++++
.../org/apache/spark/sql/DateFunctionsSuite.scala | 13 ++++++++++++
6 files changed, 85 insertions(+), 2 deletions(-)
diff --git
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala
index e8bad46e84a..3e89dfe39ce 100644
---
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala
+++
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala
@@ -171,8 +171,8 @@ object CurDateExpressionBuilder extends ExpressionBuilder {
if (expressions.isEmpty) {
CurrentDate()
} else {
- throw QueryCompilationErrors.invalidFunctionArgumentNumberError(
- Seq.empty, funcName, expressions.length)
+ throw QueryCompilationErrors.invalidFunctionArgumentsError(
+ funcName, "0", expressions.length)
}
}
}
diff --git a/sql/core/src/test/resources/sql-tests/inputs/date.sql
b/sql/core/src/test/resources/sql-tests/inputs/date.sql
index ab57c7c754c..163855069f0 100644
--- a/sql/core/src/test/resources/sql-tests/inputs/date.sql
+++ b/sql/core/src/test/resources/sql-tests/inputs/date.sql
@@ -19,6 +19,7 @@ select date'2021-4294967297-11';
select current_date = current_date;
-- under ANSI mode, `current_date` can't be a function name.
select current_date() = current_date();
+select curdate(1);
-- conversions between date and unix_date (number of days from epoch)
select DATE_FROM_UNIX_DATE(0), DATE_FROM_UNIX_DATE(1000),
DATE_FROM_UNIX_DATE(null);
diff --git a/sql/core/src/test/resources/sql-tests/results/ansi/date.sql.out
b/sql/core/src/test/resources/sql-tests/results/ansi/date.sql.out
index 9ddbaec4f99..d0f5b02c916 100644
--- a/sql/core/src/test/resources/sql-tests/results/ansi/date.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/ansi/date.sql.out
@@ -135,6 +135,29 @@ struct<(current_date() = current_date()):boolean>
true
+-- !query
+select curdate(1)
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+ "errorClass" : "WRONG_NUM_ARGS",
+ "messageParameters" : {
+ "actualNum" : "1",
+ "expectedNum" : "0",
+ "functionName" : "`curdate`"
+ },
+ "queryContext" : [ {
+ "objectType" : "",
+ "objectName" : "",
+ "startIndex" : 8,
+ "stopIndex" : 17,
+ "fragment" : "curdate(1)"
+ } ]
+}
+
+
-- !query
select DATE_FROM_UNIX_DATE(0), DATE_FROM_UNIX_DATE(1000),
DATE_FROM_UNIX_DATE(null)
-- !query schema
diff --git a/sql/core/src/test/resources/sql-tests/results/date.sql.out
b/sql/core/src/test/resources/sql-tests/results/date.sql.out
index 9e427adb052..434e3c7abd3 100644
--- a/sql/core/src/test/resources/sql-tests/results/date.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/date.sql.out
@@ -121,6 +121,29 @@ struct<(current_date() = current_date()):boolean>
true
+-- !query
+select curdate(1)
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+ "errorClass" : "WRONG_NUM_ARGS",
+ "messageParameters" : {
+ "actualNum" : "1",
+ "expectedNum" : "0",
+ "functionName" : "`curdate`"
+ },
+ "queryContext" : [ {
+ "objectType" : "",
+ "objectName" : "",
+ "startIndex" : 8,
+ "stopIndex" : 17,
+ "fragment" : "curdate(1)"
+ } ]
+}
+
+
-- !query
select DATE_FROM_UNIX_DATE(0), DATE_FROM_UNIX_DATE(1000),
DATE_FROM_UNIX_DATE(null)
-- !query schema
diff --git
a/sql/core/src/test/resources/sql-tests/results/datetime-legacy.sql.out
b/sql/core/src/test/resources/sql-tests/results/datetime-legacy.sql.out
index 3c3a70acd1a..de572c0af9e 100644
--- a/sql/core/src/test/resources/sql-tests/results/datetime-legacy.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/datetime-legacy.sql.out
@@ -121,6 +121,29 @@ struct<(current_date() = current_date()):boolean>
true
+-- !query
+select curdate(1)
+-- !query schema
+struct<>
+-- !query output
+org.apache.spark.sql.AnalysisException
+{
+ "errorClass" : "WRONG_NUM_ARGS",
+ "messageParameters" : {
+ "actualNum" : "1",
+ "expectedNum" : "0",
+ "functionName" : "`curdate`"
+ },
+ "queryContext" : [ {
+ "objectType" : "",
+ "objectName" : "",
+ "startIndex" : 8,
+ "stopIndex" : 17,
+ "fragment" : "curdate(1)"
+ } ]
+}
+
+
-- !query
select DATE_FROM_UNIX_DATE(0), DATE_FROM_UNIX_DATE(1000),
DATE_FROM_UNIX_DATE(null)
-- !query schema
diff --git
a/sql/core/src/test/scala/org/apache/spark/sql/DateFunctionsSuite.scala
b/sql/core/src/test/scala/org/apache/spark/sql/DateFunctionsSuite.scala
index 0740e1b2bdb..028ab8ea147 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/DateFunctionsSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/DateFunctionsSuite.scala
@@ -49,6 +49,19 @@ class DateFunctionsSuite extends QueryTest with
SharedSparkSession {
sql("""SELECT CURDATE()""").collect().head.getDate(0))
val d4 = DateTimeUtils.currentDate(ZoneId.systemDefault())
assert(d0 <= d1 && d1 <= d2 && d2 <= d3 && d3 <= d4 && d4 - d0 <= 1)
+
+ checkError(
+ exception = intercept[AnalysisException] {
+ sql("SELECT CURDATE(1)")
+ },
+ errorClass = "WRONG_NUM_ARGS",
+ parameters = Map(
+ "functionName" -> "`curdate`",
+ "expectedNum" -> "0",
+ "actualNum" -> "1"
+ ),
+ context = ExpectedContext("", "", 7, 16, "CURDATE(1)")
+ )
}
test("function current_timestamp and now") {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]