[asterixdb] 07/25: [NO ISSUE][COMP] Additional plan sanity check

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit c65fa869af8af4f1964d0b88fd6376c220477785
Author: Dmitry Lychagin 
AuthorDate: Fri Feb 5 19:26:50 2021 -0800

[NO ISSUE][COMP] Additional plan sanity check

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Add plan sanity check to ensure that operator's
  produced variables are disjoint from its used variables

Change-Id: Id4800f2fff66c9ace89889ab89a6b7f442cd7a0e
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9847
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Dmitry Lychagin 
Reviewed-by: Ali Alsuliman 
---
 .../inverted-index-join-noeqjoin/ngram-edit-distance-inline.sqlpp  | 2 ++
 .../inverted-index-join-noeqjoin/ngram-fuzzyeq-edit-distance.sqlpp | 2 +-
 .../inverted-index-join-noeqjoin/olist-edit-distance-inline.sqlpp  | 2 ++
 ...leftouterjoin-probe-pidx-with-join-edit-distance-check-idx_01.sqlpp | 2 ++
 ...touterjoin-probe-pidx-with-join-edit-distance-check-idx_01_ps.sqlpp | 2 +-
 .../queries/inverted-index-join/ngram-edit-distance-check_02.sqlpp | 2 ++
 .../queries/inverted-index-join/ngram-edit-distance-check_03.sqlpp | 2 ++
 .../queries/inverted-index-join/ngram-edit-distance-check_04.sqlpp | 2 ++
 .../queries/inverted-index-join/ngram-edit-distance_02.sqlpp   | 2 ++
 .../queries/inverted-index-join/ngram-edit-distance_03.sqlpp   | 2 ++
 .../queries/inverted-index-join/ngram-edit-distance_04.sqlpp   | 2 ++
 .../queries/inverted-index-join/ngram-fuzzyeq-edit-distance_01.sqlpp   | 2 +-
 .../queries/inverted-index-join/ngram-fuzzyeq-edit-distance_03.sqlpp   | 2 +-
 .../queries/inverted-index-join/olist-edit-distance-check_02.sqlpp | 2 ++
 .../queries/inverted-index-join/olist-edit-distance-check_03.sqlpp | 2 ++
 .../queries/inverted-index-join/olist-edit-distance-check_04.sqlpp | 2 ++
 .../queries/inverted-index-join/olist-edit-distance_02.sqlpp   | 2 ++
 .../queries/inverted-index-join/olist-edit-distance_03.sqlpp   | 2 ++
 .../queries/inverted-index-join/olist-edit-distance_04.sqlpp   | 2 ++
 .../queries/inverted-index-join/olist-fuzzyeq-edit-distance_02.sqlpp   | 2 +-
 .../queries/inverted-index-join/olist-fuzzyeq-edit-distance_03.sqlpp   | 2 +-
 ...touterjoin-probe-pidx-with-join-edit-distance-check-idx_01_ps.sqlpp | 1 +
 ...touterjoin-probe-pidx-with-join-edit-distance-check-idx_01_ps.sqlpp | 1 +
 ...touterjoin-probe-pidx-with-join-edit-distance-check-idx_01_ps.sqlpp | 1 +
 .../probe-pidx-with-join-invidx-sidx2.3.query.sqlpp| 1 +
 .../probe-pidx-with-join-invidx-sidx2.3.query.sqlpp| 1 +
 .../probe-pidx-with-join-invidx-sidx2.3.query.sqlpp| 1 +
 .../probe-pidx-with-join-invidx-sidx2.3.query.sqlpp| 1 +
 .../probe-pidx-with-join-invidx-sidx2.3.ast| 1 +
 .../probe-pidx-with-join-invidx-sidx2.3.ast| 1 +
 .../probe-pidx-with-join-invidx-sidx2.3.ast| 1 +
 .../probe-pidx-with-join-invidx-sidx2.3.ast| 1 +
 .../hyracks/algebricks/core/algebra/plan/PlanStructureVerifier.java| 3 +--
 33 files changed, 48 insertions(+), 8 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inverted-index-join-noeqjoin/ngram-edit-distance-inline.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inverted-index-join-noeqjoin/ngram-edit-distance-inline.sqlpp
index c29de43..7c71c3e 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inverted-index-join-noeqjoin/ngram-edit-distance-inline.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inverted-index-join-noeqjoin/ngram-edit-distance-inline.sqlpp
@@ -44,6 +44,8 @@ create  dataset DBLP(DBLPType) primary key id;
 create  index ngram_index  on DBLP (authors) type ngram (3);
 
 write output to 
asterix_nc1:"rttest/inverted-index-join-noeqjoin_ngram-edit-distance-inline.adm";
+set `compiler.internal.sanitycheck` "false";
+
 select element {'aauthors':a.authors,'bauthors':b.authors,'ed':ed}
 from  DBLP as a,
   DBLP as b
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inverted-index-join-noeqjoin/ngram-fuzzyeq-edit-distance.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inverted-index-join-noeqjoin/ngram-fuzzyeq-edit-distance.sqlpp
index 1234824..30ea450 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inverted-index-join-noeqjoin/ngram-fuzzyeq-edit-distance.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/inverted-index-join-noeqjoin/ngram-fuzzyeq-edit-distance.sqlpp
@@ -55,8 +55,8 @@ create  

[asterixdb] 10/25: [NO ISSUE][COMP] Add compiler property to skip assiging low budget

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit be592d91555389a389827bcfb5a243d0c3c4c804
Author: Ali Alsuliman 
AuthorDate: Sun Feb 7 11:11:40 2021 -0800

[NO ISSUE][COMP] Add compiler property to skip assiging low budget

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Add a compiler property to allow users to instruct the compiler
not to assign low budget for queries such metadata queries.

Change-Id: Ibba711d76dbdc73c1072c999c05c43dbce30debc
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9848
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Ali Alsuliman 
Reviewed-by: Dmitry Lychagin 
---
 .../rules/SetAsterixMemoryRequirementsRule.java|  3 ++
 .../apache/asterix/api/common/APIFramework.java|  3 +-
 .../apache/asterix/test/common/TestExecutor.java   | 32 +-
 .../metadata_only_01.2.plans.sqlpp | 31 +++--
 .../api/cluster_state_1/cluster_state_1.1.regexadm |  1 +
 .../cluster_state_1_full.1.regexadm|  1 +
 .../cluster_state_1_less.1.regexadm|  1 +
 .../misc/metadata_only_01/metadata_only_01.2.regex |  1 +
 .../asterix/common/config/CompilerProperties.java  | 12 +++-
 .../common/config/OptimizationConfUtil.java|  3 ++
 .../algebricks/core/config/AlgebricksConfig.java   |  1 +
 .../rewriter/base/PhysicalOptimizationConfig.java  | 11 +++-
 12 files changed, 82 insertions(+), 18 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixMemoryRequirementsRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixMemoryRequirementsRule.java
