summaryrefslogtreecommitdiffstats
path: root/yql/essentials/udfs
diff options
context:
space:
mode:
authorpanikku <[email protected]>2025-07-09 11:52:13 +0300
committerpanikku <[email protected]>2025-07-09 12:09:06 +0300
commitbc7d8b2a5d721477f53ffd19cd08d168be84ef4d (patch)
tree555439f626e43b6d9fd1041590c3db8fcfef5a55 /yql/essentials/udfs
parentf767018cb425a62788b8e81932f2c2bc2a2e0953 (diff)
YQL-20005: User friendly datetime format error output
Еще идея была с таким выводом: Invalid format character 'q' in DateTime::Format. Allowed format characters: - %Y: year (e.g., 2023) - %m: month (e.g., 01 to 12) - %d: day of the month (e.g., 01 to 31) More format characters available in the documentation: https://nda.ya.ru/t/NC9Huj1V7GFfJn commit_hash:6ba063a3fe8d164b1c9d9c5f80e558c521cbaf29
Diffstat (limited to 'yql/essentials/udfs')
-rw-r--r--yql/essentials/udfs/common/datetime2/datetime_udf.cpp3
-rw-r--r--yql/essentials/udfs/common/datetime2/test/canondata/result.json5
-rw-r--r--yql/essentials/udfs/common/datetime2/test/canondata/test.test_DateTimeInvalidSpecifierFail_/extracted9
-rw-r--r--yql/essentials/udfs/common/datetime2/test/cases/DateTimeInvalidSpecifierFail.cfg1
-rw-r--r--yql/essentials/udfs/common/datetime2/test/cases/DateTimeInvalidSpecifierFail.sql2
5 files changed, 19 insertions, 1 deletions
diff --git a/yql/essentials/udfs/common/datetime2/datetime_udf.cpp b/yql/essentials/udfs/common/datetime2/datetime_udf.cpp
index e85bcc87812..952b369d094 100644
--- a/yql/essentials/udfs/common/datetime2/datetime_udf.cpp
+++ b/yql/essentials/udfs/common/datetime2/datetime_udf.cpp
@@ -3004,7 +3004,8 @@ private:
break;
}
default:
- ythrow yexception() << "invalid format character: " << *ptr;
+ throw yexception() << "character '" << *ptr << "' is not a valid format specifier."
+ << "\nSee documentation for valid format characters";
}
dataStart = ptr + 1U;
diff --git a/yql/essentials/udfs/common/datetime2/test/canondata/result.json b/yql/essentials/udfs/common/datetime2/test/canondata/result.json
index 45a328e4dfd..fbb279acbd9 100644
--- a/yql/essentials/udfs/common/datetime2/test/canondata/result.json
+++ b/yql/essentials/udfs/common/datetime2/test/canondata/result.json
@@ -29,6 +29,11 @@
"uri": "file://test.test_BlockTo_/results.txt"
}
],
+ "test.test[DateTimeInvalidSpecifierFail]": [
+ {
+ "uri": "file://test.test_DateTimeInvalidSpecifierFail_/extracted"
+ }
+ ],
"test.test[EndOf]": [
{
"uri": "file://test.test_EndOf_/results.txt"
diff --git a/yql/essentials/udfs/common/datetime2/test/canondata/test.test_DateTimeInvalidSpecifierFail_/extracted b/yql/essentials/udfs/common/datetime2/test/canondata/test.test_DateTimeInvalidSpecifierFail_/extracted
new file mode 100644
index 00000000000..0367aecdffa
--- /dev/null
+++ b/yql/essentials/udfs/common/datetime2/test/canondata/test.test_DateTimeInvalidSpecifierFail_/extracted
@@ -0,0 +1,9 @@
+<tmp_path>/program.sql:<main>: Error: Execution
+
+ <tmp_path>/program.sql:<main>:2:1: Error: Execution of node: Result
+ SELECT
+ ^
+ <tmp_path>/program.sql:<main>:4:15: Error: character 'q' is not a valid format specifier.
+See documentation for valid format characters
+ DateTime::Format("%q")(CurrentUtcDatetime());
+ ^ \ No newline at end of file
diff --git a/yql/essentials/udfs/common/datetime2/test/cases/DateTimeInvalidSpecifierFail.cfg b/yql/essentials/udfs/common/datetime2/test/cases/DateTimeInvalidSpecifierFail.cfg
new file mode 100644
index 00000000000..5dae597903c
--- /dev/null
+++ b/yql/essentials/udfs/common/datetime2/test/cases/DateTimeInvalidSpecifierFail.cfg
@@ -0,0 +1 @@
+xfail
diff --git a/yql/essentials/udfs/common/datetime2/test/cases/DateTimeInvalidSpecifierFail.sql b/yql/essentials/udfs/common/datetime2/test/cases/DateTimeInvalidSpecifierFail.sql
new file mode 100644
index 00000000000..94e9dd3de36
--- /dev/null
+++ b/yql/essentials/udfs/common/datetime2/test/cases/DateTimeInvalidSpecifierFail.sql
@@ -0,0 +1,2 @@
+SELECT
+ DateTime::Format("%q")(CurrentUtcDatetime());