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 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