From abad7b19624ea9c265677c404f5f9efce8cf2fac Mon Sep 17 00:00:00 2001 From: Vinay Krishna Pudyodu Date: Fri, 5 Dec 2025 00:31:41 -0800 Subject: [PATCH 1/2] Added min function for string field Signed-off-by: Vinay Krishna Pudyodu --- .../sql/opensearch/request/OpenSearchQueryRequest.java | 1 + .../src/main/resources/opensearch_custom_functions.yaml | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/opensearch/src/main/java/org/opensearch/sql/opensearch/request/OpenSearchQueryRequest.java b/opensearch/src/main/java/org/opensearch/sql/opensearch/request/OpenSearchQueryRequest.java index f1d62df28a0..79b6db64122 100644 --- a/opensearch/src/main/java/org/opensearch/sql/opensearch/request/OpenSearchQueryRequest.java +++ b/opensearch/src/main/java/org/opensearch/sql/opensearch/request/OpenSearchQueryRequest.java @@ -482,6 +482,7 @@ public static byte[] convertToSubstraitAndSerialize(RelNode relNode) { private static SubstraitRelVisitor createVisitor(RelNode relNode) { //Mapping of Function names in Calcite to Substrait List customSigs = List.of( + new FunctionMappings.Sig(SqlStdOperatorTable.MIN, "min"), new FunctionMappings.Sig(PPLBuiltinOperators.EXTRACT, "date_part"), new FunctionMappings.Sig(PPLBuiltinOperators.STRFTIME, "date_format"), new FunctionMappings.Sig(PPLBuiltinOperators.DATE_FORMAT, "date_format"), diff --git a/opensearch/src/main/resources/opensearch_custom_functions.yaml b/opensearch/src/main/resources/opensearch_custom_functions.yaml index 81a0ff1ecfb..36d7bd20fef 100644 --- a/opensearch/src/main/resources/opensearch_custom_functions.yaml +++ b/opensearch/src/main/resources/opensearch_custom_functions.yaml @@ -21,3 +21,11 @@ scalar_functions: value: precision_timestamp

return: i64 +aggregate_functions: + - name: min + description: Find the minimum value of a string + impls: + - args: + - name: x + value: string + return: i64 From daa005d6eff7fbbbd82073d7a830459599c06689 Mon Sep 17 00:00:00 2001 From: Vinay Krishna Pudyodu Date: Fri, 5 Dec 2025 00:32:49 -0800 Subject: [PATCH 2/2] Fixed the query 29 PPL Signed-off-by: Vinay Krishna Pudyodu --- integ-test/src/test/resources/clickbench/queries/q29.ppl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/integ-test/src/test/resources/clickbench/queries/q29.ppl b/integ-test/src/test/resources/clickbench/queries/q29.ppl index 5d46bef42f8..175165a83ac 100644 --- a/integ-test/src/test/resources/clickbench/queries/q29.ppl +++ b/integ-test/src/test/resources/clickbench/queries/q29.ppl @@ -4,9 +4,9 @@ AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; */ source=hits -| Referer != '' -| eval k = regexp_replace(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') -| stats bucket_nullable=false avg(length(Referer)) as l, count() as c, min(Referer) by k -| where c > 1 +| where Referer != '' +| eval k = replace(Referer, '^https?://(?:www\\.)?([^/]+)/.*$', '\\1') +| stats avg(length(Referer)) as l, count() as c, min(Referer) by k +| where c > 100000 | sort - l | head 25