Till Westmann has submitted this change and it was merged. Change subject: [NO ISSUE][FUN] Add array_length() ......................................................................
[NO ISSUE][FUN] Add array_length() - user model changes: yes - storage format changes: no - interface changes: no Details: - Add array_length() which is an alias for len() - Add testcases - Add comment explaining logical plan generation for EVERY quantified expression Change-Id: I5bd03717d3cc41567d6b060b25ca3051d9f43b3a Reviewed-on: https://asterix-gerrit.ics.uci.edu/2446 Sonar-Qube: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Reviewed-by: Till Westmann <[email protected]> --- M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/array_length/array_length.1.query.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/results/list/array_length/array_length.1.adm M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java 5 files changed, 40 insertions(+), 0 deletions(-) Approvals: Anon. E. Moose #1000171: Till Westmann: Looks good to me, approved Jenkins: Verified; No violations found; ; Verified diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java index 2b7adc1..6ab76fa 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java @@ -1088,6 +1088,10 @@ fAgg = BuiltinFunctions.makeAggregateFunctionExpression(BuiltinFunctions.NON_EMPTY_STREAM, new ArrayList<>()); } else { // EVERY + // look for input items that do not satisfy the condition, if none found then return true + // when inverting the condition account for NULL/MISSING by replacing them with FALSE + // condition() -> not(if-missing-or-null(condition(), false)) + List<Mutable<ILogicalExpression>> ifMissingOrNullArgs = new ArrayList<>(2); ifMissingOrNullArgs.add(new MutableObject<>(eo2.first)); ifMissingOrNullArgs diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/array_length/array_length.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/array_length/array_length.1.query.sqlpp new file mode 100644 index 0000000..66f3b93 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/list/array_length/array_length.1.query.sqlpp @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +[ + is_missing(array_length(missing)), + is_null(array_length(null)), + array_length([]), + array_length([2]), + array_length([2,3]), + array_length([2,3,4]) +] \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/list/array_length/array_length.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/list/array_length/array_length.1.adm new file mode 100644 index 0000000..09fe966 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/list/array_length/array_length.1.adm @@ -0,0 +1 @@ +[ true, true, 0, 1, 2, 3 ] \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index dd1ae0c..67980d0 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -3430,6 +3430,11 @@ </compilation-unit> </test-case> <test-case FilePath="list"> + <compilation-unit name="array_length"> + <output-dir compare="Text">array_length</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="list"> <compilation-unit name="exists"> <output-dir compare="Text">exists</output-dir> </compilation-unit> diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java index 5556ea9..e5d1643 100644 --- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java +++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/CommonFunctionMapUtil.java @@ -88,6 +88,9 @@ FUNCTION_NAME_MAP.put("record-add-fields", "object-add-fields"); // record-remove-fields, internal: object-remove-fields FUNCTION_NAME_MAP.put("record-remove-fields", "object-remove-fields"); + + // Array/Mutliset functions + FUNCTION_NAME_MAP.put("array_length", "len"); } private CommonFunctionMapUtil() { -- To view, visit https://asterix-gerrit.ics.uci.edu/2446 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5bd03717d3cc41567d6b060b25ca3051d9f43b3a Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Dmitry Lychagin <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]>
