diff options
author | vvvv <[email protected]> | 2025-05-27 21:16:04 +0300 |
---|---|---|
committer | vvvv <[email protected]> | 2025-05-27 21:31:38 +0300 |
commit | 602c57938d4cc2b047646bae209f1d1420a22d68 (patch) | |
tree | c0ed64adac6ea2be43857f3318a537c698191ef5 | |
parent | ebbf4015edc46cf3067886baa6543aba52e08d29 (diff) |
YQL-19845 fixed outer resolving
commit_hash:0a063bba6282dd67ca5d8e6aa906200ed6a8aed6
11 files changed, 144 insertions, 0 deletions
diff --git a/yql/essentials/core/yql_udf_index.cpp b/yql/essentials/core/yql_udf_index.cpp index f861e9eca65..c0b62596b07 100644 --- a/yql/essentials/core/yql_udf_index.cpp +++ b/yql/essentials/core/yql_udf_index.cpp @@ -53,6 +53,9 @@ TVector<TResourceInfo::TPtr> ConvertResolveResultToResources(const TResolveResul newFunction.Messages.push_back(m); } + newFunction.MinLangVer = udf.GetMinLangVer(); + newFunction.MaxLangVer = udf.GetMaxLangVer(); + functionIndex[package].push_back(newFunction); } diff --git a/yql/essentials/core/yql_udf_index.h b/yql/essentials/core/yql_udf_index.h index 4f2f33404ca..315c21e4be6 100644 --- a/yql/essentials/core/yql_udf_index.h +++ b/yql/essentials/core/yql_udf_index.h @@ -20,6 +20,8 @@ struct TFunctionInfo { bool IsStrict = false; bool SupportsBlocks = false; TVector<TString> Messages; + TLangVersion MinLangVer = UnknownLangVersion; + TLangVersion MaxLangVer = UnknownLangVersion; }; // todo: specify whether path is frozen diff --git a/yql/essentials/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp b/yql/essentials/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp index 3892de463e7..45844281c4f 100644 --- a/yql/essentials/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp +++ b/yql/essentials/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp @@ -205,6 +205,8 @@ private: function.IsStrict = info.IsStrict; function.SupportsBlocks = info.SupportsBlocks; function.Messages = info.Messages; + function.MinLangVer = info.MinLangVer; + function.MaxLangVer = info.MaxLangVer; return true; } diff --git a/yql/essentials/tools/udf_resolver/discover.cpp b/yql/essentials/tools/udf_resolver/discover.cpp index 530e7d96e98..240cd174b46 100644 --- a/yql/essentials/tools/udf_resolver/discover.cpp +++ b/yql/essentials/tools/udf_resolver/discover.cpp @@ -86,6 +86,8 @@ NYql::TResolveResult DoDiscover(const NYql::TResolve& inMsg, IMutableFunctionReg udfRes->SetSupportsBlocks(funcInfo.SupportsBlocks); udfRes->SetIsStrict(funcInfo.IsStrict); + udfRes->SetMinLangVer(funcInfo.MinLangVer); + udfRes->SetMaxLangVer(funcInfo.MaxLangVer); } } } diff --git a/yql/essentials/udfs/common/string/test/canondata/result.json b/yql/essentials/udfs/common/string/test/canondata/result.json index aff883c405e..0feffac589c 100644 --- a/yql/essentials/udfs/common/string/test/canondata/result.json +++ b/yql/essentials/udfs/common/string/test/canondata/result.json @@ -14,6 +14,16 @@ "uri": "file://test.test_AsciiCmpIgnoreCase_2025_02_/extracted" } ], + "test.test[AsciiContainsIgnoreCase_2025_01]": [ + { + "uri": "file://test.test_AsciiContainsIgnoreCase_2025_01_/extracted" + } + ], + "test.test[AsciiContainsIgnoreCase_2025_01_scan]": [ + { + "uri": "file://test.test_AsciiContainsIgnoreCase_2025_01_scan_/extracted" + } + ], "test.test[Base32Decode]": [ { "uri": "file://test.test_Base32Decode_/results.txt" diff --git a/yql/essentials/udfs/common/string/test/canondata/test.test_AsciiContainsIgnoreCase_2025_01_/extracted b/yql/essentials/udfs/common/string/test/canondata/test.test_AsciiContainsIgnoreCase_2025_01_/extracted new file mode 100644 index 00000000000..6c66d69cd7f --- /dev/null +++ b/yql/essentials/udfs/common/string/test/canondata/test.test_AsciiContainsIgnoreCase_2025_01_/extracted @@ -0,0 +1,50 @@ +<tmp_path>/program.sql:<main>: Error: Type annotation + + <tmp_path>/program.sql:<main>:2:1: Error: At function: RemovePrefixMembers, At function: Unordered, At function: PersistableRepr, At function: OrderedSqlProject, At tuple + SELECT + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:6:13: Error: At function: Apply, At function: Udf + String::AsciiContainsIgnoreCase(value, "AS") AS iccontains, + ^ + <tmp_path>/program.sql:<main>:6:13: Error: UDF 'String.AsciiContainsIgnoreCase' is not available before version 2025.02 + String::AsciiContainsIgnoreCase(value, "AS") AS iccontains, + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:8:13: Error: At function: Apply, At function: Udf + String::AsciiContainsIgnoreCase(value, "") AS icempty, + ^ + <tmp_path>/program.sql:<main>:8:13: Error: UDF 'String.AsciiContainsIgnoreCase' is not available before version 2025.02 + String::AsciiContainsIgnoreCase(value, "") AS icempty, + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:10:13: Error: At function: Apply, At function: Udf + String::AsciiStartsWithIgnoreCase(value, "AS") AS icstarts, + ^ + <tmp_path>/program.sql:<main>:10:13: Error: UDF 'String.AsciiStartsWithIgnoreCase' is not available before version 2025.02 + String::AsciiStartsWithIgnoreCase(value, "AS") AS icstarts, + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:12:13: Error: At function: Apply, At function: Udf + String::AsciiEndsWithIgnoreCase(value, "AS") AS icends, + ^ + <tmp_path>/program.sql:<main>:12:13: Error: UDF 'String.AsciiEndsWithIgnoreCase' is not available before version 2025.02 + String::AsciiEndsWithIgnoreCase(value, "AS") AS icends, + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:14:13: Error: At function: Apply, At function: Udf + String::AsciiEqualsIgnoreCase(value, "FDSA") AS icequals, + ^ + <tmp_path>/program.sql:<main>:14:13: Error: UDF 'String.AsciiEqualsIgnoreCase' is not available before version 2025.02 + String::AsciiEqualsIgnoreCase(value, "FDSA") AS icequals, + ^
\ No newline at end of file diff --git a/yql/essentials/udfs/common/string/test/canondata/test.test_AsciiContainsIgnoreCase_2025_01_scan_/extracted b/yql/essentials/udfs/common/string/test/canondata/test.test_AsciiContainsIgnoreCase_2025_01_scan_/extracted new file mode 100644 index 00000000000..6c66d69cd7f --- /dev/null +++ b/yql/essentials/udfs/common/string/test/canondata/test.test_AsciiContainsIgnoreCase_2025_01_scan_/extracted @@ -0,0 +1,50 @@ +<tmp_path>/program.sql:<main>: Error: Type annotation + + <tmp_path>/program.sql:<main>:2:1: Error: At function: RemovePrefixMembers, At function: Unordered, At function: PersistableRepr, At function: OrderedSqlProject, At tuple + SELECT + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:6:13: Error: At function: Apply, At function: Udf + String::AsciiContainsIgnoreCase(value, "AS") AS iccontains, + ^ + <tmp_path>/program.sql:<main>:6:13: Error: UDF 'String.AsciiContainsIgnoreCase' is not available before version 2025.02 + String::AsciiContainsIgnoreCase(value, "AS") AS iccontains, + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:8:13: Error: At function: Apply, At function: Udf + String::AsciiContainsIgnoreCase(value, "") AS icempty, + ^ + <tmp_path>/program.sql:<main>:8:13: Error: UDF 'String.AsciiContainsIgnoreCase' is not available before version 2025.02 + String::AsciiContainsIgnoreCase(value, "") AS icempty, + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:10:13: Error: At function: Apply, At function: Udf + String::AsciiStartsWithIgnoreCase(value, "AS") AS icstarts, + ^ + <tmp_path>/program.sql:<main>:10:13: Error: UDF 'String.AsciiStartsWithIgnoreCase' is not available before version 2025.02 + String::AsciiStartsWithIgnoreCase(value, "AS") AS icstarts, + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:12:13: Error: At function: Apply, At function: Udf + String::AsciiEndsWithIgnoreCase(value, "AS") AS icends, + ^ + <tmp_path>/program.sql:<main>:12:13: Error: UDF 'String.AsciiEndsWithIgnoreCase' is not available before version 2025.02 + String::AsciiEndsWithIgnoreCase(value, "AS") AS icends, + ^ + <tmp_path>/program.sql:<main>:2:1: Error: At function: SqlProjectItem, At lambda + SELECT + ^ + <tmp_path>/program.sql:<main>:14:13: Error: At function: Apply, At function: Udf + String::AsciiEqualsIgnoreCase(value, "FDSA") AS icequals, + ^ + <tmp_path>/program.sql:<main>:14:13: Error: UDF 'String.AsciiEqualsIgnoreCase' is not available before version 2025.02 + String::AsciiEqualsIgnoreCase(value, "FDSA") AS icequals, + ^
\ No newline at end of file diff --git a/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01.cfg b/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01.cfg new file mode 100644 index 00000000000..63fef4f7b7c --- /dev/null +++ b/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01.cfg @@ -0,0 +1,3 @@ +xfail +langver 2025.01 +in plato.Input default.in diff --git a/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01.sql b/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01.sql new file mode 100644 index 00000000000..db2ebad20e0 --- /dev/null +++ b/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01.sql @@ -0,0 +1,9 @@ +SELECT + value, + String::AsciiContainsIgnoreCase(value, "AS") AS iccontains, + String::AsciiContainsIgnoreCase(value, "") AS icempty, + String::AsciiStartsWithIgnoreCase(value, "AS") AS icstarts, + String::AsciiEndsWithIgnoreCase(value, "AS") AS icends, + String::AsciiEqualsIgnoreCase(value, "FDSA") AS icequals, +FROM Input; + diff --git a/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01_scan.cfg b/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01_scan.cfg new file mode 100644 index 00000000000..ea25436b9bb --- /dev/null +++ b/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01_scan.cfg @@ -0,0 +1,4 @@ +xfail +langver 2025.01 +scan_udfs +in plato.Input default.in diff --git a/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01_scan.sql b/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01_scan.sql new file mode 100644 index 00000000000..db2ebad20e0 --- /dev/null +++ b/yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01_scan.sql @@ -0,0 +1,9 @@ +SELECT + value, + String::AsciiContainsIgnoreCase(value, "AS") AS iccontains, + String::AsciiContainsIgnoreCase(value, "") AS icempty, + String::AsciiStartsWithIgnoreCase(value, "AS") AS icstarts, + String::AsciiEndsWithIgnoreCase(value, "AS") AS icends, + String::AsciiEqualsIgnoreCase(value, "FDSA") AS icequals, +FROM Input; + |