index abe4b71..8de1fb5 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixMemoryRequirementsRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixMemoryRequirementsRule.java
@@ -52,6 +52,9 @@ public final class SetAsterixMemoryRequirementsRule extends 
SetMemoryRequirement
 }
 
 private boolean forceMinMemoryBudget(AsterixOptimizationContext context) {
+if (!context.getPhysicalOptimizationConfig().getMinMemoryAllocation()) 
{
+return false;
+}
 Int2ObjectMap> dataSourceMap = 
context.getDataSourceMap();
 if (dataSourceMap.isEmpty()) {
 return false;
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
index baf083d..9088db6 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
@@ -135,7 +135,8 @@ public class APIFramework {
 CompilerProperties.COMPILER_SORT_PARALLEL_KEY, 
CompilerProperties.COMPILER_SORT_SAMPLES_KEY,
 CompilerProperties.COMPILER_INDEXONLY_KEY, 
CompilerProperties.COMPILER_INTERNAL_SANITYCHECK_KEY,
 CompilerProperties.COMPILER_EXTERNAL_FIELD_PUSHDOWN_KEY, 
CompilerProperties.COMPILER_SUBPLAN_MERGE_KEY,
-CompilerProperties.COMPILER_SUBPLAN_NESTEDPUSHDOWN_KEY, 
FunctionUtil.IMPORT_PRIVATE_FUNCTIONS,
+CompilerProperties.COMPILER_SUBPLAN_NESTEDPUSHDOWN_KEY,
+CompilerProperties.COMPILER_MIN_MEMORY_ALLOCATION_KEY, 
FunctionUtil.IMPORT_PRIVATE_FUNCTIONS,
 FuzzyUtils.SIM_FUNCTION_PROP_NAME, 
FuzzyUtils.SIM_THRESHOLD_PROP_NAME,
 StartFeedStatement.WAIT_FOR_COMPLETION, 
FeedActivityDetails.FEED_POLICY_NAME,
 FeedActivityDetails.COLLECT_LOCATIONS, 
SqlppQueryRewriter.INLINE_WITH_OPTION,
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
index e202ddf..44038cc 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
@@ -42,6 +42,8 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.nio.CharBuffer;
 import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.text.MessageFormat;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -161,6 +163,7 @@ public class TestExecutor {
 private static final Pattern HANDLE_VARIABLE_PATTERN = 
Pattern.compile("handlevariable=(\\w+)");
 private static final Pattern RESULT_VARIABLE_PATTERN = 
Pattern.compile("resultvariable=(\\w+)");
 private static final Pattern COMPARE_UNORDERED_ARRAY_PATTERN = 

[asterixdb] 08/25: [NO ISSUE][TX] Stop reading logs when an empty file is encountered

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 1f238097fb756556628f2027f47acd4390ace36f
Author: Murtadha Hubail 
AuthorDate: Mon Feb 8 00:07:44 2021 +0300

[NO ISSUE][TX] Stop reading logs when an empty file is encountered

- user model changes: no
- storage format changes: no
- interface changes: no

Details:

- Whenever an empty txn log file is encountered, do not
  attempt to read the next log file since an empty log
  file indicates that no more logs exist.
- Add test case.

Change-Id: I8d95c9e444dcdea21c4af35779d4c0c38f6577e5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9883
Reviewed-by: Murtadha Hubail 
Reviewed-by: Ian Maxon 
Integration-Tests: Jenkins 
Tested-by: Jenkins 
---
 .../org/apache/asterix/test/txn/LogManagerTest.java|  2 +-
 .../apache/asterix/test/txn/RecoveryManagerTest.java   | 18 ++
 .../management/service/logging/LogReader.java  |  2 +-
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
index 495a967..685d983 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
@@ -201,7 +201,7 @@ public class LogManagerTest {
 return txnCtx;
 }
 
-private static void prepareNextLogFile(LogManager logManager) throws 
Exception {
+public static void prepareNextLogFile(LogManager logManager) throws 
Exception {
 Method ensureLastPageFlushed;
 Method prepareNextLogFile;
 String targetMethod = null;
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
index 65b10a0..34e48c2 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
@@ -22,8 +22,10 @@ import java.io.File;
 
 import org.apache.asterix.api.common.AsterixHyracksIntegrationUtil;
 import org.apache.asterix.common.TestDataUtil;
+import org.apache.asterix.common.api.INcApplicationContext;
 import org.apache.asterix.common.config.StorageProperties;
 import org.apache.asterix.metadata.bootstrap.MetadataBuiltinEntities;
+import org.apache.asterix.transaction.management.service.logging.LogManager;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -104,4 +106,20 @@ public class RecoveryManagerTest {
 final long countAfterRecovery = 
TestDataUtil.getDatasetCount(datasetName);
 Assert.assertEquals(countBeforeRecovery, countAfterRecovery);
 }
+
+@Test
+public void recoveryWithEmptyLogFile() throws Exception {
+String datasetName = "ds";
+TestDataUtil.createIdOnlyDataset(datasetName);
+TestDataUtil.upsertData(datasetName, 10);
+final INcApplicationContext ncAppCtx = (INcApplicationContext) 
integrationUtil.ncs[0].getApplicationContext();
+final LogManager logManager = (LogManager) 
ncAppCtx.getTransactionSubsystem().getLogManager();
+// do ungraceful shutdown to enforce recovery
+integrationUtil.deinit(false);
+// create empty txn log file
+LogManagerTest.prepareNextLogFile(logManager);
+// ensure recovery completes
+integrationUtil.init(false, TEST_CONFIG_FILE_PATH);
+TestDataUtil.upsertData(datasetName, 10);
+}
 }
diff --git 
a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogReader.java
 
b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogReader.java
index 30caab7..53a2897 100644
--- 
a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogReader.java
+++ 
b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogReader.java
@@ -163,7 +163,7 @@ public class LogReader implements ILogReader {
  */
 private boolean refillLogReadBuffer() {
 try {
-if (readLSN % logFileSize == logFile.size()) {
+if (logFile.size() > 0 && readLSN % logFileSize == logFile.size()) 
{
 readLSN += logFileSize - (readLSN % logFileSize);
 getLogFile();
 }



[asterixdb] 16/25: Merge branch 'gerrit/stabilization-5949a1cb71'

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 143eaa5dc7fe0bbb3bbd12dbd43afe16e262d118
Merge: 0381a66 5a377cf
Author: Michael Blow 
AuthorDate: Thu Feb 11 13:46:41 2021 -0500

Merge branch 'gerrit/stabilization-5949a1cb71'

Change-Id: Ib72cfa1a734dc260e283ea81da71e25c8e370097




[asterixdb] 09/25: [ASTERIXDB-2826][EXT]: S3 allow using custom non-S3 regions

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 0381a66782891e2abd6bf9290fff007d2e363b0f
Author: Hussain Towaileb 
AuthorDate: Sun Feb 7 18:08:06 2021 +0300

[ASTERIXDB-2826][EXT]: S3 allow using custom non-S3 regions

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Currently, if an external dataset is created using a
  non-S3 region, querying the external dataset fails.
  This change allows using non-S3 regions which is possible
  for other S3-compatible storages to have.

Change-Id: If7f89eb2adbf9fb9a00d83c339099da05ab0ad06
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9843
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Hussain Towaileb 
Reviewed-by: Murtadha Hubail 
---
 .../non-s3-region/external_dataset.000.ddl.sqlpp   | 41 ++
 .../non-s3-region/external_dataset.099.ddl.sqlpp   | 20 +++
 .../runtimets/testsuite_external_dataset.xml   |  5 +++
 .../asterix/external/util/ExternalDataUtils.java   | 13 +--
 4 files changed, 67 insertions(+), 12 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/non-s3-region/external_dataset.000.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/non-s3-region/external_dataset.000.ddl.sqlpp
new file mode 100644
index 000..3b22f11
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/non-s3-region/external_dataset.000.ddl.sqlpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+/*
+ * Creating an external dataset should not fail when non-s3-region is used 
(some-new-region)
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+drop type test if exists;
+create type test as open {
+};
+
+drop dataset test if exists;
+create external dataset test(test) using S3 (
+("accessKeyId"="dummyAccessKey"),
+("secretAccessKey"="dummySecretKey"),
+("region"="some-new-region"),
+("serviceEndpoint"="http://localhost:8001;),
+("container"="playground"),
+("definition"="json-data/reviews/single-line/json"),
+("format"="json")
+);
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/non-s3-region/external_dataset.099.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/non-s3-region/external_dataset.099.ddl.sqlpp
new file mode 100644
index 000..548e632
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/aws/s3/non-s3-region/external_dataset.099.ddl.sqlpp
@@ -0,0 +1,20 @@
+/*
+ * 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;
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
 
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
index 87ba14d..9cded35 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset.xml
+++ 

[asterixdb] 06/25: [ASTERIXDB-2828][COMP] Error with GROUP BY ROLLUP and WITH

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit df73054f93fa80f4a400bc671497baab26dff010
Author: Dmitry Lychagin 
AuthorDate: Fri Feb 5 15:58:19 2021 -0800

[ASTERIXDB-2828][COMP] Error with GROUP BY ROLLUP and WITH

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Fix internal error when WITH clause is used with GROUP BY ROLLUP
- Additional testcases for grouping sets

Change-Id: Ieb38a50a42f27d74a90d0f848664d4c7549658b0
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9845
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Dmitry Lychagin 
Reviewed-by: Ali Alsuliman 
---
 .../grouping-sets-1/grouping-sets-1.16.query.sqlpp |  25 ++
 .../grouping-sets-1/grouping-sets-1.17.query.sqlpp |  35 +++
 .../grouping-sets-1/grouping-sets-1.18.query.sqlpp |  27 ++
 .../grouping-sets-1/grouping-sets-1.19.query.sqlpp |  29 ++
 .../grouping-sets-1/grouping-sets-1.16.adm |   7 +
 .../grouping-sets-1/grouping-sets-1.17.adm |   7 +
 .../grouping-sets-1/grouping-sets-1.18.adm |   7 +
 .../grouping-sets-1/grouping-sets-1.19.adm |   7 +
 .../grouping-sets-1/grouping-sets-1.16.ast | 156 ++
 .../grouping-sets-1/grouping-sets-1.17.ast | 342 +
 .../grouping-sets-1/grouping-sets-1.18.ast | 193 
 .../grouping-sets-1/grouping-sets-1.19.ast | 208 +
 .../rules/subplan/PushSubplanIntoGroupByRule.java  |   5 +-
 13 files changed, 1047 insertions(+), 1 deletion(-)

diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-1/grouping-sets-1.16.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-1/grouping-sets-1.16.query.sqlpp
new file mode 100644
index 000..eb3ffc3
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-1/grouping-sets-1.16.query.sqlpp
@@ -0,0 +1,25 @@
+/*
+ * 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 two, four, array_sum((select value gi.tenk.ten from g as gi)) as agg_sum
+from tenk
+group by rollup(two,four) group as g
+order by two, four;
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-1/grouping-sets-1.17.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-1/grouping-sets-1.17.query.sqlpp
new file mode 100644
index 000..388a9f5
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-1/grouping-sets-1.17.query.sqlpp
@@ -0,0 +1,35 @@
+/*
+ * 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 two, four, sum(ten) as agg_sum
+from (
+  select two, four, ten
+  from tenk
+  where hundred < 20
+
+  union all
+
+  select two, four, ten
+  from tenk
+  where hundred >= 80
+) x
+group by rollup(two,four) group as g
+order by two, four;
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/group-by/grouping-sets-1/grouping-sets-1.18.query.sqlpp
 

[asterixdb] 15/25: [NO ISSUE][TX] Stop reading logs when an empty file is encountered

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 5a377cff7adf015eab330fd9f8698c6ca8fcc6e0
Author: Murtadha Hubail 
AuthorDate: Mon Feb 8 00:07:44 2021 +0300

[NO ISSUE][TX] Stop reading logs when an empty file is encountered

- user model changes: no
- storage format changes: no
- interface changes: no

Details:

- Whenever an empty txn log file is encountered, do not
  attempt to read the next log file since an empty log
  file indicates that no more logs exist.
- Add test case.

(cherry picked from commit 1f238097fb756556628f2027f47acd4390ace36f)

Change-Id: Ia7642e238dbc5f2d927a8a1d640b0586f091416b
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9963
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Murtadha Hubail 
Reviewed-by: Michael Blow 
---
 .../org/apache/asterix/test/txn/LogManagerTest.java|  2 +-
 .../apache/asterix/test/txn/RecoveryManagerTest.java   | 18 ++
 .../management/service/logging/LogReader.java  |  2 +-
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
index 495a967..685d983 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/LogManagerTest.java
@@ -201,7 +201,7 @@ public class LogManagerTest {
 return txnCtx;
 }
 
-private static void prepareNextLogFile(LogManager logManager) throws 
Exception {
+public static void prepareNextLogFile(LogManager logManager) throws 
Exception {
 Method ensureLastPageFlushed;
 Method prepareNextLogFile;
 String targetMethod = null;
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
index 65b10a0..34e48c2 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
@@ -22,8 +22,10 @@ import java.io.File;
 
 import org.apache.asterix.api.common.AsterixHyracksIntegrationUtil;
 import org.apache.asterix.common.TestDataUtil;
+import org.apache.asterix.common.api.INcApplicationContext;
 import org.apache.asterix.common.config.StorageProperties;
 import org.apache.asterix.metadata.bootstrap.MetadataBuiltinEntities;
+import org.apache.asterix.transaction.management.service.logging.LogManager;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -104,4 +106,20 @@ public class RecoveryManagerTest {
 final long countAfterRecovery = 
TestDataUtil.getDatasetCount(datasetName);
 Assert.assertEquals(countBeforeRecovery, countAfterRecovery);
 }
+
+@Test
+public void recoveryWithEmptyLogFile() throws Exception {
+String datasetName = "ds";
+TestDataUtil.createIdOnlyDataset(datasetName);
+TestDataUtil.upsertData(datasetName, 10);
+final INcApplicationContext ncAppCtx = (INcApplicationContext) 
integrationUtil.ncs[0].getApplicationContext();
+final LogManager logManager = (LogManager) 
ncAppCtx.getTransactionSubsystem().getLogManager();
+// do ungraceful shutdown to enforce recovery
+integrationUtil.deinit(false);
+// create empty txn log file
+LogManagerTest.prepareNextLogFile(logManager);
+// ensure recovery completes
+integrationUtil.init(false, TEST_CONFIG_FILE_PATH);
+TestDataUtil.upsertData(datasetName, 10);
+}
 }
diff --git 
a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogReader.java
 
b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogReader.java
index 30caab7..53a2897 100644
--- 
a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogReader.java
+++ 
b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogReader.java
@@ -163,7 +163,7 @@ public class LogReader implements ILogReader {
  */
 private boolean refillLogReadBuffer() {
 try {
-if (readLSN % logFileSize == logFile.size()) {
+if (logFile.size() > 0 && readLSN % logFileSize == logFile.size()) 
{
 readLSN += logFileSize - (readLSN % logFileSize);
 getLogFile();
 }



[asterixdb] 23/25: [NO ISSUE][OTH] Make ExecuteStatementRequestMessage extensible

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit d337bb7ec6109e401cbeb0b6536212968ac0b10b
Author: Ali Alsuliman 
AuthorDate: Thu Feb 11 17:15:37 2021 -0800

[NO ISSUE][OTH] Make ExecuteStatementRequestMessage extensible

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Make ExecuteStatementRequestMessage extensible.

Change-Id: I481a3bf16bbaf1b11e1073898f48b2d89a26c897
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9986
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Ali Alsuliman 
Reviewed-by: Murtadha Hubail 
---
 .../asterix/api/http/server/NCQueryServiceServlet.java   | 16 
 .../asterix/api/http/server/QueryServiceServlet.java |  8 
 .../app/message/ExecuteStatementRequestMessage.java  | 11 ---
 3 files changed, 20 insertions(+), 15 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index 99b6be1..0b0f262 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -68,7 +68,7 @@ public class NCQueryServiceServlet extends 
QueryServiceServlet {
 }
 
 @Override
-protected void executeStatement(IRequestReference requestReference, String 
statementsText,
+protected void executeStatement(IServletRequest request, IRequestReference 
requestReference, String statementsText,
 SessionOutput sessionOutput, ResultProperties resultProperties,
 IStatementExecutor.StatementProperties statementProperties, 
IStatementExecutor.Stats stats,
 QueryServiceRequestParameters param, RequestExecutionState 
executionState,
@@ -85,7 +85,7 @@ public class NCQueryServiceServlet extends 
QueryServiceServlet {
 long timeout = param.getTimeout();
 int stmtCategoryRestrictionMask = 
org.apache.asterix.app.translator.RequestParameters
 .getStatementCategoryRestrictionMask(param.isReadOnly());
-ExecuteStatementRequestMessage requestMsg = 
createRequestMessage(requestReference, statementsText,
+ExecuteStatementRequestMessage requestMsg = 
createRequestMessage(request, requestReference, statementsText,
 sessionOutput, resultProperties, param, 
optionalParameters, statementParameters, ncCtx,
 responseFuture, queryLanguage, handleUrl, 
stmtCategoryRestrictionMask, false);
 executionState.start();
@@ -129,12 +129,12 @@ public class NCQueryServiceServlet extends 
QueryServiceServlet {
 buildResponseResults(responsePrinter, sessionOutput, 
responseMsg.getExecutionPlans(), warnings);
 }
 
-protected ExecuteStatementRequestMessage 
createRequestMessage(IRequestReference requestReference,
-String statementsText, SessionOutput sessionOutput, 
ResultProperties resultProperties,
-QueryServiceRequestParameters param, Map 
optionalParameters,
-Map statementParameters, INCServiceContext ncCtx, 
MessageFuture responseFuture,
-ILangExtension.Language queryLanguage, String handleUrl, int 
stmtCategoryRestrictionMask,
-boolean forceDropDataset) {
+protected ExecuteStatementRequestMessage 
createRequestMessage(IServletRequest request,
+IRequestReference requestReference, String statementsText, 
SessionOutput sessionOutput,
+ResultProperties resultProperties, QueryServiceRequestParameters 
param,
+Map optionalParameters, Map 
statementParameters, INCServiceContext ncCtx,
+MessageFuture responseFuture, ILangExtension.Language 
queryLanguage, String handleUrl,
+int stmtCategoryRestrictionMask, boolean forceDropDataset) {
 return new ExecuteStatementRequestMessage(ncCtx.getNodeId(), 
responseFuture.getFutureId(), queryLanguage,
 statementsText, sessionOutput.config(), 
resultProperties.getNcToCcResultProperties(),
 param.getClientContextID(), handleUrl, optionalParameters, 
statementParameters,
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index dea46f2..f394794 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -301,9 +301,9 @@ public class QueryServiceServlet extends 

[asterixdb] 14/25: [ASTERIXDB-2738][STO] Create Mask File Before Merge Operations

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit aa0f9a9338e7ded2b2c519e6dd9d24c7c078bb0c
Author: Murtadha Hubail 
AuthorDate: Thu May 21 21:29:46 2020 +0300

[ASTERIXDB-2738][STO] Create Mask File Before Merge Operations

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Before starting a merge operation, create a mask file
  (.mask_C_startSeq_endSeq) for the merged component to
  indicate that this component isn't valid yet.
- On the merge operation successful completion, delete the
  merged component mask file.
- In the case of any unexpected failure during the merge
  operation, all files of the failed merged component will
  be deleted on node startup/shutdown, including the mask
  file.
- Halt on any IO opeartion failure.
- Add a test case that ensures only masked merged components
  are deleted but not the original components that were
  supposed to be merged.

(cherry picked from commit fe0f6fa181b03195cda8ff3585734ce10f466467)

Change-Id: I7c07daf033c5a1a00bd1b33debc8a4d7c7ce1e59
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9964
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Murtadha Hubail 
Reviewed-by: Michael Blow 
---
 .../org/apache/asterix/app/nc/HaltCallback.java|  5 +-
 .../PersistentLocalResourceRepositoryTest.java | 53 ++
 .../ioopcallbacks/LSMIOOperationCallback.java  | 32 -
 .../asterix/common/storage/ResourceReference.java  | 14 ++
 .../replication/messaging/ComponentMaskTask.java   |  4 +-
 .../PersistentLocalResourceRepository.java | 14 +-
 .../java/org/apache/hyracks/util/ExitUtil.java |  2 +-
 7 files changed, 103 insertions(+), 21 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java
index 17a4f46..9802001 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java
@@ -20,7 +20,6 @@ package org.apache.asterix.app.nc;
 
 import org.apache.hyracks.storage.am.lsm.common.api.IIoOperationFailedCallback;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation;
-import 
org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation.LSMIOOperationType;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
 import org.apache.hyracks.util.ExitUtil;
 import org.apache.logging.log4j.LogManager;
@@ -42,8 +41,6 @@ public class HaltCallback implements 
IIoOperationFailedCallback {
 @Override
 public void operationFailed(ILSMIOOperation operation, Throwable t) {
 LOGGER.error("Operation {} has failed", operation, t);
-if (operation.getIOOpertionType() == LSMIOOperationType.FLUSH) {
-ExitUtil.halt(ExitUtil.EC_FLUSH_FAILED);
-}
+ExitUtil.halt(ExitUtil.EC_IO_OPERATION_FAILED);
 }
 }
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/PersistentLocalResourceRepositoryTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/PersistentLocalResourceRepositoryTest.java
index 00d2d3d..50118fc 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/PersistentLocalResourceRepositoryTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/PersistentLocalResourceRepositoryTest.java
@@ -171,6 +171,59 @@ public class PersistentLocalResourceRepositoryTest {
 Assert.assertFalse(indexMetadataMaskFile.exists());
 }
 
+@Test
+public void deleteMaskedMergedFiles() throws Exception {
+final INcApplicationContext ncAppCtx = (INcApplicationContext) 
integrationUtil.ncs[0].getApplicationContext();
+final String nodeId = ncAppCtx.getServiceContext().getNodeId();
+final String datasetName = "ds";
+TestDataUtil.createIdOnlyDataset(datasetName);
+final Dataset dataset = TestDataUtil.getDataset(integrationUtil, 
datasetName);
+final String indexPath = TestDataUtil.getIndexPath(integrationUtil, 
dataset, nodeId);
+FileReference indexDirRef = ncAppCtx.getIoManager().resolve(indexPath);
+int compSeqStart = 100;
+int validComponentSequence = 103;
+// advance valid component seq in checkpoint
+PersistentLocalResourceRepository localResourceRepository =
+(PersistentLocalResourceRepository) 
ncAppCtx.getLocalResourceRepository();
+LocalResource localResource = localResourceRepository.get(indexPath);
+DatasetResourceReference drr = 

[asterixdb] 11/25: Merge commit 'gerrit/mad-hatter'

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 7707f1f02f59293e1aa3a899846cd54c676d02a8
Merge: be592d9 0381a66
Author: Hussain Towaileb 
AuthorDate: Tue Feb 9 15:17:02 2021 +0300

Merge commit 'gerrit/mad-hatter'

Change-Id: I0a1bf2f476c13d1a7dfc7a1ffc13858367ed870a

 .../apache/asterix/test/txn/LogManagerTest.java|   2 +-
 .../asterix/test/txn/RecoveryManagerTest.java  |  18 +++
 .../non-s3-region/external_dataset.000.ddl.sqlpp   |  41 +++
 .../non-s3-region/external_dataset.099.ddl.sqlpp   |  20 
 .../runtimets/testsuite_external_dataset_s3.xml|   5 +
 asterixdb/asterix-external-data/pom.xml|   4 +
 .../record/reader/aws/AwsS3InputStreamFactory.java | 125 -
 .../external/util/ExternalDataConstants.java   |   3 +-
 .../asterix/external/util/ExternalDataUtils.java   |  97 ++--
 .../management/service/logging/LogReader.java  |   2 +-
 asterixdb/pom.xml  |   5 +
 11 files changed, 256 insertions(+), 66 deletions(-)

diff --cc 
asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
index 59d7fae,34e48c2..4f8df3d
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
@@@ -22,7 -22,10 +22,9 @@@ import java.io.File
  
  import org.apache.asterix.api.common.AsterixHyracksIntegrationUtil;
  import org.apache.asterix.common.TestDataUtil;
+ import org.apache.asterix.common.api.INcApplicationContext;
 -import org.apache.asterix.common.config.StorageProperties;
  import org.apache.asterix.metadata.bootstrap.MetadataBuiltinEntities;
+ import org.apache.asterix.transaction.management.service.logging.LogManager;
  import org.junit.After;
  import org.junit.Assert;
  import org.junit.Before;
diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/s3/non-s3-region/external_dataset.000.ddl.sqlpp
index 000,3b22f11..3b22f11
mode 00,100644..100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/s3/non-s3-region/external_dataset.000.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/s3/non-s3-region/external_dataset.000.ddl.sqlpp
diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/s3/non-s3-region/external_dataset.099.ddl.sqlpp
index 000,548e632..548e632
mode 00,100644..100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/s3/non-s3-region/external_dataset.099.ddl.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/s3/non-s3-region/external_dataset.099.ddl.sqlpp
diff --cc 
asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
index e0a28ba,000..6557230
mode 100644,00..100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_s3.xml
@@@ -1,304 -1,0 +1,309 @@@
 +
 +
 +
 +  
 +
 +  
 +
 +common/json/json
 +  
 +
 +
 +  
 +create-with-session-token
 +  
 +
 +
 +  
 +
 +common/json/gz
 +  
 +
 +
 +  
 +
 +common/json/mixed
 +  
 +
 +
 +  
 +
 +common/csv/csv
 +  
 +
 +  
 +
 +common/csv/gz
 +  
 +
 +  
 +
 +common/csv/mixed
 +  
 +
 +
 +  
 +
 +common/tsv/tsv
 +  
 +
 +
 +  
 +
 +common/tsv/gz
 +  
 +
 +
 +  
 +
 +common/tsv/mixed
 +  
 +
 +
 +  
 +
 +common/empty-string-definition
 +  
 +
 +
 +  
 +
 +common/over-1000-objects
 +  
 +
 +
 +  
 +
 +common/malformed-json
 +Parsing error at malformed-data/duplicate-fields.json 
line 1 field field: Duplicate field 'field'
 +Parsing error at malformed-data/malformed-json.json 
line 1 field field: Unexpected character ('}' (code 125)): was expecting 
double-quote to start field name
 +Parsing error at malformed-data/malformed-json-2.json 
line 4 field array_f: Unexpected character (']' (code 93)): expected a valid 
value (JSON String, Number, Array, Object or token 'null', 'true' or 
'false')
 +Parsing error at 
malformed-data/malformed-jsonl-1.json line 3 field field2: Unrecognized token 
'truee': was expecting (JSON String, Number, Array, Object or token 'null', 
'true' or 'false')
 +Parsing error at 

[asterixdb] 25/25: Merge branch 'gerrit/cheshire-cat'

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 2c22ebe95d210c047fc58a1247509aed5854048f
Merge: ee4a056 56759ec
Author: Michael Blow 
AuthorDate: Fri Feb 12 18:48:21 2021 -0500

Merge branch 'gerrit/cheshire-cat'

Change-Id: If9b2e4f8b46d2f3b03917b74b08f98694fba4ece

 .../org/apache/asterix/active/ActiveManager.java   |   2 +-
 .../rules/SetAsterixMemoryRequirementsRule.java|   3 +
 .../apache/asterix/api/common/APIFramework.java|   3 +-
 .../api/http/server/NCQueryServiceServlet.java |  16 +-
 .../api/http/server/QueryServiceServlet.java   |   8 +-
 .../message/ExecuteStatementRequestMessage.java|  11 +-
 .../app/replication/NcLifecycleCoordinator.java|  24 +-
 .../apache/asterix/test/common/TestExecutor.java   |  32 +-
 .../apache/asterix/test/txn/LogManagerTest.java|   2 +-
 .../asterix/test/txn/RecoveryManagerTest.java  |  18 +
 .../ngram-edit-distance-inline.sqlpp   |   2 +
 .../ngram-fuzzyeq-edit-distance.sqlpp  |   2 +-
 .../olist-edit-distance-inline.sqlpp   |   2 +
 ...pidx-with-join-edit-distance-check-idx_01.sqlpp |   2 +
 ...x-with-join-edit-distance-check-idx_01_ps.sqlpp |   2 +-
 .../ngram-edit-distance-check_02.sqlpp |   2 +
 .../ngram-edit-distance-check_03.sqlpp |   2 +
 .../ngram-edit-distance-check_04.sqlpp |   2 +
 .../ngram-edit-distance_02.sqlpp   |   2 +
 .../ngram-edit-distance_03.sqlpp   |   2 +
 .../ngram-edit-distance_04.sqlpp   |   2 +
 .../ngram-fuzzyeq-edit-distance_01.sqlpp   |   2 +-
 .../ngram-fuzzyeq-edit-distance_03.sqlpp   |   2 +-
 .../olist-edit-distance-check_02.sqlpp |   2 +
 .../olist-edit-distance-check_03.sqlpp |   2 +
 .../olist-edit-distance-check_04.sqlpp |   2 +
 .../olist-edit-distance_02.sqlpp   |   2 +
 .../olist-edit-distance_03.sqlpp   |   2 +
 .../olist-edit-distance_04.sqlpp   |   2 +
 .../olist-fuzzyeq-edit-distance_02.sqlpp   |   2 +-
 .../olist-fuzzyeq-edit-distance_03.sqlpp   |   2 +-
 ...x-with-join-edit-distance-check-idx_01_ps.sqlpp |   1 +
 ...x-with-join-edit-distance-check-idx_01_ps.sqlpp |   1 +
 ...x-with-join-edit-distance-check-idx_01_ps.sqlpp |   1 +
 .../non-s3-region/external_dataset.000.ddl.sqlpp}  |  24 +-
 .../non-s3-region/external_dataset.099.ddl.sqlpp}  |   9 +-
 .../grouping-sets-1.16.query.sqlpp}|  12 +-
 .../grouping-sets-1.17.query.sqlpp}|  18 +-
 .../grouping-sets-1.18.query.sqlpp}|  14 +-
 .../grouping-sets-1.19.query.sqlpp}|  14 +-
 ...probe-pidx-with-join-invidx-sidx2.3.query.sqlpp |   1 +
 .../metadata_only_01.2.plans.sqlpp}|  21 +-
 ...probe-pidx-with-join-invidx-sidx2.3.query.sqlpp |   1 +
 ...probe-pidx-with-join-invidx-sidx2.3.query.sqlpp |   1 +
 ...probe-pidx-with-join-invidx-sidx2.3.query.sqlpp |   1 +
 .../{q49/q49.1.ddl.sqlpp => q05/q05.1.ddl.sqlpp}   | 367 ++---
 .../q49.2.update.sqlpp => q05/q05.2.update.sqlpp}  |  20 +-
 .../queries_sqlpp/tpcds/q05/q05.3.query.sqlpp  | 155 
 .../queries_sqlpp/tpcds/q15/q15.1.ddl.sqlpp|   1 +
 .../queries_sqlpp/tpcds/q15/q15.2.update.sqlpp |   8 +-
 .../{q26/q26.1.ddl.sqlpp => q18/q18.1.ddl.sqlpp}   | 151 +++
 .../q15.2.update.sqlpp => q18/q18.2.update.sqlpp}  |  11 +-
 .../queries_sqlpp/tpcds/q18/q18.3.query.sqlpp  |  50 +++
 .../queries_sqlpp/tpcds/q20/q20.1.ddl.sqlpp|   1 +
 .../queries_sqlpp/tpcds/q20/q20.2.update.sqlpp |   6 +-
 .../queries_sqlpp/tpcds/q20/q20.3.query.sqlpp  |   2 +-
 .../{q37/q37.1.ddl.sqlpp => q22/q22.1.ddl.sqlpp}   |  40 --
 .../q20.2.update.sqlpp => q22/q22.2.update.sqlpp}  |   7 +-
 .../q20.2.update.sqlpp => q22/q22.3.query.sqlpp}   |  17 +-
 .../queries_sqlpp/tpcds/q25/q25.1.ddl.sqlpp|   2 +
 .../queries_sqlpp/tpcds/q26/q26.1.ddl.sqlpp|   1 +
 .../queries_sqlpp/tpcds/q26/q26.2.update.sqlpp |  10 +-
 .../{q29/q29.1.ddl.sqlpp => q27/q27.1.ddl.sqlpp}   |  80 +---
 .../q26.2.update.sqlpp => q27/q27.2.update.sqlpp}  |  11 +-
 .../q26.2.update.sqlpp => q27/q27.3.query.sqlpp}   |  30 +-
 .../queries_sqlpp/tpcds/q29/q29.1.ddl.sqlpp|   2 +
 .../{q29/q29.1.ddl.sqlpp => q36/q36.1.ddl.sqlpp}   |  65 
 .../q20.2.update.sqlpp => q36/q36.2.update.sqlpp}  |   7 +-
 .../queries_sqlpp/tpcds/q36/q36.3.query.sqlpp  |  48 +++
 .../queries_sqlpp/tpcds/q37/q37.1.ddl.sqlpp|   1 +
 .../queries_sqlpp/tpcds/q49/q49.1.ddl.sqlpp|   1 +
 .../queries_sqlpp/tpcds/q49/q49.2.update.sqlpp |  14 +-
 .../queries_sqlpp/tpcds/q49/q49.3.query.sqlpp  |  10 +-
 .../queries_sqlpp/tpcds/q57/q57.1.ddl.sqlpp|   1 +
 .../queries_sqlpp/tpcds/q57/q57.3.query.sqlpp  |   4 +-
 

[asterixdb] 22/25: Merge branch 'gerrit/mad-hatter'

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit f72e4cfaa0f2678f6e3ce3237b6c58bc94bad45c
Merge: 39eb84f 8ac45b4
Author: Michael Blow 
AuthorDate: Fri Feb 12 17:31:26 2021 -0500

Merge branch 'gerrit/mad-hatter'

Change-Id: I6d2c3a1fae5dd5310885a3d65797b0ebc80c9937

 .../asterix/common/config/ExternalProperties.java  |   3 +-
 .../hyracks/control/common/config/OptionTypes.java | 258 +
 2 files changed, 159 insertions(+), 102 deletions(-)

diff --cc 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ExternalProperties.java
index c415437,642cbd6..9bef65d
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ExternalProperties.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ExternalProperties.java
@@@ -46,8 -47,8 +47,8 @@@ public class ExternalProperties extend
  CC_JAVA_OPTS(STRING, "-Xmx1024m", "The JVM options passed to the 
cluster controller process by managix"),
  NC_JAVA_OPTS(STRING, "-Xmx1024m", "The JVM options passed to the node 
controller process(es) by managix"),
  MAX_WEB_REQUEST_SIZE(
- NONNEGATIVE_INTEGER,
+ POSITIVE_INTEGER_BYTE_UNIT,
 -StorageUtil.getIntSizeInBytes(50, 
StorageUtil.StorageUnit.MEGABYTE),
 +StorageUtil.getIntSizeInBytes(200, 
StorageUtil.StorageUnit.MEGABYTE),
  "The maximum accepted web request size in bytes"),
  REQUESTS_ARCHIVE_SIZE(NONNEGATIVE_INTEGER, 50, "The maximum number of 
archived requests to maintain");
  



[asterixdb] 03/25: [NO ISSUE][NET] Ensure ssl socket is connected before write

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 0dbb0c2c39639262068bdaa8bb6d571fadb3f1da
Author: Murtadha Hubail 
AuthorDate: Thu Feb 4 19:58:47 2021 +0300

[NO ISSUE][NET] Ensure ssl socket is connected before write

- user model changes: no
- storage format changes: no
- interface changes: no

Details:

- Ensure the SSL socket is connected before attempting a
  write/wrap operation.
- Only attempt to send goodbye message to replicas when
  the socket channel is still connected.
- Always attempt to close the ssl socket channel even when
  the close handshake fails.

Change-Id: I07fbcd76be29853c94cb133485d83034ceee9cb3
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9825
Integration-Tests: Jenkins 
Reviewed-by: Michael Blow 
Tested-by: Jenkins 
---
 .../org/apache/asterix/replication/api/PartitionReplica.java  |  4 ++--
 .../java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java | 11 +--
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git 
a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
 
b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
index 3226299..6b97306 100644
--- 
a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
+++ 
b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
@@ -113,10 +113,10 @@ public class PartitionReplica implements 
IPartitionReplica {
 
 public synchronized void close() {
 try {
-if (sc != null) {
+if (NetworkingUtil.isHealthy(sc)) {
 sendGoodBye();
-NetworkUtil.closeQuietly(sc);
 }
+NetworkUtil.closeQuietly(sc);
 } finally {
 sc = null;
 }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java
 
b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java
index 02a1a02..74deefe 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java
@@ -20,6 +20,7 @@ package org.apache.hyracks.ipc.sockets;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.nio.channels.ClosedChannelException;
 import java.nio.channels.SocketChannel;
 
 import javax.net.ssl.SSLEngine;
@@ -142,6 +143,9 @@ public class SslSocketChannel implements ISocketChannel {
 while (src.hasRemaining()) {
 // chunk src to encrypted ssl records of pocket size
 outEncryptedData.clear();
+if (!socketChannel.isConnected()) {
+throw new ClosedChannelException();
+}
 final SSLEngineResult result = engine.wrap(src, outEncryptedData);
 switch (result.getStatus()) {
 case OK:
@@ -186,8 +190,11 @@ public class SslSocketChannel implements ISocketChannel {
 public synchronized void close() throws IOException {
 if (socketChannel.isOpen()) {
 engine.closeOutbound();
-new SslHandshake(this).handshake();
-socketChannel.close();
+try {
+new SslHandshake(this).handshake();
+} finally {
+socketChannel.close();
+}
 }
 }
 



[asterixdb] 20/25: [NO ISSUE][CONFIG] Avoid integer overflow on option parse

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 6eb42a0ebf010b69c8f4e763d90f89cfbe46ea1a
Author: Michael Blow 
AuthorDate: Wed Dec 9 10:11:00 2020 -0500

[NO ISSUE][CONFIG] Avoid integer overflow on option parse

- Do not use Integer.parseUnsignedInt() for nonnegative integer option 
parsing, as
  this will result in negative numbers for values > 0x7fff
- Renamed (OptionTypes.)UNSIGNED_INTEGER to NONNEGATIVE_INTEGER for clarity
- Add POSITIVE_INTEGER_BYTE_UNIT & POSITIVE_LONG_BYTE_UNIT option types

(includes cherry-pick of commit 7a99fcefe3)

Change-Id: I03bc9e92c2b6ce48977e93966f6cb9160c4df893
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/10003
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Michael Blow 
Reviewed-by: Murtadha Hubail 
---
 .../asterix/common/config/CompilerProperties.java  |   7 +-
 .../asterix/common/config/ExternalProperties.java  |  17 +-
 .../asterix/common/config/MetadataProperties.java  |   6 +-
 .../common/config/ReplicationProperties.java   |   4 +-
 .../asterix/common/config/StorageProperties.java   |   6 +-
 .../common/config/TransactionProperties.java   |   6 +-
 .../hyracks/control/common/config/OptionTypes.java | 271 -
 .../control/common/controllers/CCConfig.java   |  20 +-
 .../control/common/controllers/NCConfig.java   |  26 +-
 9 files changed, 202 insertions(+), 161 deletions(-)

diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
index 9428e6f..8860495 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
@@ -23,7 +23,6 @@ import static 
org.apache.hyracks.control.common.config.OptionTypes.INTEGER;
 import static 
org.apache.hyracks.control.common.config.OptionTypes.INTEGER_BYTE_UNIT;
 import static 
org.apache.hyracks.control.common.config.OptionTypes.LONG_BYTE_UNIT;
 import static 
org.apache.hyracks.control.common.config.OptionTypes.POSITIVE_INTEGER;
-import static 
org.apache.hyracks.control.common.config.OptionTypes.UNSIGNED_INTEGER;
 import static org.apache.hyracks.util.StorageUtil.StorageUnit.KILOBYTE;
 import static org.apache.hyracks.util.StorageUtil.StorageUnit.MEGABYTE;
 
@@ -31,6 +30,7 @@ import 
org.apache.hyracks.algebricks.core.config.AlgebricksConfig;
 import org.apache.hyracks.api.config.IOption;
 import org.apache.hyracks.api.config.IOptionType;
 import org.apache.hyracks.api.config.Section;
+import org.apache.hyracks.control.common.config.OptionTypes;
 import org.apache.hyracks.util.StorageUtil;
 
 public class CompilerProperties extends AbstractProperties {
@@ -68,7 +68,10 @@ public class CompilerProperties extends AbstractProperties {
 + "other integer values dictate the number of query 
execution parallel partitions. The system will "
 + "fall back to use the number of all available CPU 
cores in the cluster as the degree of parallelism "
 + "if the number set by a user is too large or too 
small"),
-COMPILER_STRINGOFFSET(UNSIGNED_INTEGER, 0, "Position of a first 
character in a String/Binary (0 or 1)"),
+COMPILER_STRINGOFFSET(
+OptionTypes.getRangedIntegerType(0, 1),
+0,
+"Position of a first character in a String/Binary (0 or 1)"),
 COMPILER_SORT_PARALLEL(BOOLEAN, AlgebricksConfig.SORT_PARALLEL, 
"Enabling/Disabling full parallel sort"),
 COMPILER_SORT_SAMPLES(
 POSITIVE_INTEGER,
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ExternalProperties.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ExternalProperties.java
index 1533c9f..642cbd6 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ExternalProperties.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/ExternalProperties.java
@@ -19,9 +19,10 @@
 package org.apache.asterix.common.config;
 
 import static org.apache.hyracks.control.common.config.OptionTypes.LEVEL;
+import static 
org.apache.hyracks.control.common.config.OptionTypes.NONNEGATIVE_INTEGER;
 import static 
org.apache.hyracks.control.common.config.OptionTypes.POSITIVE_INTEGER;
+import static 
org.apache.hyracks.control.common.config.OptionTypes.POSITIVE_INTEGER_BYTE_UNIT;
 import static org.apache.hyracks.control.common.config.OptionTypes.STRING;
-import static 
org.apache.hyracks.control.common.config.OptionTypes.UNSIGNED_INTEGER;
 
 import 

[asterixdb] 17/25: [NO ISSUE][REP] Notify nodes on replica failure

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 33eea75a950ba3b82612d938d0b892d116db3f5d
Author: Murtadha Hubail 
AuthorDate: Thu Feb 11 13:36:26 2021 +0300

[NO ISSUE][REP] Notify nodes on replica failure

- user model changes: no
- storage format changes: no
- interface changes: yes

Details:

- Whenever a node fails, notify remaining active nodes
  that the failed node's replica has failed.

Change-Id: I12551bd543cd4b664101e8f4d4f44f3124de3d54
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9944
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Murtadha Hubail 
Reviewed-by: Ali Alsuliman 
---
 .../app/replication/NcLifecycleCoordinator.java| 24 +-
 .../replication/INcLifecycleCoordinator.java   |  5 +-
 .../messaging/ReplicaFailedMessage.java| 54 ++
 .../asterix/runtime/utils/ClusterStateManager.java | 23 +++--
 4 files changed, 100 insertions(+), 6 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NcLifecycleCoordinator.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NcLifecycleCoordinator.java
index 7576e0d..d22e9fc 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NcLifecycleCoordinator.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/replication/NcLifecycleCoordinator.java
@@ -18,6 +18,9 @@
  */
 package org.apache.asterix.app.replication;
 
+import static org.apache.hyracks.api.exceptions.ErrorCode.NODE_FAILED;
+
+import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -49,6 +52,7 @@ import 
org.apache.asterix.common.replication.INCLifecycleMessage;
 import org.apache.asterix.common.replication.INcLifecycleCoordinator;
 import org.apache.asterix.common.transactions.IRecoveryManager.SystemState;
 import org.apache.asterix.metadata.MetadataManager;
+import org.apache.asterix.replication.messaging.ReplicaFailedMessage;
 import org.apache.hyracks.api.application.ICCServiceContext;
 import org.apache.hyracks.api.client.NodeStatus;
 import org.apache.hyracks.api.control.IGatekeeper;
@@ -80,12 +84,15 @@ public class NcLifecycleCoordinator implements 
INcLifecycleCoordinator {
 }
 
 @Override
-public void notifyNodeFailure(String nodeId) throws HyracksDataException {
+public void notifyNodeFailure(String nodeId, InetSocketAddress 
replicaAddress) throws HyracksDataException {
 pendingStartupCompletionNodes.remove(nodeId);
 clusterManager.updateNodeState(nodeId, false, null);
 if (nodeId.equals(metadataNodeId)) {
 clusterManager.updateMetadataNode(metadataNodeId, false);
 }
+if (replicaAddress != null) {
+notifyFailedReplica(clusterManager, nodeId, replicaAddress);
+}
 clusterManager.refreshState();
 }
 
@@ -229,4 +236,19 @@ public class NcLifecycleCoordinator implements 
INcLifecycleCoordinator {
 throw HyracksDataException.create(e);
 }
 }
+
+private void notifyFailedReplica(IClusterStateManager clusterManager, 
String nodeID,
+InetSocketAddress replicaAddress) {
+LOGGER.info("notify replica failure of nodeId {} at {}", nodeID, 
replicaAddress);
+Set ncs = clusterManager.getParticipantNodes(true);
+ReplicaFailedMessage message =
+new ReplicaFailedMessage(replicaAddress, 
HyracksDataException.create(NODE_FAILED, nodeID));
+for (String nodeId : ncs) {
+try {
+messageBroker.sendApplicationMessageToNC(message, nodeId);
+} catch (Exception e) {
+LOGGER.info("failed to notify replica failure to node {}", 
nodeID);
+}
+}
+}
 }
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/INcLifecycleCoordinator.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/INcLifecycleCoordinator.java
index 1a7c3c8..9a3b125 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/INcLifecycleCoordinator.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/replication/INcLifecycleCoordinator.java
@@ -18,6 +18,8 @@
  */
 package org.apache.asterix.common.replication;
 
+import java.net.InetSocketAddress;
+
 import org.apache.asterix.common.cluster.IClusterStateManager;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
@@ -35,9 +37,10 @@ public interface INcLifecycleCoordinator {
  * Defines the logic of a {@link INcLifecycleCoordinator} when a node 
leaves the cluster.
  *
  * @param nodeId
+ * @param replicaAddress
  * @throws 

[asterixdb] 18/25: Merge branch 'gerrit/mad-hatter'

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit eccf4baa03f03eadc337763c312429f1abd7aa4f
Merge: 33eea75 143eaa5
Author: Michael Blow 
AuthorDate: Thu Feb 11 14:09:43 2021 -0500

Merge branch 'gerrit/mad-hatter'

Change-Id: I68c0a52780a10c96030165fa5c34426d88f5b57d




[asterixdb] 01/25: [NO ISSUE][*DB][MISC] Remove leftover managix XJC invocations

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 9f19cef6bb20a20173f6fe2ba14127ba8bf5a7e6
Author: Michael Blow 
AuthorDate: Tue Feb 2 11:30:40 2021 -0500

[NO ISSUE][*DB][MISC] Remove leftover managix XJC invocations

Change-Id: I76847f32ac7f275bdf53854366ff22eacb1db84f
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9805
Integration-Tests: Jenkins 
Tested-by: Michael Blow 
Reviewed-by: Michael Blow 
Reviewed-by: Murtadha Hubail 
---
 asterixdb/asterix-common/pom.xml | 108 ---
 1 file changed, 108 deletions(-)

diff --git a/asterixdb/asterix-common/pom.xml b/asterixdb/asterix-common/pom.xml
index 760e027..d475caf 100644
--- a/asterixdb/asterix-common/pom.xml
+++ b/asterixdb/asterix-common/pom.xml
@@ -38,114 +38,6 @@
   
 
   
-org.jvnet.jaxb2.maven2
-maven-jaxb2-plugin
-
-  
-configuration
-
-  generate
-
-
-  
--Xsetters
--Xvalue-constructor
-  
-  
-
-  org.jvnet.jaxb2_commons
-  jaxb2-basics
-  0.6.2
-
-
-  org.jvnet.jaxb2_commons
-  jaxb2-value-constructor
-  3.0
-
-  
-  src/main/resources/schema
-  
-asterix-conf.xsd
-  
-  
org.apache.asterix.common.configuration
-  src/main/resources/schema
-  
-jaxb-bindings.xjb
-  
-  
${project.build.directory}/generated-sources/configuration
-
-  
-  
-cluster
-
-  generate
-
-
-  
--Xsetters
--Xvalue-constructor
-  
-  
-
-  org.jvnet.jaxb2_commons
-  jaxb2-basics
-  0.6.2
-
-
-  org.jvnet.jaxb2_commons
-  jaxb2-value-constructor
-  3.0
-
-  
-  src/main/resources/schema
-  
-cluster.xsd
-  
-  
org.apache.asterix.event.schema.cluster
-  
${project.build.directory}/generated-sources/cluster
-  src/main/resources/schema
-  
-jaxb-bindings.xjb
-  
-
-  
-  
-yarn_cluster
-
-  generate
-
-
-  
--Xsetters
--Xvalue-constructor
-  
-  
-
-  org.jvnet.jaxb2_commons
-  jaxb2-basics
-  0.6.2
-
-
-  org.jvnet.jaxb2_commons
-  jaxb2-value-constructor
-  3.0
-
-  
-  src/main/resources/schema
-  
-yarn_cluster.xsd
-  
-  
org.apache.asterix.event.schema.yarnCluster
-  
${project.build.directory}/generated-sources/yarn_cluster
-  src/main/resources/schema
-  
-jaxb-bindings.xjb
-  
-
-  
-
-  
-  
 org.apache.maven.plugins
 maven-jar-plugin
 



[asterixdb] branch master updated (ee4a056 -> 2c22ebe)

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git.


from ee4a056  Merge branch 'gerrit/cheshire-cat'
 new bd2f43f  [NO ISSUE][COMP] Add TPC-DS ROLLUP tests
 new 9f19cef  [NO ISSUE][*DB][MISC] Remove leftover managix XJC invocations
 new 0dbb0c2  [NO ISSUE][NET] Ensure ssl socket is connected before write
 new 4e7d48b  Merge branch 'gerrit/mad-hatter'
 new df73054  [ASTERIXDB-2828][COMP] Error with GROUP BY ROLLUP and WITH
 new c65fa86  [NO ISSUE][COMP] Additional plan sanity check
 new be592d9  [NO ISSUE][COMP] Add compiler property to skip assiging low 
budget
 new 9f454cd  [ASTERIXDB-2827][EXT]: S3 external dataset: properly fallback 
to old API
 new 1f23809  [NO ISSUE][TX] Stop reading logs when an empty file is 
encountered
 new 0381a66  [ASTERIXDB-2826][EXT]: S3 allow using custom non-S3 regions
 new 7707f1f  Merge commit 'gerrit/mad-hatter'
 new 5faef51  [ASTERIXDB-2819][IO] Make absolute & normalize IODevice paths
 new 33eea75  [NO ISSUE][REP] Notify nodes on replica failure
 new dc12fc0  Fixup merge commit 73d9c0f74e
 new aa0f9a9  [ASTERIXDB-2738][STO] Create Mask File Before Merge Operations
 new 5a377cf  [NO ISSUE][TX] Stop reading logs when an empty file is 
encountered
 new 143eaa5  Merge branch 'gerrit/stabilization-5949a1cb71'
 new eccf4ba  Merge branch 'gerrit/mad-hatter'
 new 39eb84f  [NO ISSUE][*DB] Log at FATAL level when halting due to 
failure to stop active runtime
 new d337bb7  [NO ISSUE][OTH] Make ExecuteStatementRequestMessage extensible
 new 6eb42a0  [NO ISSUE][CONFIG] Avoid integer overflow on option parse
 new 8ac45b4  [ASTERIXDB-2815][COMP] DISTINCT in subquery gives wrong result
 new f72e4cf  Merge branch 'gerrit/mad-hatter'
 new 56759ec  Merge "Merge branch 'gerrit/mad-hatter'" into cheshire-cat
 new 2c22ebe  Merge branch 'gerrit/cheshire-cat'

The 25 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/asterix/active/ActiveManager.java   |   2 +-
 .../rules/SetAsterixMemoryRequirementsRule.java|   3 +
 .../apache/asterix/api/common/APIFramework.java|   3 +-
 .../api/http/server/NCQueryServiceServlet.java |  16 +-
 .../api/http/server/QueryServiceServlet.java   |   8 +-
 .../message/ExecuteStatementRequestMessage.java|  11 +-
 .../app/replication/NcLifecycleCoordinator.java|  24 +-
 .../apache/asterix/test/common/TestExecutor.java   |  32 +-
 .../apache/asterix/test/txn/LogManagerTest.java|   2 +-
 .../asterix/test/txn/RecoveryManagerTest.java  |  18 +
 .../ngram-edit-distance-inline.sqlpp   |   2 +
 .../ngram-fuzzyeq-edit-distance.sqlpp  |   2 +-
 .../olist-edit-distance-inline.sqlpp   |   2 +
 ...pidx-with-join-edit-distance-check-idx_01.sqlpp |   2 +
 ...x-with-join-edit-distance-check-idx_01_ps.sqlpp |   2 +-
 .../ngram-edit-distance-check_02.sqlpp |   2 +
 .../ngram-edit-distance-check_03.sqlpp |   2 +
 .../ngram-edit-distance-check_04.sqlpp |   2 +
 .../ngram-edit-distance_02.sqlpp   |   2 +
 .../ngram-edit-distance_03.sqlpp   |   2 +
 .../ngram-edit-distance_04.sqlpp   |   2 +
 .../ngram-fuzzyeq-edit-distance_01.sqlpp   |   2 +-
 .../ngram-fuzzyeq-edit-distance_03.sqlpp   |   2 +-
 .../olist-edit-distance-check_02.sqlpp |   2 +
 .../olist-edit-distance-check_03.sqlpp |   2 +
 .../olist-edit-distance-check_04.sqlpp |   2 +
 .../olist-edit-distance_02.sqlpp   |   2 +
 .../olist-edit-distance_03.sqlpp   |   2 +
 .../olist-edit-distance_04.sqlpp   |   2 +
 .../olist-fuzzyeq-edit-distance_02.sqlpp   |   2 +-
 .../olist-fuzzyeq-edit-distance_03.sqlpp   |   2 +-
 ...x-with-join-edit-distance-check-idx_01_ps.sqlpp |   1 +
 ...x-with-join-edit-distance-check-idx_01_ps.sqlpp |   1 +
 ...x-with-join-edit-distance-check-idx_01_ps.sqlpp |   1 +
 .../non-s3-region/external_dataset.000.ddl.sqlpp}  |  24 +-
 .../non-s3-region}/external_dataset.099.ddl.sqlpp  |   0
 .../grouping-sets-1.16.query.sqlpp}|  12 +-
 .../grouping-sets-1.17.query.sqlpp}|  18 +-
 .../grouping-sets-1.18.query.sqlpp}|  14 +-
 .../grouping-sets-1.19.query.sqlpp}|  14 +-
 ...probe-pidx-with-join-invidx-sidx2.3.query.sqlpp |   1 +
 .../metadata_only_01.2.plans.sqlpp}|  21 +-
 ...probe-pidx-with-join-invidx-sidx2.3.query.sqlpp |   1 +
 ...probe-pidx-with-join-invidx-sidx2.3.query.sqlpp |   1 +
 ...probe-pidx-with-join-invidx-sidx2.3.query.sqlpp |   

[asterixdb] 04/25: Merge branch 'gerrit/mad-hatter'

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 4e7d48b5c39c95ed1d47a7d672051941dbe095ce
Merge: bd2f43f 0dbb0c2
Author: Michael Blow 
AuthorDate: Fri Feb 5 15:37:18 2021 -0500

Merge branch 'gerrit/mad-hatter'

Change-Id: Ib852b2318cc65dee4a78d3c57c533b9797fa24a9

 asterixdb/asterix-common/pom.xml   | 108 -
 .../asterix/replication/api/PartitionReplica.java  |   4 +-
 .../hyracks/ipc/sockets/SslSocketChannel.java  |  11 ++-
 3 files changed, 11 insertions(+), 112 deletions(-)




[asterixdb] 05/25: [ASTERIXDB-2827][EXT]: S3 external dataset: properly fallback to old API

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 9f454cdb48537e1fc0f9dd7b66ad75470a8c514a
Author: Hussain Towaileb 
AuthorDate: Fri Feb 5 16:49:11 2021 +0300

[ASTERIXDB-2827][EXT]: S3 external dataset: properly fallback to old API

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Properly fallback to old API if the new API is not supported.
  if the old API fails as well, then report the error properly.

Change-Id: Ib453eb396def92218951b9e45a89b6c0f48a54f6
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9844
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Hussain Towaileb 
Reviewed-by: Michael Blow 
---
 asterixdb/NOTICE   |   2 +-
 asterixdb/asterix-external-data/pom.xml|   4 +
 .../record/reader/aws/AwsS3InputStreamFactory.java | 122 -
 .../external/util/ExternalDataConstants.java   |   3 +-
 .../asterix/external/util/ExternalDataUtils.java   | 109 --
 asterixdb/pom.xml  |   5 +
 hyracks-fullstack/NOTICE   |   2 +-
 7 files changed, 182 insertions(+), 65 deletions(-)

diff --git a/asterixdb/NOTICE b/asterixdb/NOTICE
index b4729a8..4aabe27 100644
--- a/asterixdb/NOTICE
+++ b/asterixdb/NOTICE
@@ -1,5 +1,5 @@
 Apache AsterixDB
-Copyright 2015-2020 The Apache Software Foundation
+Copyright 2015-2021 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
diff --git a/asterixdb/asterix-external-data/pom.xml 
b/asterixdb/asterix-external-data/pom.xml
index 8270d71..169bcb6 100644
--- a/asterixdb/asterix-external-data/pom.xml
+++ b/asterixdb/asterix-external-data/pom.xml
@@ -437,6 +437,10 @@
 
 
   software.amazon.awssdk
+  aws-core
+
+
+  software.amazon.awssdk
   http-client-spi
 
 
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStreamFactory.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStreamFactory.java
index f3a36ff..0bc4c40 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStreamFactory.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStreamFactory.java
@@ -50,8 +50,11 @@ import org.apache.hyracks.api.util.CleanupUtils;
 
 import software.amazon.awssdk.core.exception.SdkException;
 import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
+import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
 import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
 import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
+import software.amazon.awssdk.services.s3.model.S3Exception;
 import software.amazon.awssdk.services.s3.model.S3Object;
 
 public class AwsS3InputStreamFactory implements IInputStreamFactory {
@@ -88,10 +91,6 @@ public class AwsS3InputStreamFactory implements 
IInputStreamFactory {
 this.configuration = configuration;
 ICcApplicationContext ccApplicationContext = (ICcApplicationContext) 
ctx.getApplicationContext();
 
-String container = configuration.get(AwsS3.CONTAINER_NAME_FIELD_NAME);
-
-List filesOnly = new ArrayList<>();
-
 // Ensure the validity of include/exclude
 ExternalDataUtils.AwsS3.validateIncludeExclude(configuration);
 
@@ -126,35 +125,24 @@ public class AwsS3InputStreamFactory implements 
IInputStreamFactory {
 p = (matchers, key) -> true;
 }
 
-S3Client s3Client = 
ExternalDataUtils.AwsS3.buildAwsS3Client(configuration);
-
 // Get all objects in a bucket and extract the paths to files
-ListObjectsV2Request.Builder listObjectsBuilder = 
ListObjectsV2Request.builder().bucket(container);
-ExternalDataUtils.AwsS3.setPrefix(configuration, listObjectsBuilder);
-
-ListObjectsV2Response listObjectsResponse;
-boolean done = false;
-String newMarker = null;
+List filesOnly;
+String container = configuration.get(AwsS3.CONTAINER_NAME_FIELD_NAME);
+S3Client s3Client = 
ExternalDataUtils.AwsS3.buildAwsS3Client(configuration);
 
 try {
-while (!done) {
-// List the objects from the start, or from the last marker in 
case of truncated result
-if (newMarker == null) {
-listObjectsResponse = 
s3Client.listObjectsV2(listObjectsBuilder.build());
+filesOnly = 

[asterixdb] 19/25: [NO ISSUE][*DB] Log at FATAL level when halting due to failure to stop active runtime

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 39eb84fadbd41911c63dc9891bb433c85954fd18
Author: Michael Blow 
AuthorDate: Thu Feb 11 16:45:42 2021 -0500

[NO ISSUE][*DB] Log at FATAL level when halting due to failure to stop 
active runtime

Change-Id: Ifa3d49704919417fd3c5b11538f6ec90bde03c73
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9987
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Michael Blow 
Reviewed-by: Murtadha Hubail 
---
 .../src/main/java/org/apache/asterix/active/ActiveManager.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java
 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java
index 458008b..ba04967 100644
--- 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java
+++ 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java
@@ -179,7 +179,7 @@ public class ActiveManager {
 try {
 stopIfRunning(runtime, content.getTimeout(), 
content.getUnit());
 } catch (Throwable th) {
-LOGGER.warn("Failed to stop runtime: {}", runtimeId, th);
+LOGGER.fatal("Failed to stop runtime: {}", runtimeId, th);
 ExitUtil.halt(ExitUtil.EC_UNCAUGHT_THROWABLE);
 }
 });



[asterixdb] 12/25: [ASTERIXDB-2819][IO] Make absolute & normalize IODevice paths

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 5faef51562ce896bcb973dc321009808712e1659
Author: Ian Maxon 
AuthorDate: Mon Jan 25 20:37:18 2021 -0800

[ASTERIXDB-2819][IO] Make absolute & normalize IODevice paths

This improves the issue of not canonicalizing IOManager paths
by at least making them absolute and removing redundant ./ and ../
parts of the path.

Change-Id: Ib71fd775eb8e4b1df548350152a7331316abd5b5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9444
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Michael Blow 
---
 .../src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java   | 3 ++-
 .../src/main/java/org/apache/hyracks/control/nc/io/IOManager.java | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git 
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
 
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
index a2d28e1..c826c2f 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
@@ -20,6 +20,7 @@ package org.apache.hyracks.api.io;
 
 import java.io.File;
 import java.io.Serializable;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -80,7 +81,7 @@ public class IODeviceHandle implements Serializable {
 public static List getDevices(String[] ioDevices) {
 List devices = new ArrayList<>();
 for (String ioDevice : ioDevices) {
-String devPath = ioDevice.trim();
+String devPath = 
Paths.get(ioDevice.trim()).toAbsolutePath().normalize().toString();
 devices.add(new IODeviceHandle(new File(devPath), "."));
 }
 return devices;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
index da78a0d..dee61a4 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
@@ -414,9 +414,9 @@ public class IOManager implements IIOManager {
 }
 
 public IODeviceHandle getDevice(String fullPath) {
-Path full = Paths.get(fullPath);
+Path full = Paths.get(fullPath).normalize();
 for (IODeviceHandle d : ioDevices) {
-if (full.startsWith(Paths.get(d.getMount().getAbsolutePath( {
+if 
(full.startsWith(Paths.get(d.getMount().getAbsolutePath()).normalize())) {
 return d;
 }
 }



[asterixdb] 13/25: Fixup merge commit 73d9c0f74e

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit dc12fc01407314eefe40e2296fb840d9d2d2d8d7
Author: Michael Blow 
AuthorDate: Tue Feb 2 08:52:24 2021 -0500

Fixup merge commit 73d9c0f74e

Change-Id: If5634b8c7360176e2a77d95ff39598eee4953108
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9803
Integration-Tests: Jenkins 
Reviewed-by: Hussain Towaileb 
Tested-by: Michael Blow 
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9943
Reviewed-by: Michael Blow 
---
 hyracks-fullstack/pom.xml | 25 -
 1 file changed, 25 deletions(-)

diff --git a/hyracks-fullstack/pom.xml b/hyracks-fullstack/pom.xml
index b895312..62cfbd5 100644
--- a/hyracks-fullstack/pom.xml
+++ b/hyracks-fullstack/pom.xml
@@ -283,31 +283,6 @@
 maven-plugin-api
 3.6.3
   
-  
-org.apache.maven
-maven-model
-3.6.3
-  
-  
-org.apache.maven
-maven-artifact
-3.6.3
-  
-  
-org.apache.maven
-maven-compat
-3.6.3
-  
-  
-org.apache.maven
-maven-core
-3.6.3
-  
-  
-org.apache.maven
-maven-plugin-api
-3.6.3
-  
 
   
   



[asterixdb] 24/25: Merge "Merge branch 'gerrit/mad-hatter'" into cheshire-cat

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 56759ec7abd98ec9f1670dfe1b3dc61a396fff3d
Merge: d337bb7 f72e4cf
Author: Apache AsterixDB Gerrit 
AuthorDate: Fri Feb 12 23:37:48 2021 +

Merge "Merge branch 'gerrit/mad-hatter'" into cheshire-cat

 .../asterix/common/config/ExternalProperties.java  |   3 +-
 .../hyracks/control/common/config/OptionTypes.java | 258 +
 2 files changed, 159 insertions(+), 102 deletions(-)



[asterixdb] 21/25: [ASTERIXDB-2815][COMP] DISTINCT in subquery gives wrong result

2021-02-12 Thread mblow
This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 8ac45b4ba64c6020454fd72dd78c7e43dc4a90d7
Author: Dmitry Lychagin 
AuthorDate: Wed Jan 13 16:05:09 2021 -0800

[ASTERIXDB-2815][COMP] DISTINCT in subquery gives wrong result

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Fix DISTINCT operator handling during subplan removal
- Added testcases

Change-Id: Idfe0aa09faba9bdad0c9c71e96d1facf07f401c0
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9585
Integration-Tests: Jenkins 
Tested-by: Jenkins 
Reviewed-by: Ali Alsuliman 
(cherry picked from commit b7d6ddccf8477c74913b1b52b2536e0dd8975dcf)
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9984
Reviewed-by: Dmitry Lychagin 
---
 .../RemoveLeftOuterUnnestForLeftOuterJoinRule.java |  3 +-
 .../subplan/InlineAllNtsInSubplanVisitor.java  |  7 +-
 ...nlineLeftNtsInSubplanJoinFlatteningVisitor.java |  7 +-
 .../SubplanSpecialFlatteningCheckVisitor.java  |  2 +-
 .../queries/subquery/query-ASTERIXDB-2815.sqlpp| 43 +
 .../results/subquery/query-ASTERIXDB-2815.plan | 74 ++
 .../query-ASTERIXDB-2815.1.ddl.sqlpp   | 33 ++
 .../query-ASTERIXDB-2815.2.update.sqlpp| 50 +++
 .../query-ASTERIXDB-2815.3.query.sqlpp | 30 +
 .../query-ASTERIXDB-2815.3.adm |  2 +
 .../test/resources/runtimets/testsuite_sqlpp.xml   |  5 ++
 .../operators/logical/DistinctOperator.java| 15 ++---
 .../visitors/CardinalityInferenceVisitor.java  |  2 +
 13 files changed, 257 insertions(+), 16 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RemoveLeftOuterUnnestForLeftOuterJoinRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RemoveLeftOuterUnnestForLeftOuterJoinRule.java
index 364816b..775a1df 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RemoveLeftOuterUnnestForLeftOuterJoinRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/RemoveLeftOuterUnnestForLeftOuterJoinRule.java
@@ -91,7 +91,8 @@ public class RemoveLeftOuterUnnestForLeftOuterJoinRule 
implements IAlgebraicRewr
 Triple checkGbyResult 
=
 checkUnnestAndGby(outerUnnest, gbyOperator);
 // The argument for listify and not(is-missing(...)) check should be 
variables.
-if (!isVariableReference(checkGbyResult.second) || 
!isVariableReference(checkGbyResult.third)) {
+if (!checkGbyResult.first || checkGbyResult.second == null || 
!isVariableReference(checkGbyResult.second)
+|| checkGbyResult.third == null || 
!isVariableReference(checkGbyResult.third)) {
 return false;
 }
 
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java
index 78c4c5e..f7cbb9d 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineAllNtsInSubplanVisitor.java
@@ -626,10 +626,11 @@ class InlineAllNtsInSubplanVisitor implements 
IQueryOperatorVisitor distinctVarList = op.getDistinctByVarList();
 for (LogicalVariable keyVar : correlatedKeyVars) {
-if (!distinctVarList.contains(keyVar)) {
-distinctVarList.add(keyVar);
+if (!op.isDistinctByVar(keyVar)) {
+VariableReferenceExpression keyVarRef = new 
VariableReferenceExpression(keyVar);
+keyVarRef.setSourceLocation(op.getSourceLocation());
+op.getExpressions().add(new MutableObject<>(keyVarRef));
 }
 }
 context.computeAndSetTypeEnvironmentForOperator(op);
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java
index 12596ff..8326f85 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/subplan/InlineLeftNtsInSubplanJoinFlatteningVisitor.java
@@ -361,10 +361,11 @@ class InlineLeftNtsInSubplanJoinFlatteningVisitor 
implements IQueryOperatorVisit
 if (!rewritten || !underJoin) {