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 <yangji...@baidu.com> 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 <yangji...@baidu.com> Signed-off-by: Max Gekk <max.g...@gmail.com> --- .../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: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org