Yingyi Bu has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/1116
Change subject: ASTERIXDB-1597: fix and add a regression test. ...................................................................... ASTERIXDB-1597: fix and add a regression test. - Change the order of rule applications, let PushAggFuncIntoStandaloneAggregateRule run after ExtractCommonExpressionsRule Change-Id: Ifc7d757f4d0073dc00a5b2a5aca16581f12cec1d --- M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.1.ddl.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.2.update.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.3.query.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.1.adm M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml 6 files changed, 90 insertions(+), 1 deletion(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/16/1116/1 diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java index b29f743..1b11cde 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java @@ -161,7 +161,6 @@ normalization.add(new IntroduceUnnestForCollectionToSequenceRule()); normalization.add(new EliminateSubplanRule()); normalization.add(new EnforceOrderByAfterSubplan()); - normalization.add(new PushAggFuncIntoStandaloneAggregateRule()); normalization.add(new BreakSelectIntoConjunctsRule()); normalization.add(new ExtractGbyExpressionsRule()); normalization.add(new ExtractDistinctByExpressionsRule()); @@ -175,6 +174,10 @@ normalization.add(new IntroduceDynamicTypeCastForExternalFunctionRule()); normalization.add(new IntroduceEnforcedListTypeRule()); normalization.add(new ExtractCommonExpressionsRule()); + + // Let PushAggFuncIntoStandaloneAggregateRule run after ExtractCommonExpressionsRule + // so that PushAggFunc can happen in fewer places. + normalization.add(new PushAggFuncIntoStandaloneAggregateRule()); normalization.add(new ConstantFoldingRule()); normalization.add(new RemoveRedundantSelectRule()); normalization.add(new UnnestToDataScanRule(algebraExtensionManager)); diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.1.ddl.sqlpp new file mode 100644 index 0000000..07c39e3 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.1.ddl.sqlpp @@ -0,0 +1,31 @@ +/* + * 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. + */ + +drop dataverse test if exists; +create dataverse test; +use test; + +drop dataset samptable if exists; +drop type samptabletype if exists; + +create type samptabletype as closed { + id: int8 +}; + +create dataset samptable(samptabletype) primary key id; diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.2.update.sqlpp new file mode 100644 index 0000000..d1ad8b5 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.2.update.sqlpp @@ -0,0 +1,23 @@ +/* + * 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. + */ + +use test; + +insert into samptable ({'id' : 0}); +insert into samptable ({'id' : 1}); diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.3.query.sqlpp new file mode 100644 index 0000000..0c44d1c --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.3.query.sqlpp @@ -0,0 +1,26 @@ +/* + * 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. + */ + +use test; + +select t1.sumid +from ( + select sum(s.id) sumid from samptable s +) t1 +order by t1.sumid; diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.1.adm new file mode 100644 index 0000000..d23d39d --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-1597/query-ASTERIXDB-1597.1.adm @@ -0,0 +1 @@ +{ "sumid": 1 } 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 5aa466c..e3f67f4 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -5685,6 +5685,11 @@ <expected-error>Cannot resolve ambiguous alias reference for undefined identifier</expected-error> </compilation-unit> </test-case> + <test-case FilePath="subquery"> + <compilation-unit name="query-ASTERIXDB-1597"> + <output-dir compare="Text">query-ASTERIXDB-1597</output-dir> + </compilation-unit> + </test-case> </test-group> <test-group name="subset-collection"> <test-case FilePath="subset-collection"> -- To view, visit https://asterix-gerrit.ics.uci.edu/1116 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifc7d757f4d0073dc00a5b2a5aca16581f12cec1d Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Yingyi Bu <buyin...@gmail.com>