summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-05-27 21:16:04 +0300
committervvvv <[email protected]>2025-05-27 21:31:38 +0300
commit602c57938d4cc2b047646bae209f1d1420a22d68 (patch)
treec0ed64adac6ea2be43857f3318a537c698191ef5
parentebbf4015edc46cf3067886baa6543aba52e08d29 (diff)
YQL-19845 fixed outer resolving
commit_hash:0a063bba6282dd67ca5d8e6aa906200ed6a8aed6
-rw-r--r--yql/essentials/core/yql_udf_index.cpp3
-rw-r--r--yql/essentials/core/yql_udf_index.h2
-rw-r--r--yql/essentials/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp2
-rw-r--r--yql/essentials/tools/udf_resolver/discover.cpp2
-rw-r--r--yql/essentials/udfs/common/string/test/canondata/result.json10
-rw-r--r--yql/essentials/udfs/common/string/test/canondata/test.test_AsciiContainsIgnoreCase_2025_01_/extracted50
-rw-r--r--yql/essentials/udfs/common/string/test/canondata/test.test_AsciiContainsIgnoreCase_2025_01_scan_/extracted50
-rw-r--r--yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01.cfg3
-rw-r--r--yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01.sql9
-rw-r--r--yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01_scan.cfg4
-rw-r--r--yql/essentials/udfs/common/string/test/cases/AsciiContainsIgnoreCase_2025_01_scan.sql9
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;
+