You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2022/02/11 02:29:57 UTC

[asterixdb] branch master updated (412de58 -> b3fb199)

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 412de58  Merge branch 'gerrit/neo'
     new e4fde26  [NO ISSUE][STO] Change default disk force bytes to 1MB
     new 5588b79  [ASTERIXDB-3008][COMP] Improve translation of inner joins in subplans
     new 2b6b377  [NO ISSUE][MISC] Update tomcat-annotations-api
     new cd050c8  [ASTERIXDB-3009][EXT]: Update Google Cloud Storage to 2.3.0
     new 81c5266  [NO ISSUE][MISC] HTTP error handling, exception message cleanup
     new f7d22da  [NO ISSUE][CLUS] Avoid eager refresh cluster state
     new a703f79  [NO ISSUE][FUN] DATETIME constructor should accept TIME
     new 706406d  [NO ISSUE][MISC] Add ability to write messages to json object, etc.
     new b3fb199  Merge branch 'gerrit/neo'

The 9 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:
 .../asterix/translator/BaseClientRequest.java      |   2 +-
 .../SqlppExpressionToPlanTranslator.java           |  22 ++-
 .../asterix/translator/util/ValidateUtil.java      |  12 +-
 .../asterix/api/http/server/ClusterApiServlet.java |   2 +-
 .../api/http/server/DiagnosticsApiServlet.java     |   4 +-
 .../asterix/api/http/server/NCUdfApiServlet.java   |  14 +-
 .../app/active/ActiveNotificationHandler.java      |   5 +-
 .../result/fields/AbstractCodedMessagePrinter.java |  13 ++
 .../asterix/app/translator/QueryTranslator.java    |  10 +-
 .../asterix/test/common/ResultExtractor.java       |   2 +-
 .../src/test/resources/metadata/testsuite.xml      |  20 +-
 .../optimizerts/queries/ch2/ch2_q8_subquery.sqlpp  |  66 +++++++
 .../queries/joins/inner_right_corr.sqlpp}          |   9 +-
 .../ch2_q8_subquery.plan}                          | 206 ++++++++++----------
 .../results/joins/inner_right_corr.plan            |  53 ++++++
 .../results/subquery/query-ASTERIXDB-3006.plan     |  54 +++---
 .../datetime_01/datetime_01.3.query.sqlpp          |   4 +-
 .../datetime_02/datetime_02.1.query.sqlpp          |   7 +-
 .../queries_sqlpp/objects/ObjectsQueries.xml       |  22 +--
 .../request-param-validation-400-BAD.01.regexjson  |   2 +-
 .../constructor/datetime_01/datetime_01.1.adm      |   2 +-
 .../constructor/datetime_02/datetime_02.1.adm      |   2 +-
 .../warnings-limit/warnings-limit.03.regexadm      |   2 +-
 .../warnings-limit/warnings-limit.06.regexadm      |   2 +-
 .../warnings-limit/warnings-limit.08.regexadm      |   2 +-
 .../constructor/datetime_01/datetime_01.3.ast      |   6 +-
 ...stsuite_external_dataset_azure_blob_storage.xml |   8 +-
 .../runtimets/testsuite_external_dataset_s3.xml    |   8 +-
 .../resources/runtimets/testsuite_it_sqlpp.xml     |   2 +-
 .../test/resources/runtimets/testsuite_sqlpp.xml   | 209 ++++++++++-----------
 .../asterix/common/api/RequestReference.java       |   2 +-
 .../asterix/common/config/StorageProperties.java   |   2 +-
 .../src/main/resources/asx_errormsg/en.properties  |  44 ++---
 .../lang/sqlpp/visitor/FreeVariableVisitor.java    |  95 ++++++----
 .../replication/messaging/ReplicateFileTask.java   |   2 +-
 .../asterix/replication/sync/FileSynchronizer.java |   2 +-
 .../AbstractDateTimeConstructorEvaluator.java      |   8 +
 .../asterix/runtime/utils/ClusterStateManager.java |   7 +-
 asterixdb/asterix-server/pom.xml                   |  89 ++++-----
 asterixdb/pom.xml                                  |   4 +-
 .../appended-resources/supplemental-models.xml     | 179 ++++++++----------
 ....com_google_gson_gson-parent-2.8.9_LICENSE.txt} |   0
 ..._googleapis_api-common-java_v2.1.2_LICENSE.txt} |   0
 ...ent.com_googleapis_gax-java_v2.8.1_LICENSE.txt} |   0
 ...pis_google-api-java-client_v1.33.0_LICENSE.txt} |   0
 ...is_google-auth-library-java_v1.3.0_LICENSE.txt} |   0
 ...is_google-http-java-client_v1.41.0_LICENSE.txt} |   0
 ...s_google-oauth-java-client_v1.32.1_LICENSE.txt} |   0
 ...nt.com_googleapis_java-core_v2.3.5_LICENSE.txt} |   0
 ...content.com_grpc_grpc-java_v1.43.2_LICENSE.txt} |   0
 ...rcontent.com_grpc_grpc-java_v1.43.2_NOTICE.txt} |   0
 ...m_protocolbuffers_protobuf_v3.19.2_LICENSE.txt} |   0
 hyracks-fullstack/hyracks/hyracks-http/pom.xml     |   5 +
 .../hyracks/http/server/AbstractServlet.java       |  33 ++--
 .../java/org/apache/hyracks/util/JSONUtil.java     |   5 +-
 55 files changed, 707 insertions(+), 542 deletions(-)
 create mode 100644 asterixdb/asterix-app/src/test/resources/optimizerts/queries/ch2/ch2_q8_subquery.sqlpp
 copy asterixdb/asterix-app/src/test/resources/{runtimets/queries_sqlpp/quantifiers/query-ASTERIXDB-2947/query-ASTERIXDB-2947.1.ddl.sqlpp => optimizerts/queries/joins/inner_right_corr.sqlpp} (77%)
 copy asterixdb/asterix-app/src/test/resources/optimizerts/results/{btree-index-selection/intersection-misc/intersection-misc-01.plan => ch2/ch2_q8_subquery.plan} (50%)
 create mode 100644 asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/inner_right_corr.plan
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_grpc_grpc-java_v1.37.0_LICENSE.txt => raw.githubusercontent.com_google_gson_gson-parent-2.8.9_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_googleapis_api-common-java_v1.10.3_LICENSE.txt => raw.githubusercontent.com_googleapis_api-common-java_v2.1.2_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_googleapis_gax-java_v1.64.0_LICENSE.txt => raw.githubusercontent.com_googleapis_gax-java_v2.8.1_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_googleapis_java-core_v1.94.8_LICENSE.txt => raw.githubusercontent.com_googleapis_google-api-java-client_v1.33.0_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_googleapis_google-auth-library-java_v0.25.5_LICENSE.txt => raw.githubusercontent.com_googleapis_google-auth-library-java_v1.3.0_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_googleapis_google-oauth-java-client_v1.31.5_LICENSE.txt => raw.githubusercontent.com_googleapis_google-http-java-client_v1.41.0_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_googleapis_google-http-java-client_v1.39.2_LICENSE.txt => raw.githubusercontent.com_googleapis_google-oauth-java-client_v1.32.1_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_googleapis_google-api-java-client_v1.31.5_LICENSE.txt => raw.githubusercontent.com_googleapis_java-core_v2.3.5_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_google_gson_gson-parent-2.8.6_LICENSE.txt => raw.githubusercontent.com_grpc_grpc-java_v1.43.2_LICENSE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_grpc_grpc-java_v1.37.0_NOTICE.txt => raw.githubusercontent.com_grpc_grpc-java_v1.43.2_NOTICE.txt} (100%)
 rename asterixdb/src/main/licenses/content/{raw.githubusercontent.com_protocolbuffers_protobuf_v3.16.0_LICENSE.txt => raw.githubusercontent.com_protocolbuffers_protobuf_v3.19.2_LICENSE.txt} (100%)

[asterixdb] 09/09: Merge branch 'gerrit/neo'

Posted by mb...@apache.org.
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 b3fb199b4a7dd9a5aabdcdff5b3a7c203bb85684
Merge: 412de58 706406d
Author: Michael Blow <mb...@apache.org>
AuthorDate: Thu Feb 10 20:17:34 2022 -0500

    Merge branch 'gerrit/neo'
    
    Change-Id: Id189559017248b3c9ecdfd54fa7c6d84aa21be08

 .../asterix/translator/BaseClientRequest.java      |   2 +-
 .../SqlppExpressionToPlanTranslator.java           |  22 ++-
 .../asterix/translator/util/ValidateUtil.java      |  12 +-
 .../asterix/api/http/server/ClusterApiServlet.java |   2 +-
 .../api/http/server/DiagnosticsApiServlet.java     |   4 +-
 .../asterix/api/http/server/NCUdfApiServlet.java   |  14 +-
 .../app/active/ActiveNotificationHandler.java      |   5 +-
 .../result/fields/AbstractCodedMessagePrinter.java |  13 ++
 .../asterix/app/translator/QueryTranslator.java    |  10 +-
 .../asterix/test/common/ResultExtractor.java       |   2 +-
 .../src/test/resources/metadata/testsuite.xml      |  20 +-
 .../optimizerts/queries/ch2/ch2_q8_subquery.sqlpp  |  66 +++++++
 .../queries/joins/inner_right_corr.sqlpp}          |  25 +--
 .../optimizerts/results/ch2/ch2_q8_subquery.plan   | 128 +++++++++++++
 .../results/joins/inner_right_corr.plan            |  53 ++++++
 .../results/subquery/query-ASTERIXDB-3006.plan     |  54 +++---
 .../datetime_01/datetime_01.3.query.sqlpp          |   4 +-
 .../datetime_02/datetime_02.1.query.sqlpp          |   7 +-
 .../queries_sqlpp/objects/ObjectsQueries.xml       |  22 +--
 .../request-param-validation-400-BAD.01.regexjson  |   2 +-
 .../constructor/datetime_01/datetime_01.1.adm      |   2 +-
 .../constructor/datetime_02/datetime_02.1.adm      |   2 +-
 .../warnings-limit/warnings-limit.03.regexadm      |   2 +-
 .../warnings-limit/warnings-limit.06.regexadm      |   2 +-
 .../warnings-limit/warnings-limit.08.regexadm      |   2 +-
 .../constructor/datetime_01/datetime_01.3.ast      |   6 +-
 ...stsuite_external_dataset_azure_blob_storage.xml |   8 +-
 .../runtimets/testsuite_external_dataset_s3.xml    |   8 +-
 .../resources/runtimets/testsuite_it_sqlpp.xml     |   2 +-
 .../test/resources/runtimets/testsuite_sqlpp.xml   | 209 ++++++++++-----------
 .../asterix/common/api/RequestReference.java       |   2 +-
 .../asterix/common/config/StorageProperties.java   |   2 +-
 .../src/main/resources/asx_errormsg/en.properties  |  44 ++---
 .../lang/sqlpp/visitor/FreeVariableVisitor.java    |  95 ++++++----
 .../replication/messaging/ReplicateFileTask.java   |   2 +-
 .../asterix/replication/sync/FileSynchronizer.java |   2 +-
 .../AbstractDateTimeConstructorEvaluator.java      |   8 +
 .../asterix/runtime/utils/ClusterStateManager.java |   7 +-
 asterixdb/asterix-server/pom.xml                   |  89 ++++-----
 asterixdb/pom.xml                                  |   4 +-
 .../appended-resources/supplemental-models.xml     | 179 ++++++++----------
 ....com_google_gson_gson-parent-2.8.9_LICENSE.txt} |   0
 ..._googleapis_api-common-java_v2.1.2_LICENSE.txt} |   0
 ...ent.com_googleapis_gax-java_v2.8.1_LICENSE.txt} |   0
 ...pis_google-api-java-client_v1.33.0_LICENSE.txt} |   0
 ...is_google-auth-library-java_v1.3.0_LICENSE.txt} |   0
 ...is_google-http-java-client_v1.41.0_LICENSE.txt} |   0
 ...s_google-oauth-java-client_v1.32.1_LICENSE.txt} |   0
 ...nt.com_googleapis_java-core_v2.3.5_LICENSE.txt} |   0
 ...content.com_grpc_grpc-java_v1.43.2_LICENSE.txt} |   0
 ...rcontent.com_grpc_grpc-java_v1.43.2_NOTICE.txt} |   0
 ...m_protocolbuffers_protobuf_v3.19.2_LICENSE.txt} |   0
 hyracks-fullstack/hyracks/hyracks-http/pom.xml     |   5 +
 .../hyracks/http/server/AbstractServlet.java       |  33 ++--
 .../java/org/apache/hyracks/util/JSONUtil.java     |   5 +-
 55 files changed, 739 insertions(+), 448 deletions(-)

[asterixdb] 02/09: [ASTERIXDB-3008][COMP] Improve translation of inner joins in subplans

Posted by mb...@apache.org.
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 5588b7974f4b5d25025aa80ed44b0608fe08b312
Author: Dmitry Lychagin <dm...@couchbase.com>
AuthorDate: Wed Feb 2 17:22:22 2022 -0800

    [ASTERIXDB-3008][COMP] Improve translation of inner joins in subplans
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - Fix performance regression caused by ASTERIXDB-3006
    - Fix incorrect free variable computation by
      FreeVariableVisitor for join clauses
    
    Change-Id: I1f9d0f453202ec79673f2f66b9034fbc6047212b
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15127
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>
    Reviewed-by: Ali Alsuliman <al...@gmail.com>
---
 .../SqlppExpressionToPlanTranslator.java           |  22 ++--
 .../optimizerts/queries/ch2/ch2_q8_subquery.sqlpp  |  66 +++++++++++
 .../queries/joins/inner_right_corr.sqlpp           |  34 ++++++
 .../optimizerts/results/ch2/ch2_q8_subquery.plan   | 128 +++++++++++++++++++++
 .../results/joins/inner_right_corr.plan            |  53 +++++++++
 .../results/subquery/query-ASTERIXDB-3006.plan     |  54 ++++-----
 .../lang/sqlpp/visitor/FreeVariableVisitor.java    |  95 +++++++++------
 7 files changed, 377 insertions(+), 75 deletions(-)

diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
index 1d226dd..ea80ea6 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/SqlppExpressionToPlanTranslator.java
@@ -18,11 +18,9 @@
  */
 package org.apache.asterix.translator;
 
-import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Deque;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -125,6 +123,7 @@ import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnne
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
@@ -155,7 +154,6 @@ public class SqlppExpressionToPlanTranslator extends LangExpressionToPlanTransla
     public static final String REWRITE_IN_AS_OR_OPTION = "rewrite_in_as_or";
     private static final boolean REWRITE_IN_AS_OR_OPTION_DEFAULT = true;
 
-    private Deque<Mutable<ILogicalOperator>> uncorrelatedRightBranchStack = new ArrayDeque<>();
     private final Map<VarIdentifier, IAObject> externalVars;
     private final boolean translateInAsOr;
 
@@ -303,12 +301,10 @@ public class SqlppExpressionToPlanTranslator extends LangExpressionToPlanTransla
             throws CompilationException {
         Mutable<ILogicalOperator> inputSrc = arg;
         Pair<ILogicalOperator, LogicalVariable> topUnnest = null;
-        uncorrelatedRightBranchStack.push(inputSrc);
         for (FromTerm fromTerm : fromClause.getFromTerms()) {
             topUnnest = fromTerm.accept(this, inputSrc);
             inputSrc = new MutableObject<>(topUnnest.first);
         }
-        uncorrelatedRightBranchStack.pop();
         return topUnnest;
     }
 
@@ -345,8 +341,10 @@ public class SqlppExpressionToPlanTranslator extends LangExpressionToPlanTransla
     public Pair<ILogicalOperator, LogicalVariable> visit(JoinClause joinClause, Mutable<ILogicalOperator> leftInputRef)
             throws CompilationException {
         SourceLocation sourceLoc = joinClause.getSourceLocation();
-        if (joinClause.getJoinType() == JoinType.INNER && !context.inSubplan()) {
-            Mutable<ILogicalOperator> rightInputRef = uncorrelatedRightBranchStack.peek();
+        if (joinClause.getJoinType() == JoinType.INNER && !hasFreeVariables(joinClause.getRightExpression())) {
+            EmptyTupleSourceOperator ets = new EmptyTupleSourceOperator();
+            ets.setSourceLocation(joinClause.getSourceLocation());
+            Mutable<ILogicalOperator> rightInputRef = new MutableObject<>(ets);
             Pair<ILogicalOperator, LogicalVariable> rightBranch =
                     generateUnnestForBinaryCorrelateRightBranch(joinClause, rightInputRef, false, null);
             // A join operator with condition TRUE.
@@ -509,6 +507,16 @@ public class SqlppExpressionToPlanTranslator extends LangExpressionToPlanTransla
         }
     }
 
+    private boolean hasFreeVariables(Expression expr) throws CompilationException {
+        Set<VariableExpr> freeVars = SqlppRewriteUtil.getFreeVariable(expr);
+        for (VariableExpr varRef : freeVars) {
+            if (!SqlppVariableUtil.isExternalVariableReference(varRef)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private static IAlgebricksConstantValue translateLeftOuterMissingValue(Literal.Type type)
             throws CompilationException {
         switch (type) {
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/ch2/ch2_q8_subquery.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/ch2/ch2_q8_subquery.sqlpp
new file mode 100644
index 0000000..3b31cf7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/ch2/ch2_q8_subquery.sqlpp
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+
+/*
+ * Test plan for CH2 Q8
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+create dataset stock(id uuid not unknown) open type primary key `id` autogenerated;
+create dataset orders(id uuid not unknown) open type primary key `id` autogenerated;
+create dataset customer(id uuid not unknown) open type primary key `id` autogenerated;
+create dataset nation(id uuid not unknown) open type primary key `id` autogenerated;
+create dataset supplier(id uuid not unknown) open type primary key `id` autogenerated;
+create dataset item(id uuid not unknown) open type primary key `id` autogenerated;
+create dataset region(id uuid not unknown) open type primary key `id` autogenerated;
+
+SELECT
+  GET_YEAR(DATE(rn1coolis.o_entry_d)) AS l_year,
+  ROUND((SUM(CASE WHEN sun2.n_name = 'Germany' THEN rn1coolis.ol_amount ELSE 0 END) / SUM(rn1coolis.ol_amount)),2)
+  AS mkt_share
+FROM (
+  SELECT rn1cooli.o_entry_d, rn1cooli.ol_amount, s.s_w_id, s.s_i_id
+  FROM stock s
+  JOIN (
+    SELECT o.o_entry_d, ol.ol_i_id, ol.ol_amount, ol.ol_supply_w_id
+    FROM orders o, o.o_orderline ol, item i
+    JOIN (
+      SELECT c.c_id,c.c_w_id, c.c_d_id
+      FROM customer c
+      JOIN (
+        SELECT n1.n_nationkey
+        FROM nation n1, region r
+        WHERE n1.n_regionkey = r.r_regionkey AND r.r_name = 'Europe'
+      ) nr ON nr.n_nationkey = string_to_codepoint(c.c_state)[0]
+    ) cnr ON cnr.c_id = o.o_c_id
+          AND cnr.c_w_id = o.o_w_id AND cnr.c_d_id = o.o_d_id AND i.i_data LIKE '%b'
+          AND i.i_id = ol.ol_i_id AND ol.ol_i_id < 1000
+          AND o.o_entry_d BETWEEN '2017-01-01 00:00:00.000000' AND '2018-12-31 00:00:00.000000'
+  ) rn1cooli ON rn1cooli.ol_i_id = s.s_i_id AND rn1cooli.ol_supply_w_id = s.s_w_id
+) rn1coolis
+JOIN (
+  SELECT su.su_suppkey, n2.n_name
+  FROM supplier su, nation n2
+  WHERE su.su_nationkey = n2.n_nationkey
+) sun2 ON rn1coolis.s_w_id * rn1coolis.s_i_id MOD 10000 = sun2.su_suppkey
+GROUP BY get_year(date(rn1coolis.o_entry_d))
+ORDER BY l_year;
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/joins/inner_right_corr.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/joins/inner_right_corr.sqlpp
new file mode 100644
index 0000000..86821b1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/joins/inner_right_corr.sqlpp
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+/*
+ * Test plan when right branch of an inner join uses an outer variable.
+ * Currently this results in NL join
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use test;
+
+create dataset t1(id uuid not unknown) open type primary key id autogenerated;
+create dataset t2(id uuid not unknown) open type primary key id autogenerated;
+
+select a
+from t1
+let a = (select value count(*) from t2 join t1.x as z on t2.y = z.b );
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q8_subquery.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q8_subquery.plan
new file mode 100644
index 0000000..3c62aa7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q8_subquery.plan
@@ -0,0 +1,128 @@
+-- DISTRIBUTE_RESULT  |PARTITIONED|
+  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+    -- STREAM_PROJECT  |PARTITIONED|
+      -- ASSIGN  |PARTITIONED|
+        -- SORT_MERGE_EXCHANGE [$#1(ASC) ]  |PARTITIONED|
+          -- SORT_GROUP_BY[$$333]  |PARTITIONED|
+                  {
+                    -- AGGREGATE  |LOCAL|
+                      -- NESTED_TUPLE_SOURCE  |LOCAL|
+                  }
+            -- HASH_PARTITION_EXCHANGE [$$333]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$278]  |PARTITIONED|
+                      {
+                        -- AGGREGATE  |LOCAL|
+                          -- NESTED_TUPLE_SOURCE  |LOCAL|
+                      }
+                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                  -- STREAM_PROJECT  |PARTITIONED|
+                    -- ASSIGN  |PARTITIONED|
+                      -- STREAM_PROJECT  |PARTITIONED|
+                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                          -- HYBRID_HASH_JOIN [$$304][$$325]  |PARTITIONED|
+                            -- HASH_PARTITION_EXCHANGE [$$304]  |PARTITIONED|
+                              -- STREAM_PROJECT  |PARTITIONED|
+                                -- ASSIGN  |PARTITIONED|
+                                  -- STREAM_PROJECT  |PARTITIONED|
+                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                      -- HYBRID_HASH_JOIN [$$280, $$279][$$290, $$320]  |PARTITIONED|
+                                        -- HASH_PARTITION_EXCHANGE [$$280, $$279]  |PARTITIONED|
+                                          -- STREAM_PROJECT  |PARTITIONED|
+                                            -- ASSIGN  |PARTITIONED|
+                                              -- STREAM_PROJECT  |PARTITIONED|
+                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                  -- DATASOURCE_SCAN (test.stock)  |PARTITIONED|
+                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                        -- HASH_PARTITION_EXCHANGE [$$290, $$320]  |PARTITIONED|
+                                          -- STREAM_PROJECT  |PARTITIONED|
+                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                              -- HYBRID_HASH_JOIN [$$297, $$299, $$301][$$317, $$318, $$316]  |PARTITIONED|
+                                                -- HASH_PARTITION_EXCHANGE [$$297, $$299, $$301]  |PARTITIONED|
+                                                  -- STREAM_PROJECT  |PARTITIONED|
+                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                      -- HYBRID_HASH_JOIN [$$290][$$308]  |PARTITIONED|
+                                                        -- HASH_PARTITION_EXCHANGE [$$290]  |PARTITIONED|
+                                                          -- STREAM_SELECT  |PARTITIONED|
+                                                            -- STREAM_PROJECT  |PARTITIONED|
+                                                              -- ASSIGN  |PARTITIONED|
+                                                                -- STREAM_PROJECT  |PARTITIONED|
+                                                                  -- UNNEST  |PARTITIONED|
+                                                                    -- STREAM_SELECT  |PARTITIONED|
+                                                                      -- STREAM_PROJECT  |PARTITIONED|
+                                                                        -- ASSIGN  |PARTITIONED|
+                                                                          -- STREAM_PROJECT  |PARTITIONED|
+                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                              -- DATASOURCE_SCAN (test.orders)  |PARTITIONED|
+                                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                        -- HASH_PARTITION_EXCHANGE [$$308]  |PARTITIONED|
+                                                          -- STREAM_PROJECT  |PARTITIONED|
+                                                            -- STREAM_SELECT  |PARTITIONED|
+                                                              -- ASSIGN  |PARTITIONED|
+                                                                -- STREAM_PROJECT  |PARTITIONED|
+                                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                    -- DATASOURCE_SCAN (test.item)  |PARTITIONED|
+                                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                -- HASH_PARTITION_EXCHANGE [$$317, $$318, $$316]  |PARTITIONED|
+                                                  -- STREAM_PROJECT  |PARTITIONED|
+                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                      -- HYBRID_HASH_JOIN [$$295][$$315]  |PARTITIONED|
+                                                        -- HASH_PARTITION_EXCHANGE [$$295]  |PARTITIONED|
+                                                          -- STREAM_PROJECT  |PARTITIONED|
+                                                            -- ASSIGN  |PARTITIONED|
+                                                              -- STREAM_PROJECT  |PARTITIONED|
+                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                  -- DATASOURCE_SCAN (test.customer)  |PARTITIONED|
+                                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                        -- HASH_PARTITION_EXCHANGE [$$315]  |PARTITIONED|
+                                                          -- STREAM_PROJECT  |PARTITIONED|
+                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                              -- HYBRID_HASH_JOIN [$$292][$$293]  |PARTITIONED|
+                                                                -- HASH_PARTITION_EXCHANGE [$$292]  |PARTITIONED|
+                                                                  -- STREAM_PROJECT  |PARTITIONED|
+                                                                    -- ASSIGN  |PARTITIONED|
+                                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                        -- REPLICATE  |PARTITIONED|
+                                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                            -- STREAM_PROJECT  |PARTITIONED|
+                                                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                                -- DATASOURCE_SCAN (test.nation)  |PARTITIONED|
+                                                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                -- HASH_PARTITION_EXCHANGE [$$293]  |PARTITIONED|
+                                                                  -- STREAM_PROJECT  |PARTITIONED|
+                                                                    -- STREAM_SELECT  |PARTITIONED|
+                                                                      -- ASSIGN  |PARTITIONED|
+                                                                        -- STREAM_PROJECT  |PARTITIONED|
+                                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                            -- DATASOURCE_SCAN (test.region)  |PARTITIONED|
+                                                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                            -- HASH_PARTITION_EXCHANGE [$$325]  |PARTITIONED|
+                              -- STREAM_PROJECT  |PARTITIONED|
+                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                  -- HYBRID_HASH_JOIN [$$309][$$310]  |PARTITIONED|
+                                    -- HASH_PARTITION_EXCHANGE [$$309]  |PARTITIONED|
+                                      -- STREAM_PROJECT  |PARTITIONED|
+                                        -- ASSIGN  |PARTITIONED|
+                                          -- STREAM_PROJECT  |PARTITIONED|
+                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                              -- DATASOURCE_SCAN (test.supplier)  |PARTITIONED|
+                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                    -- HASH_PARTITION_EXCHANGE [$$310]  |PARTITIONED|
+                                      -- STREAM_PROJECT  |PARTITIONED|
+                                        -- ASSIGN  |PARTITIONED|
+                                          -- STREAM_PROJECT  |PARTITIONED|
+                                            -- ASSIGN  |PARTITIONED|
+                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                -- REPLICATE  |PARTITIONED|
+                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                    -- STREAM_PROJECT  |PARTITIONED|
+                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                        -- DATASOURCE_SCAN (test.nation)  |PARTITIONED|
+                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/inner_right_corr.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/inner_right_corr.plan
new file mode 100644
index 0000000..37c3434
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/inner_right_corr.plan
@@ -0,0 +1,53 @@
+-- DISTRIBUTE_RESULT  |PARTITIONED|
+  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+    -- STREAM_PROJECT  |PARTITIONED|
+      -- ASSIGN  |PARTITIONED|
+        -- STREAM_PROJECT  |PARTITIONED|
+          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+            -- PRE_CLUSTERED_GROUP_BY[$$71]  |PARTITIONED|
+                    {
+                      -- AGGREGATE  |LOCAL|
+                        -- AGGREGATE  |LOCAL|
+                          -- STREAM_SELECT  |LOCAL|
+                            -- NESTED_TUPLE_SOURCE  |LOCAL|
+                    }
+              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                -- STREAM_PROJECT  |PARTITIONED|
+                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                    -- HYBRID_HASH_JOIN [$$71][$$87]  |PARTITIONED|
+                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                        -- STREAM_PROJECT  |PARTITIONED|
+                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                            -- DATASOURCE_SCAN (test.t1)  |PARTITIONED|
+                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                      -- HASH_PARTITION_EXCHANGE [$$87]  |PARTITIONED|
+                        -- ASSIGN  |PARTITIONED|
+                          -- STREAM_PROJECT  |PARTITIONED|
+                            -- UNNEST  |PARTITIONED|
+                              -- STREAM_PROJECT  |PARTITIONED|
+                                -- SUBPLAN  |PARTITIONED|
+                                        {
+                                          -- AGGREGATE  |LOCAL|
+                                            -- STREAM_SELECT  |LOCAL|
+                                              -- ASSIGN  |LOCAL|
+                                                -- UNNEST  |LOCAL|
+                                                  -- NESTED_TUPLE_SOURCE  |LOCAL|
+                                        }
+                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                    -- NESTED_LOOP  |PARTITIONED|
+                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                        -- STREAM_PROJECT  |PARTITIONED|
+                                          -- ASSIGN  |PARTITIONED|
+                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                              -- DATASOURCE_SCAN (test.t1)  |PARTITIONED|
+                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                      -- BROADCAST_EXCHANGE  |PARTITIONED|
+                                        -- STREAM_PROJECT  |PARTITIONED|
+                                          -- ASSIGN  |PARTITIONED|
+                                            -- STREAM_PROJECT  |PARTITIONED|
+                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                -- DATASOURCE_SCAN (test.t2)  |PARTITIONED|
+                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-3006.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-3006.plan
index a5264a9..dfaa310 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-3006.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-3006.plan
@@ -1,49 +1,41 @@
 -- DISTRIBUTE_RESULT  |PARTITIONED|
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
     -- STREAM_PROJECT  |PARTITIONED|
-      -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
+      -- SORT_MERGE_EXCHANGE [$$55(ASC) ]  |PARTITIONED|
         -- STREAM_PROJECT  |PARTITIONED|
           -- STREAM_SELECT  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              -- SORT_GROUP_BY[$$78]  |PARTITIONED|
+              -- SORT_GROUP_BY[$$65]  |PARTITIONED|
                       {
                         -- AGGREGATE  |LOCAL|
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
                       }
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  -- PRE_CLUSTERED_GROUP_BY[$$48]  |PARTITIONED|
+                -- HASH_PARTITION_EXCHANGE [$$65]  |PARTITIONED|
+                  -- PRE_CLUSTERED_GROUP_BY[$$46]  |PARTITIONED|
                           {
                             -- AGGREGATE  |LOCAL|
                               -- STREAM_SELECT  |LOCAL|
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
                           }
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- STREAM_PROJECT  |PARTITIONED|
+                      -- STABLE_SORT [$$46(ASC)]  |PARTITIONED|
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          -- HYBRID_HASH_JOIN [$$48][$$61]  |PARTITIONED|
+                          -- STREAM_PROJECT  |PARTITIONED|
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              -- DATASOURCE_SCAN (test.ds1)  |PARTITIONED|
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            -- HASH_PARTITION_EXCHANGE [$$61]  |PARTITIONED|
-                              -- ASSIGN  |PARTITIONED|
-                                -- STREAM_PROJECT  |PARTITIONED|
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- HYBRID_HASH_JOIN [$$b][$$51]  |PARTITIONED|
-                                      -- HASH_PARTITION_EXCHANGE [$$b]  |PARTITIONED|
-                                        -- STREAM_PROJECT  |PARTITIONED|
-                                          -- UNNEST  |PARTITIONED|
-                                            -- STREAM_PROJECT  |PARTITIONED|
-                                              -- ASSIGN  |PARTITIONED|
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  -- DATASOURCE_SCAN (test.ds1)  |PARTITIONED|
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                      -- HASH_PARTITION_EXCHANGE [$$51]  |PARTITIONED|
-                                        -- STREAM_PROJECT  |PARTITIONED|
-                                          -- ASSIGN  |PARTITIONED|
-                                            -- STREAM_PROJECT  |PARTITIONED|
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                -- DATASOURCE_SCAN (test.ds2)  |PARTITIONED|
-                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                              -- HYBRID_HASH_JOIN [$$b][$$48]  |PARTITIONED|
+                                -- HASH_PARTITION_EXCHANGE [$$b]  |PARTITIONED|
+                                  -- STREAM_PROJECT  |PARTITIONED|
+                                    -- UNNEST  |PARTITIONED|
+                                      -- ASSIGN  |PARTITIONED|
+                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                          -- DATASOURCE_SCAN (test.ds1)  |PARTITIONED|
+                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                -- HASH_PARTITION_EXCHANGE [$$48]  |PARTITIONED|
+                                  -- STREAM_PROJECT  |PARTITIONED|
+                                    -- ASSIGN  |PARTITIONED|
+                                      -- STREAM_PROJECT  |PARTITIONED|
+                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                          -- DATASOURCE_SCAN (test.ds2)  |PARTITIONED|
+                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/FreeVariableVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/FreeVariableVisitor.java
index 77b9991..9115b1c 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/FreeVariableVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/FreeVariableVisitor.java
@@ -23,6 +23,7 @@ import java.util.HashSet;
 import java.util.List;
 
 import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.asterix.lang.common.base.AbstractClause;
 import org.apache.asterix.lang.common.base.Clause.ClauseType;
 import org.apache.asterix.lang.common.base.Expression;
@@ -50,6 +51,7 @@ import org.apache.asterix.lang.common.statement.Query;
 import org.apache.asterix.lang.common.struct.Identifier;
 import org.apache.asterix.lang.common.struct.QuantifiedPair;
 import org.apache.asterix.lang.sqlpp.clause.AbstractBinaryCorrelateClause;
+import org.apache.asterix.lang.sqlpp.clause.AbstractBinaryCorrelateWithConditionClause;
 import org.apache.asterix.lang.sqlpp.clause.FromClause;
 import org.apache.asterix.lang.sqlpp.clause.FromTerm;
 import org.apache.asterix.lang.sqlpp.clause.HavingClause;
@@ -107,41 +109,74 @@ public class FreeVariableVisitor extends AbstractSqlppQueryExpressionVisitor<Voi
         }
 
         // Visits join/unnest/nest clauses.
-        for (AbstractBinaryCorrelateClause correlateClause : fromTerm.getCorrelateClauses()) {
-            Collection<VariableExpr> correlateFreeVars = new HashSet<>();
-            correlateClause.accept(this, correlateFreeVars);
-            if (correlateClause.getClauseType() != ClauseType.JOIN_CLAUSE) {
-                // Correlation is allowed if the clause is not a join clause,
-                // therefore we remove left-side binding variables for these cases.
-                correlateFreeVars.removeAll(bindingVariables);
-
-                // Adds binding variables.
-                bindingVariables.add(correlateClause.getRightVariable());
-                if (correlateClause.hasPositionalVariable()) {
-                    bindingVariables.add(correlateClause.getPositionalVariable());
-                }
+        Collection<VariableExpr> clauseFreeVars = null;
+        Collection<VariableExpr> conditionFreeVars = null;
+        for (AbstractBinaryCorrelateClause clause : fromTerm.getCorrelateClauses()) {
+            if (clauseFreeVars == null) {
+                clauseFreeVars = new HashSet<>();
+            } else {
+                clauseFreeVars.clear();
             }
-            freeVars.addAll(correlateFreeVars);
+            clause.getRightExpression().accept(this, clauseFreeVars);
+
+            switch (clause.getClauseType()) {
+                case UNNEST_CLAUSE:
+                    // right branch CAN be use binding variables from prior clauses
+                    // -> these binding variables are not free vars for the whole FromTerm
+                    clauseFreeVars.removeAll(bindingVariables);
+                    break;
+                case JOIN_CLAUSE:
+                case NEST_CLAUSE:
+                    // right branch CANNOT use binding variables from prior clauses, but condition expression CAN.
+                    if (conditionFreeVars == null) {
+                        conditionFreeVars = new HashSet<>();
+                    } else {
+                        conditionFreeVars.clear();
+                    }
+                    AbstractBinaryCorrelateWithConditionClause clauseWithCondition =
+                            (AbstractBinaryCorrelateWithConditionClause) clause;
+                    clauseWithCondition.getConditionExpression().accept(this, conditionFreeVars);
+                    conditionFreeVars.removeAll(bindingVariables);
+                    conditionFreeVars.remove(clause.getRightVariable());
+                    if (clause.hasPositionalVariable()) {
+                        conditionFreeVars.remove(clause.getPositionalVariable());
+                    }
+                    clauseFreeVars.addAll(conditionFreeVars);
+                    break;
+                default:
+                    throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, clause.getSourceLocation(),
+                            clause.getClauseType().toString());
+            }
+
+            // Adds binding variables.
+            bindingVariables.add(clause.getRightVariable());
+            if (clause.hasPositionalVariable()) {
+                bindingVariables.add(clause.getPositionalVariable());
+            }
+            freeVars.addAll(clauseFreeVars);
         }
         return null;
     }
 
     @Override
-    public Void visit(JoinClause joinClause, Collection<VariableExpr> freeVars) throws CompilationException {
-        visitJoinAndNest(joinClause, joinClause.getConditionExpression(), freeVars);
-        return null;
+    public Void visit(JoinClause joinClause, Collection<VariableExpr> arg) throws CompilationException {
+        // not supposed to be invoked
+        throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, joinClause.getSourceLocation(),
+                joinClause.getClauseType().toString());
     }
 
     @Override
-    public Void visit(NestClause nestClause, Collection<VariableExpr> freeVars) throws CompilationException {
-        visitJoinAndNest(nestClause, nestClause.getConditionExpression(), freeVars);
-        return null;
+    public Void visit(NestClause nestClause, Collection<VariableExpr> arg) throws CompilationException {
+        // not supposed to be invoked
+        throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, nestClause.getSourceLocation(),
+                nestClause.getClauseType().toString());
     }
 
     @Override
-    public Void visit(UnnestClause unnestClause, Collection<VariableExpr> freeVars) throws CompilationException {
-        unnestClause.getRightExpression().accept(this, freeVars);
-        return null;
+    public Void visit(UnnestClause unnestClause, Collection<VariableExpr> arg) throws CompilationException {
+        // not supposed to be invoked
+        throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, unnestClause.getSourceLocation(),
+                unnestClause.getClauseType().toString());
     }
 
     @Override
@@ -491,20 +526,6 @@ public class FreeVariableVisitor extends AbstractSqlppQueryExpressionVisitor<Voi
         }
     }
 
-    private void visitJoinAndNest(AbstractBinaryCorrelateClause clause, Expression condition,
-            Collection<VariableExpr> freeVars) throws CompilationException {
-        clause.getRightExpression().accept(this, freeVars);
-        Collection<VariableExpr> conditionFreeVars = new HashSet<>();
-        condition.accept(this, freeVars);
-
-        // The condition expression can free binding variables defined in the join clause.
-        conditionFreeVars.remove(clause.getRightVariable());
-        if (clause.hasPositionalVariable()) {
-            conditionFreeVars.remove(clause.getPositionalVariable());
-        }
-        freeVars.addAll(conditionFreeVars);
-    }
-
     private void visit(List<Expression> exprs, Collection<VariableExpr> arg) throws CompilationException {
         for (Expression expr : exprs) {
             expr.accept(this, arg);

[asterixdb] 06/09: [NO ISSUE][CLUS] Avoid eager refresh cluster state

Posted by mb...@apache.org.
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 f7d22da9158558c71687f25072e9d74a72073a91
Author: Murtadha Hubail <mu...@couchbase.com>
AuthorDate: Sun Feb 6 19:43:56 2022 +0300

    [NO ISSUE][CLUS] Avoid eager refresh cluster state
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    
    - When clearing rebalance required cluster state, let the rebalance
      operation update the cluster state to avoid changing the cluster
      state during the rebalance.
    - Make file replication logs debug level.
    
    Change-Id: Ia1f3d84fe8ad82f34d4ad039efd353f7b534d4d6
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15163
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Murtadha Hubail <mh...@apache.org>
    Reviewed-by: Ali Alsuliman <al...@gmail.com>
---
 .../apache/asterix/replication/messaging/ReplicateFileTask.java    | 2 +-
 .../java/org/apache/asterix/replication/sync/FileSynchronizer.java | 2 +-
 .../java/org/apache/asterix/runtime/utils/ClusterStateManager.java | 7 ++++++-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java
index bf1613c..5bec257 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java
@@ -95,7 +95,7 @@ public class ReplicateFileTask implements IReplicaTask {
             }
             //delete mask
             Files.delete(maskPath);
-            LOGGER.info("received file {} from master", localPath);
+            LOGGER.debug("received file {} from master", localPath);
             ReplicationProtocol.sendAck(worker.getChannel(), worker.getReusableBuffer());
         } catch (IOException e) {
             throw new ReplicationException(e);
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java
index 813b293..968f883 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java
@@ -58,7 +58,7 @@ public class FileSynchronizer {
             String masterNode = appCtx.getReplicaManager().isPartitionOwner(replica.getIdentifier().getPartition())
                     ? appCtx.getServiceContext().getNodeId() : null;
             ReplicateFileTask task = new ReplicateFileTask(file, filePath.getFile().length(), metadata, masterNode);
-            LOGGER.info("attempting to replicate {} to replica {}", task, replica);
+            LOGGER.debug("attempting to replicate {} to replica {}", task, replica);
             ReplicationProtocol.sendTo(replica, task);
             // send the file itself
             try (RandomAccessFile fromFile = new RandomAccessFile(filePath.getFile(), "r");
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
index 6de1dda..052f568 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/ClusterStateManager.java
@@ -470,7 +470,12 @@ public class ClusterStateManager implements IClusterStateManager {
     @Override
     public synchronized void setRebalanceRequired(boolean rebalanceRequired) throws HyracksDataException {
         this.rebalanceRequired = rebalanceRequired;
-        refreshState();
+        // if the cluster requires a rebalance, we will refresh the cluster state to ensure the state is updated
+        // to REBALANCE_REQUIRED. Otherwise, we will let the rebalance operation update the cluster state to avoid
+        // changing the cluster state during the rebalance
+        if (rebalanceRequired) {
+            refreshState();
+        }
     }
 
     @Override

[asterixdb] 01/09: [NO ISSUE][STO] Change default disk force bytes to 1MB

Posted by mb...@apache.org.
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 e4fde26f5aa20e02da931a7c07b6ef4a07299ec8
Author: Murtadha Hubail <mu...@couchbase.com>
AuthorDate: Thu Feb 3 02:14:30 2022 +0300

    [NO ISSUE][STO] Change default disk force bytes to 1MB
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Change-Id: Ibdf5b4b0803df05e435db779a73a04ce99af9b20
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15126
    Reviewed-by: Ali Alsuliman <al...@gmail.com>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
---
 .../main/java/org/apache/asterix/common/config/StorageProperties.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
index 12c9c68..5b10777 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
@@ -54,7 +54,7 @@ public class StorageProperties extends AbstractProperties {
         STORAGE_FILTERED_MEMORYCOMPONENT_MAX_SIZE(LONG_BYTE_UNIT, 0L),
         STORAGE_LSM_BLOOMFILTER_FALSEPOSITIVERATE(DOUBLE, 0.01d),
         STORAGE_COMPRESSION_BLOCK(STRING, "snappy"),
-        STORAGE_DISK_FORCE_BYTES(LONG_BYTE_UNIT, StorageUtil.getLongSizeInBytes(16, MEGABYTE)),
+        STORAGE_DISK_FORCE_BYTES(LONG_BYTE_UNIT, StorageUtil.getLongSizeInBytes(1, MEGABYTE)),
         STORAGE_IO_SCHEDULER(STRING, "greedy"),
         STORAGE_WRITE_RATE_LIMIT(LONG_BYTE_UNIT, 0l),
         STORAGE_MAX_CONCURRENT_FLUSHES_PER_PARTITION(NONNEGATIVE_INTEGER, 2),

[asterixdb] 05/09: [NO ISSUE][MISC] HTTP error handling, exception message cleanup

Posted by mb...@apache.org.
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 81c526671dfca70ee1ebae9c64677e117a212362
Author: Michael Blow <mb...@apache.org>
AuthorDate: Thu Jan 27 10:23:23 2022 -0500

    [NO ISSUE][MISC] HTTP error handling, exception message cleanup
    
    Change-Id: If8fc109aee55571aff4a87029cad2a7a0c516d0c
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15023
    Reviewed-by: Hussain Towaileb <hu...@gmail.com>
    Tested-by: Michael Blow <mb...@apache.org>
---
 .../asterix/translator/util/ValidateUtil.java      |  12 +-
 .../asterix/api/http/server/ClusterApiServlet.java |   2 +-
 .../api/http/server/DiagnosticsApiServlet.java     |   4 +-
 .../asterix/api/http/server/NCUdfApiServlet.java   |  14 +-
 .../asterix/app/translator/QueryTranslator.java    |  10 +-
 .../asterix/test/common/ResultExtractor.java       |   2 +-
 .../src/test/resources/metadata/testsuite.xml      |  20 +-
 .../queries_sqlpp/objects/ObjectsQueries.xml       |  22 +--
 .../request-param-validation-400-BAD.01.regexjson  |   2 +-
 .../warnings-limit/warnings-limit.03.regexadm      |   2 +-
 .../warnings-limit/warnings-limit.06.regexadm      |   2 +-
 .../warnings-limit/warnings-limit.08.regexadm      |   2 +-
 ...stsuite_external_dataset_azure_blob_storage.xml |   8 +-
 .../runtimets/testsuite_external_dataset_s3.xml    |   8 +-
 .../resources/runtimets/testsuite_it_sqlpp.xml     |   2 +-
 .../test/resources/runtimets/testsuite_sqlpp.xml   | 202 ++++++++++-----------
 .../src/main/resources/asx_errormsg/en.properties  |  44 ++---
 hyracks-fullstack/hyracks/hyracks-http/pom.xml     |   5 +
 .../hyracks/http/server/AbstractServlet.java       |  33 ++--
 19 files changed, 207 insertions(+), 189 deletions(-)

diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
index 0d6a452..a2b26e7 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ValidateUtil.java
@@ -236,7 +236,7 @@ public class ValidateUtil {
                         break;
                     default:
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                                "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                                "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                         + " cannot be indexed using the BTree index.");
                 }
                 break;
@@ -251,14 +251,14 @@ public class ValidateUtil {
                         break;
                     default:
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                                "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                                "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                         + " cannot be indexed using the RTree index.");
                 }
                 break;
             case LENGTH_PARTITIONED_NGRAM_INVIX:
                 if (fieldType.getTypeTag() != ATypeTag.STRING) {
                     throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                            "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                            "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                     + " cannot be indexed using the Length Partitioned N-Gram index.");
                 }
                 break;
@@ -270,14 +270,14 @@ public class ValidateUtil {
                         break;
                     default:
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                                "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                                "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                         + " cannot be indexed using the Length Partitioned Keyword index.");
                 }
                 break;
             case SINGLE_PARTITION_NGRAM_INVIX:
                 if (fieldType.getTypeTag() != ATypeTag.STRING) {
                     throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                            "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                            "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                     + " cannot be indexed using the N-Gram index.");
                 }
                 break;
@@ -289,7 +289,7 @@ public class ValidateUtil {
                         break;
                     default:
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
-                                "The field \"" + displayFieldName + "\" which is of type " + fieldType.getTypeTag()
+                                "The field '" + displayFieldName + "' which is of type " + fieldType.getTypeTag()
                                         + " cannot be indexed using the Keyword index.");
                 }
                 break;
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
index bdc1bd7..eaeb082 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ClusterApiServlet.java
@@ -83,7 +83,7 @@ public class ClusterApiServlet extends AbstractServlet {
             }
             JSONUtil.writeNode(responseWriter, json);
         } catch (IllegalArgumentException e) { // NOSONAR - exception not logged or rethrown
-            response.setStatus(HttpResponseStatus.NOT_FOUND);
+            sendError(response, HttpResponseStatus.NOT_FOUND);
         } catch (Exception e) {
             LOGGER.log(Level.INFO, "exception thrown for " + request, e);
             response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
index 9876eed..5e4b376 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/DiagnosticsApiServlet.java
@@ -79,10 +79,10 @@ public class DiagnosticsApiServlet extends NodeControllerDetailsApiServlet {
         } catch (RejectedExecutionException e) {
             // we must be shutting down, return 503
             LOGGER.info("RejectedExecutionException while servicing request; returning 503", e);
-            sendError(response, HttpResponseStatus.SERVICE_UNAVAILABLE, null);
+            sendError(response, HttpResponseStatus.SERVICE_UNAVAILABLE);
         } catch (Exception e) {
             LOGGER.warn("exception while servicing request; returning 500", e);
-            sendError(response, HttpResponseStatus.INTERNAL_SERVER_ERROR, e.toString());
+            sendError(response, HttpResponseStatus.INTERNAL_SERVER_ERROR);
         }
         responseWriter.flush();
     }
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
index 9efb6f8..8cf70b2 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
@@ -295,7 +295,8 @@ public class NCUdfApiServlet extends AbstractNCUdfServlet {
         responseWriter.flush();
     }
 
-    protected boolean isRequestPermittedForWrite(IServletRequest request, IServletResponse response) {
+    protected boolean isRequestPermittedForWrite(IServletRequest request, IServletResponse response)
+            throws IOException {
         if (!isRequestOnLoopback(request)) {
             rejectForbidden(response);
             return false;
@@ -313,20 +314,21 @@ public class NCUdfApiServlet extends AbstractNCUdfServlet {
         }
     }
 
-    protected static void rejectForbidden(IServletResponse response) {
-        response.setStatus(HttpResponseStatus.FORBIDDEN);
-        response.writer().write("{ \"error\": \"Forbidden\" }");
+    protected void rejectForbidden(IServletResponse response) throws IOException {
+        // TODO: why this JSON format, do we use this anywhere else?
+        sendError(response, HttpUtil.ContentType.APPLICATION_JSON, HttpResponseStatus.FORBIDDEN,
+                "{ \"error\": \"Forbidden\" }");
     }
 
     @Override
-    protected void post(IServletRequest request, IServletResponse response) {
+    protected void post(IServletRequest request, IServletResponse response) throws IOException {
         if (isRequestPermittedForWrite(request, response)) {
             handleModification(request, response, LibraryOperation.UPSERT);
         }
     }
 
     @Override
-    protected void delete(IServletRequest request, IServletResponse response) {
+    protected void delete(IServletRequest request, IServletResponse response) throws IOException {
         if (isRequestPermittedForWrite(request, response)) {
             handleModification(request, response, LibraryOperation.DELETE);
         }
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index eb6c779..f7da31d 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -1248,8 +1248,8 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen
                                 // allow overriding the type of the closed-field only if CAST modifier is used
                                 if (!stmtCreateIndex.hasCastDefaultNull()) {
                                     throw new CompilationException(ErrorCode.COMPILATION_ERROR,
-                                            indexedElement.getSourceLocation(), "Typed index on \"" + projectPath
-                                                    + "\" field could be created only for open datatype");
+                                            indexedElement.getSourceLocation(), "Typed index on '" + projectPath
+                                                    + "' field could be created only for open datatype");
                                 }
                             }
                         }
@@ -1631,9 +1631,9 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen
                             && !existingIndexKeyFieldTypes.equals(indexKeyFieldTypes)) {
                         throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
                                 "Cannot create index " + index.getIndexName() + " , enforced index "
-                                        + existingIndex.getIndexName() + " on field \""
-                                        + StringUtils.join(indexKeyFieldNames, ',')
-                                        + "\" is already defined with type \"" + existingIndexKeyFieldTypes + "\"");
+                                        + existingIndex.getIndexName() + " on field '"
+                                        + StringUtils.join(indexKeyFieldNames, ',') + "' is already defined with type '"
+                                        + existingIndexKeyFieldTypes + "'");
                     }
                 }
             }
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
index f83ddb2..091fc20 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
@@ -227,7 +227,7 @@ public class ResultExtractor {
             final String fieldName = fieldNameIter.next();
             final ResultField fieldKind = ResultField.ofFieldName(fieldName.split("-")[0]);
             if (fieldKind == null) {
-                throw new AsterixException("Unanticipated field \"" + fieldName + "\"");
+                throw new AsterixException("Unanticipated field '" + fieldName + "'");
             }
             if (!resultFields.contains(fieldKind)) {
                 continue;
diff --git a/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml b/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml
index dc6ae3d..e642922 100644
--- a/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml
+++ b/asterixdb/asterix-app/src/test/resources/metadata/testsuite.xml
@@ -498,7 +498,7 @@
     <test-case FilePath="exception">
       <compilation-unit name="issue_255_create_dataset_error_1">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1014: Field "name" is not found (in line 34, at column 1)</expected-error>
+        <expected-error>ASX1014: Field 'name' is not found (in line 34, at column 1)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
@@ -511,56 +511,56 @@
     <test-case FilePath="exception">
       <compilation-unit name="issue_255_create_feed_error">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error>
+        <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error>
       </compilation-unit>
     </test-case> -->
     <!-- This case should be fixed to return a proper message rather than NPE -->
     <test-case FilePath="exception">
       <compilation-unit name="issue_266_create_dataset_error_1">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1014: Field "point" is not found (in line 34, at column 1)</expected-error>
+        <expected-error>ASX1014: Field 'point' is not found (in line 34, at column 1)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_266_create_dataset_error_2">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1021: The primary key field "id" cannot be nullable (in line 34, at column 1)</expected-error>
+        <expected-error>ASX1021: The primary key field 'id' cannot be nullable (in line 34, at column 1)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_1">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the BTree index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the BTree index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_2">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[age]" which is of type integer cannot be indexed using the RTree index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[age]' which is of type integer cannot be indexed using the RTree index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_3">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_4">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned Keyword index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_5">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="exception">
       <compilation-unit name="issue_384_create_index_error_6">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1079: Compilation error: The field "[loc]" which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error>
+        <expected-error>ASX1079: Compilation error: The field '[loc]' which is of type point cannot be indexed using the Length Partitioned N-Gram index. (in line 37, at column 33)</expected-error>
       </compilation-unit>
     </test-case>
   </test-group>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
index 2675c40..bf48a7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/objects/ObjectsQueries.xml
@@ -111,7 +111,7 @@
     <compilation-unit name="no_fieldname_constr">
       <output-dir compare="Text">no_fieldname_constr</output-dir>
       <expected-warn>Encountered a cross product join (in line 27, at column 22)</expected-warn>
-      <expected-warn>Duplicate field name "a" (in line 31, at column 24)</expected-warn>
+      <expected-warn>Duplicate field name 'a' (in line 31, at column 24)</expected-warn>
     </compilation-unit>
   </test-case>
   <test-case FilePath="objects">
@@ -199,7 +199,7 @@
   <test-case FilePath="objects" check-warnings="true">
     <compilation-unit name="closed-closed-fieldname-conflict_issue173">
       <output-dir compare="Text">closed-closed-fieldname-conflict_issue173</output-dir>
-      <expected-warn>Duplicate field name "name" (in line 30, at column 16)</expected-warn>
+      <expected-warn>Duplicate field name 'name' (in line 30, at column 16)</expected-warn>
     </compilation-unit>
   </test-case>
   <test-case FilePath="objects" check-warnings="true">
@@ -227,15 +227,15 @@
   <test-case FilePath="objects" check-warnings="true">
     <compilation-unit name="object_duplicate_fields">
       <output-dir compare="Text">object_duplicate_fields</output-dir>
-      <expected-warn>Duplicate field name "name" (in line 27, at column 1)</expected-warn>
-      <expected-warn>Duplicate field name "Name" (in line 29, at column 1)</expected-warn>
-      <expected-warn>Duplicate field name "name" (in line 31, at column 1)</expected-warn>
-      <expected-warn>Duplicate field name "name" (in line 22, at column 30)</expected-warn>
-      <expected-warn>Duplicate field name "id" (in line 22, at column 56)</expected-warn>
-      <expected-warn>Duplicate field name "f1" (in line 22, at column 70)</expected-warn>
-      <expected-warn>Duplicate field name "id" (in line 22, at column 56)</expected-warn>
-      <expected-warn>Duplicate field name "f1" (in line 22, at column 83)</expected-warn>
-      <expected-warn>Duplicate field name "fname1" (in line 25, at column 45)</expected-warn>
+      <expected-warn>Duplicate field name 'name' (in line 27, at column 1)</expected-warn>
+      <expected-warn>Duplicate field name 'Name' (in line 29, at column 1)</expected-warn>
+      <expected-warn>Duplicate field name 'name' (in line 31, at column 1)</expected-warn>
+      <expected-warn>Duplicate field name 'name' (in line 22, at column 30)</expected-warn>
+      <expected-warn>Duplicate field name 'id' (in line 22, at column 56)</expected-warn>
+      <expected-warn>Duplicate field name 'f1' (in line 22, at column 70)</expected-warn>
+      <expected-warn>Duplicate field name 'id' (in line 22, at column 56)</expected-warn>
+      <expected-warn>Duplicate field name 'f1' (in line 22, at column 83)</expected-warn>
+      <expected-warn>Duplicate field name 'fname1' (in line 25, at column 45)</expected-warn>
     </compilation-unit>
   </test-case>
 </test-group>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
index f444fa1..ad95b7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
@@ -1,6 +1,6 @@
 {
 	"errors": [{ 
-		"code": 1,		"msg": "ASX0047: Invalid value for parameter \"format\": foo"	} 
+		"code": 1,		"msg": "ASX0047: Invalid value for parameter 'format': foo"	}
 	],
 	"status": "fatal",
 	"metrics": {
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
index d67e7a1..519019a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
@@ -23,7 +23,7 @@
 \s*\Q"warnings": [{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
-\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s*
+\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX0002: Type mismatch: function isbitset expects its 2nd input parameter to be of type bigint or array, but the actual input type is string\E[^}]+\Q}\E\s*
 \s*\Q],\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
index 64a3bde..5eeb3df 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
@@ -6,7 +6,7 @@
 \s*\Q"results": [ {\E.*warnings\Q": [{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
-\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s*
+\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s*
 \s*\Q],\E
 \s*\Q"status": "success",\E
 \s*\Q"metrics": {\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
index d67e7a1..519019a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
@@ -23,7 +23,7 @@
 \s*\Q"warnings": [{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX1107: Unexpected hint: hint. None expected at this location\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
-\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name \"a\"\E[^}]+\Q}\E\s*
+\s*\Q"code": 1,\E\s*\Q"msg": "ASX1006: Duplicate field name 'a'\E[^}]+\Q}\E\s*
 \s*\Q,{\E\s*
 \s*\Q"code": 1,\E\s*\Q"msg": "ASX0002: Type mismatch: function isbitset expects its 2nd input parameter to be of type bigint or array, but the actual input type is string\E[^}]+\Q}\E\s*
 \s*\Q],\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
index 2e1a6bf..ae3b2aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
@@ -218,28 +218,28 @@
       <compilation-unit name="common/include-exclude/bad-name-1">
         <placeholder name="adapter" value="AZUREBLOB" />
         <output-dir compare="Text">common/include-exclude/bad-name-1</output-dir>
-        <expected-error>Invalid format for property "exclude1"</expected-error>
+        <expected-error>Invalid format for property 'exclude1'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/bad-name-2">
         <placeholder name="adapter" value="AZUREBLOB" />
         <output-dir compare="Text">common/include-exclude/bad-name-2</output-dir>
-        <expected-error>Invalid format for property "exclude#"</expected-error>
+        <expected-error>Invalid format for property 'exclude#'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/bad-name-3">
         <placeholder name="adapter" value="AZUREBLOB" />
         <output-dir compare="Text">common/include-exclude/bad-name-3</output-dir>
-        <expected-error>Invalid format for property "exclude#hello"</expected-error>
+        <expected-error>Invalid format for property 'exclude#hello'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/both">
         <placeholder name="adapter" value="AZUREBLOB" />
         <output-dir compare="Text">common/include-exclude/both</output-dir>
-        <expected-error>The parameters "include" and "exclude" cannot be provided at the same time</expected-error>
+        <expected-error>The parameters 'include' and 'exclude' cannot be provided at the same time</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
diff --git 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
index a8786e2..12a8ae2 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
@@ -305,28 +305,28 @@
       <compilation-unit name="common/include-exclude/bad-name-1">
         <placeholder name="adapter" value="S3" />
         <output-dir compare="Text">common/include-exclude/bad-name-1</output-dir>
-        <expected-error>Invalid format for property "exclude1"</expected-error>
+        <expected-error>Invalid format for property 'exclude1'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/bad-name-2">
         <placeholder name="adapter" value="S3" />
         <output-dir compare="Text">common/include-exclude/bad-name-2</output-dir>
-        <expected-error>Invalid format for property "exclude#"</expected-error>
+        <expected-error>Invalid format for property 'exclude#'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/bad-name-3">
         <placeholder name="adapter" value="S3" />
         <output-dir compare="Text">common/include-exclude/bad-name-3</output-dir>
-        <expected-error>Invalid format for property "exclude#hello"</expected-error>
+        <expected-error>Invalid format for property 'exclude#hello'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
       <compilation-unit name="common/include-exclude/both">
         <placeholder name="adapter" value="S3" />
         <output-dir compare="Text">common/include-exclude/both</output-dir>
-        <expected-error>The parameters "include" and "exclude" cannot be provided at the same time</expected-error>
+        <expected-error>The parameters 'include' and 'exclude' cannot be provided at the same time</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="external-dataset">
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
index 7667bb4..b922fe4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_it_sqlpp.xml
@@ -72,7 +72,7 @@
         <expected-error>ASX3042: Unsupported function language badType</expected-error>
         <expected-error>ASX1117: Cannot find library with name testlib</expected-error>
         <expected-error>ASX0049: Parameter(s) type must be specified</expected-error>
-        <expected-error>ASX0047: Invalid value for parameter \"data\": Attribute</expected-error>
+        <expected-error>ASX0047: Invalid value for parameter 'data': Attribute</expected-error>
         <expected-error>ASX0049: Parameter(s) data must be specified</expected-error>
       </compilation-unit>
     </test-case>
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 0bfbcf2..0b98369 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -62,31 +62,31 @@
     <test-case FilePath="api">
       <compilation-unit name="request-param-validation">
         <output-dir compare="Text">request-param-validation</output-dir>
-        <expected-error>Invalid value for parameter "format": foo</expected-error>
-        <expected-error>Invalid value for parameter "pretty": bar</expected-error>
-        <expected-error>Invalid value for parameter "plan-format": blah</expected-error>
-        <expected-error>Invalid value for parameter "max-result-reads": foo</expected-error>
-        <expected-error>Invalid value for parameter "max-result-reads": 9999999999999999999999999999999999999999</expected-error>
-        <expected-error>Invalid value for parameter "max-warnings": baz</expected-error>
-        <expected-error>Invalid value for parameter "max-warnings": 1.5</expected-error>
-        <expected-error>Invalid value for parameter "mode": asyn</expected-error>
-        <expected-error>Invalid value for parameter "timeout": 12</expected-error>
-        <expected-error>Invalid value for parameter "args": 12</expected-error>
+        <expected-error>Invalid value for parameter 'format': foo</expected-error>
+        <expected-error>Invalid value for parameter 'pretty': bar</expected-error>
+        <expected-error>Invalid value for parameter 'plan-format': blah</expected-error>
+        <expected-error>Invalid value for parameter 'max-result-reads': foo</expected-error>
+        <expected-error>Invalid value for parameter 'max-result-reads': 9999999999999999999999999999999999999999</expected-error>
+        <expected-error>Invalid value for parameter 'max-warnings': baz</expected-error>
+        <expected-error>Invalid value for parameter 'max-warnings': 1.5</expected-error>
+        <expected-error>Invalid value for parameter 'mode': asyn</expected-error>
+        <expected-error>Invalid value for parameter 'timeout': 12</expected-error>
+        <expected-error>Invalid value for parameter 'args': 12</expected-error>
         <expected-error>Unable to process JSON content in request</expected-error>
         <expected-error>Unable to process JSON content in request</expected-error>
-        <expected-error>Invalid value for parameter "format": foo</expected-error>
-        <expected-error>Invalid value for parameter "pretty": bar</expected-error>
-        <expected-error>Invalid value for parameter "plan-format": blah</expected-error>
-        <expected-error>Invalid value for parameter "max-result-reads": foo</expected-error>
-        <expected-error>Invalid value for parameter "max-warnings": baz</expected-error>
-        <expected-error>Invalid value for parameter "mode": asyn</expected-error>
-        <expected-error>Invalid value for parameter "args": 12</expected-error>
+        <expected-error>Invalid value for parameter 'format': foo</expected-error>
+        <expected-error>Invalid value for parameter 'pretty': bar</expected-error>
+        <expected-error>Invalid value for parameter 'plan-format': blah</expected-error>
+        <expected-error>Invalid value for parameter 'max-result-reads': foo</expected-error>
+        <expected-error>Invalid value for parameter 'max-warnings': baz</expected-error>
+        <expected-error>Invalid value for parameter 'mode': asyn</expected-error>
+        <expected-error>Invalid value for parameter 'args': 12</expected-error>
         <expected-error>Unable to process JSON content in request</expected-error>
         <expected-error>Unable to process JSON content in request</expected-error>
-        <expected-error>Invalid value for parameter "profile": true</expected-error>
-        <expected-error>Invalid value for parameter "profile": true</expected-error>
-        <expected-error>Invalid value for parameter "profile": foo</expected-error>
-        <expected-error>Invalid value for parameter "profile": foo</expected-error>
+        <expected-error>Invalid value for parameter 'profile': true</expected-error>
+        <expected-error>Invalid value for parameter 'profile': true</expected-error>
+        <expected-error>Invalid value for parameter 'profile': foo</expected-error>
+        <expected-error>Invalid value for parameter 'profile': foo</expected-error>
         <source-location>false</source-location>
       </compilation-unit>
     </test-case>
@@ -232,21 +232,21 @@
     <test-case FilePath="flwor" check-warnings="true">
       <compilation-unit name="query-ASTERIXDB-2446">
         <output-dir compare="Text">query-ASTERIXDB-2446</output-dir>
-        <expected-error>ASX0013: Duplicate field name "a"</expected-error>
-        <expected-warn>Duplicate field name "c" (in line 28, at column 84)</expected-warn>
-        <expected-warn>Duplicate field name "e" (in line 28, at column 116)</expected-warn>
+        <expected-error>ASX0013: Duplicate field name 'a'</expected-error>
+        <expected-warn>Duplicate field name 'c' (in line 28, at column 84)</expected-warn>
+        <expected-warn>Duplicate field name 'e' (in line 28, at column 116)</expected-warn>
       </compilation-unit>
     </test-case>
     <test-case FilePath="flwor">
       <compilation-unit name="query-ASTERIXDB-2446-2">
         <output-dir compare="Text">query-ASTERIXDB-883</output-dir>
-        <expected-error>ASX0013: Duplicate field name "a" (in line 27, at column 20)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "b" (in line 27, at column 20)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "c" (in line 27, at column 11)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "d" (in line 27, at column 11)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "e" (in line 27, at column 14)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "f" (in line 27, at column 11)</expected-error>
-        <expected-error>ASX0013: Duplicate field name "g" (in line 27, at column 11)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'a' (in line 27, at column 20)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'b' (in line 27, at column 20)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'c' (in line 27, at column 11)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'd' (in line 27, at column 11)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'e' (in line 27, at column 14)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'f' (in line 27, at column 11)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'g' (in line 27, at column 11)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="flwor">
@@ -4158,7 +4158,7 @@
       <compilation-unit name="bad-type-ddl">
         <output-dir compare="Text">none</output-dir>
         <expected-error>ASX1079: Compilation error: Reserved type name $x</expected-error>
-        <expected-error>ASX0013: Duplicate field name "c" (in line 29, at column 19)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'c' (in line 29, at column 19)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
@@ -4172,13 +4172,13 @@
         <expected-error>ASX1082: Cannot find datatype with name test.$d$t$i$Cust1</expected-error>
         <expected-error>ASX1082: Cannot find datatype with name test.$d$t$i$Cust2</expected-error>
         <expected-error>ASX1082: Cannot find datatype with name my_unknown_type</expected-error>
-        <expected-error>ASX0013: Duplicate field name "c_name" (in line 25, at column 22)</expected-error>
+        <expected-error>ASX0013: Duplicate field name 'c_name' (in line 25, at column 22)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="drop-primary-index">
         <output-dir compare="Text">drop-primary-index</output-dir>
-        <expected-error>Cannot drop index "ds". Drop dataset "ds" to remove this index</expected-error>
+        <expected-error>Cannot drop index 'ds'. Drop dataset 'ds' to remove this index</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl" check-warnings="true">
@@ -4197,89 +4197,89 @@
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-dataverse-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
         <expected-error>ASX1079: Compilation error: Invalid operation - Cannot create dataverse: asterix</expected-error>
         <expected-error>ASX1079: Compilation error: Invalid operation - Cannot create dataverse: algebricks</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "" (in line 24, at column 16)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 27, at column 16)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: '' (in line 24, at column 16)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 27, at column 16)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-dataset-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 16)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 31, at column 14)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 16)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 31, at column 14)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-feed-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 34, at column 13)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 42, at column 11)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 34, at column 13)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 42, at column 11)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-feed-policy-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 1)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 32, at column 23)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 1)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 32, at column 23)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-index-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 19)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 12)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 19)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 12)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-nodegroup-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-type-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 13)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 11)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 13)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 11)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-udf-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: ""</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid"</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 17)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 33, at column 15)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ''</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid'</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 17)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 33, at column 15)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
       <compilation-unit name="invalid-view-name">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>ASX1115: Invalid name for a database object: "" (in line 29, at column 1)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " a" (in line 29, at column 1)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: " invalid" (in line 29, at column 1)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "a/b" (in line 29, at column 13)</expected-error>
-        <expected-error>ASX1115: Invalid name for a database object: "c/d" (in line 32, at column 11)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: '' (in line 29, at column 1)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' a' (in line 29, at column 1)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: ' invalid' (in line 29, at column 1)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'a/b' (in line 29, at column 13)</expected-error>
+        <expected-error>ASX1115: Invalid name for a database object: 'c/d' (in line 32, at column 11)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl">
@@ -4328,7 +4328,7 @@
         <expected-error>CAST modifier is only allowed for B-Tree indexes</expected-error>
         <expected-error>CAST modifier cannot be specified together with ENFORCED</expected-error>
         <expected-error>CAST modifier is used without specifying the type of the indexed field</expected-error>
-        <expected-error>Typed index on "[typed_f2]" field could be created only for open datatype</expected-error>
+        <expected-error>Typed index on '[typed_f2]' field could be created only for open datatype</expected-error>
         <expected-error>Parameter invalid_date cannot be set</expected-error>
       </compilation-unit>
     </test-case>
@@ -4592,8 +4592,8 @@
     <test-case FilePath="dml">
       <compilation-unit name="load-with-autogenerated-no-field">
         <output-dir compare="Text">load-with-autogenerated-no-field</output-dir>
-        <expected-error>ASX1014: Field "not_id" is not found</expected-error>
-        <expected-error>ASX1014: Field "not_id" is not found</expected-error>
+        <expected-error>ASX1014: Field 'not_id' is not found</expected-error>
+        <expected-error>ASX1014: Field 'not_id' is not found</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="dml">
@@ -5110,8 +5110,8 @@
     <test-case FilePath="dml">
       <compilation-unit name="load-with-autogenerated-no-field">
         <output-dir compare="Text">load-with-autogenerated-no-field</output-dir>
-        <expected-error>ASX1014: Field "not_id" is not found</expected-error>
-        <expected-error>ASX1014: Field "not_id" is not found</expected-error>
+        <expected-error>ASX1014: Field 'not_id' is not found</expected-error>
+        <expected-error>ASX1014: Field 'not_id' is not found</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="dml">
@@ -6985,7 +6985,7 @@
     <test-case FilePath="misc">
       <compilation-unit name="partition-by-nonexistent-field">
         <output-dir compare="Text">partition-by-nonexistent-field</output-dir>
-        <expected-error>Field "id" is not found</expected-error>
+        <expected-error>Field 'id' is not found</expected-error>
         <expected-error>Cannot find dataset with name testds in dataverse test</expected-error>
         <expected-error>Cannot find dataset testds in dataverse test nor an alias with name testds</expected-error>
       </compilation-unit>
@@ -7274,7 +7274,7 @@
       <test-case FilePath="index/validations">
         <compilation-unit name="repetitive-keys">
           <output-dir compare="Text">repetitive-keys</output-dir>
-          <expected-error>Cannot create index with the same field "[value]" specified more than once.</expected-error>
+          <expected-error>Cannot create index with the same field '[value]' specified more than once.</expected-error>
         </compilation-unit>
       </test-case>
     </test-group>
@@ -7284,13 +7284,13 @@
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="enforced-field-name-collision">
           <output-dir compare="Text">enforced-field-name-collision</output-dir>
-          <expected-error>Cannot create enforced index on "[value]" field. The field is closed type.</expected-error>
+          <expected-error>Cannot create enforced index on '[value]' field. The field is closed type.</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="enforced-field-type-collision">
           <output-dir compare="Text">enforced-field-type-collision</output-dir>
-          <expected-error>Cannot create enforced index on "[value]" field. The field is closed type.</expected-error>
+          <expected-error>Cannot create enforced index on '[value]' field. The field is closed type.</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
@@ -7302,31 +7302,31 @@
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="missing-optionality">
           <output-dir compare="Text">missing-optionality</output-dir>
-          <expected-error>Cannot create enforced index on "[value]" field with non-optional type</expected-error>
+          <expected-error>Cannot create enforced index on '[value]' field with non-optional type</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="index-on-closed-type">
           <output-dir compare="Text">index-on-closed-type</output-dir>
-          <expected-error>ASX1014: Field "value" is not found (in line 33, at column 34)</expected-error>
+          <expected-error>ASX1014: Field 'value' is not found (in line 33, at column 34)</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="index-type-collision">
           <output-dir compare="Text">index-type-collision</output-dir>
-          <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field "[value]" is already defined with type "[integer]"</expected-error>
+          <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field '[value]' is already defined with type '[integer]'</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="index-type-promotion-collision">
           <output-dir compare="Text">index-type-promotion-collision</output-dir>
-          <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field "[value]" is already defined with type "[bigint]"</expected-error>
+          <expected-error>Cannot create index testIdx2 , enforced index testIdx1 on field '[value]' is already defined with type '[bigint]'</expected-error>
         </compilation-unit>
       </test-case>
       <test-case FilePath="open-index-enforced/error-checking">
         <compilation-unit name="object-type-collision">
           <output-dir compare="Text">object-type-collision</output-dir>
-          <expected-error>ASX1051: Cannot create enforced index on "[value]" field. The field is closed type.</expected-error>
+          <expected-error>ASX1051: Cannot create enforced index on '[value]' field. The field is closed type.</expected-error>
         </compilation-unit>
       </test-case>
     </test-group>
@@ -8142,7 +8142,7 @@
       <test-case FilePath="array-index/error-handling">
         <compilation-unit name="index-on-closed-array">
           <output-dir compare="Text">index-on-closed-array</output-dir>
-          <expected-error>ASX1014: Field "date" is not found</expected-error>
+          <expected-error>ASX1014: Field 'date' is not found</expected-error>
           <source-location>false</source-location>
         </compilation-unit>
       </test-case>
@@ -8587,7 +8587,7 @@
     <test-case FilePath="nestrecords">
       <compilation-unit name="nested-optional-pk">
         <output-dir compare="Text">nested-optional-pk</output-dir>
-        <expected-error>ASX1021: The primary key field "nested.id" cannot be nullable</expected-error>
+        <expected-error>ASX1021: The primary key field 'nested.id' cannot be nullable</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="nestrecords">
@@ -9660,13 +9660,13 @@
     <!-- Fail sporadically        <test-case FilePath="range-hints">
             <compilation-unit name="order-by-exception_01">
                 <output-dir compare="Text">order-by</output-dir>
-                <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error>
+                <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error>
             </compilation-unit>
         </test-case>
         <test-case FilePath="range-hints">
             <compilation-unit name="order-by-exception_02">
                 <output-dir compare="Text">order-by</output-dir>
-                <expected-error>org.json.JSONException: JSONObject["summary"] not found</expected-error>
+                <expected-error>org.json.JSONException: JSONObject['summary'] not found</expected-error>
             </compilation-unit>
         </test-case> -->
   </test-group>
@@ -10535,8 +10535,8 @@
     <test-case FilePath="string">
       <compilation-unit name="like_03_negative">
         <output-dir compare="Text">like_03_negative</output-dir>
-        <expected-error>Invalid pattern "__\c" for LIKE (in line 21, at column 11)</expected-error>
-        <expected-error>Invalid pattern "%\" for LIKE (in line 21, at column 18)</expected-error>
+        <expected-error>Invalid pattern '__\c' for LIKE (in line 21, at column 11)</expected-error>
+        <expected-error>Invalid pattern '%\' for LIKE (in line 21, at column 18)</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="string">
@@ -13422,10 +13422,10 @@
         <expected-error><![CDATA[ASX1001: Syntax error: In line 25 >>create view test.v1(r bigint, a [bigint]) default null as<< Encountered "[" at column 33]]></expected-error>
         <expected-error>ASX1092: Parameter date_illegal_property_name cannot be set (in line 25, at column 1)</expected-error>
         <expected-error><![CDATA[ASX1001: Syntax error: In line 25 >>create view test.v1(r bigint) as<< Encountered "as" at column 31]]></expected-error>
-        <expected-error><![CDATA[ASX1014: Field "unknown_field" is not found (in line 25, at column 1)]]></expected-error>
-        <expected-error><![CDATA[ASX1014: Field "unknown_field_2" is not found (in line 25, at column 1)]]></expected-error>
+        <expected-error><![CDATA[ASX1014: Field 'unknown_field' is not found (in line 25, at column 1)]]></expected-error>
+        <expected-error><![CDATA[ASX1014: Field 'unknown_field_2' is not found (in line 25, at column 1)]]></expected-error>
         <expected-error><![CDATA[ASX1001: Syntax error: In line 28 >>  as select r from range(1,2) r;<< Encountered "as" at column 3]]></expected-error>
-        <expected-error><![CDATA[ASX0013: Duplicate field name "r" (in line 25, at column 20)]]></expected-error>
+        <expected-error><![CDATA[ASX0013: Duplicate field name 'r' (in line 25, at column 20)]]></expected-error>
         <expected-error><![CDATA[ASX1167: Cannot change primary key of view test1.employee_v1 (in line 38, at column 1)]]></expected-error>
         <expected-error><![CDATA[ASX1162: Invalid primary key definition (in line 25, at column 1)]]></expected-error>
         <expected-error><![CDATA[ASX1162: Invalid primary key definition (in line 26, at column 1)]]></expected-error>
@@ -15303,14 +15303,14 @@
     <test-case FilePath="ddl-with-clause">
       <compilation-unit name="missing-non-optional">
         <output-dir compare="Text">missing-non-optional</output-dir>
-        <expected-error>ASX1061: Field "merge-policy.name" in the with clause cannot be null or missing</expected-error>
+        <expected-error>ASX1061: Field 'merge-policy.name' in the with clause cannot be null or missing</expected-error>
         <source-location>false</source-location>
       </compilation-unit>
     </test-case>
     <test-case FilePath="ddl-with-clause">
       <compilation-unit name="type-mismatch">
         <output-dir compare="Text">type-mismatch</output-dir>
-        <expected-error>ASX1060: Field "merge-policy.parameters.max-mergable-component-size" in the with clause must be of type bigint, but found string</expected-error>
+        <expected-error>ASX1060: Field 'merge-policy.parameters.max-mergable-component-size' in the with clause must be of type bigint, but found string</expected-error>
         <source-location>false</source-location>
       </compilation-unit>
     </test-case>
@@ -15324,7 +15324,7 @@
     <test-case FilePath="ddl-with-clause">
       <compilation-unit name="unsupported-subfield">
         <output-dir compare="Text">unsupported-subfield</output-dir>
-        <expected-error>ASX1097: Subfield(s) [unknown-subfield] in "merge-policy" unsupported in the with clause</expected-error>
+        <expected-error>ASX1097: Subfield(s) [unknown-subfield] in 'merge-policy' unsupported in the with clause</expected-error>
         <source-location>false</source-location>
       </compilation-unit>
     </test-case>
diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index faaf8d5..f5ef79d 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -37,7 +37,7 @@
 3,1003 = Type incompatibility: function %1$s gets incompatible input values: %2$s and %3$s
 4,1004 = Unsupported type: %1$s cannot process input type %2$s
 5,1005 = Invalid item type: function %1$s cannot process item type %2$s in an input array (or multiset)
-13,1006 = Duplicate field name \"%1$s\"
+13,1006 = Duplicate field name '%1$s'
 1009 = A returning expression cannot contain dataset access
 37,1091 = Type mismatch: expected value of type %1$s, but got the value of type %2$s
 51 = Incomparable input types: %1$s and %2$s
@@ -64,7 +64,7 @@
 25 = Polygon must have at least 3 points
 26 = %1$s can not be an instance of polygon
 27 = Operation not supported
-28 = Invalid duration \"%1$s\"
+28 = Invalid duration '%1$s'
 29 = Unknown duration unit %1$s
 30 = Request timed out and will be cancelled
 31 = Invalid type-casting math function: %1$s for converting %2$s to %3$s
@@ -76,15 +76,15 @@
 39 = Expected integer value, got %1$s
 40 = No statement provided
 41 = Request %1$s has been cancelled
-42 = %1$s: \"%2$s\" is not a TPC-DS table name
+42 = %1$s: '%2$s' is not a TPC-DS table name
 43 = Value out of range, function %1$s expects its %2$s input parameter value to be between %3$s and %4$s, received %5$s
 44 = %1$s statement is not supported in read-only mode
 45 = Invalid value: function %1$s expects its %2$s input parameter to be an integer value, got %3$s
-46 = Invalid pattern \"%1$s\" for LIKE
-47 = Invalid value for parameter \"%1$s\": %2$s
+46 = Invalid pattern '%1$s' for LIKE
+47 = Invalid value for parameter '%1$s': %2$s
 48 = Unable to process JSON content in request
 49 = Parameter(s) %1$s must be specified
-50 = Invalid parameter \"%1$s\"
+50 = Invalid parameter '%1$s'
 #51 is used
 52 = Illegal state. %1$s
 53 = Unsupported Parquet type '%1$s'
@@ -107,14 +107,14 @@
 1011 = Unknown dataset type %1$s
 1012 = Unknown index type %1$s
 1013 = Cannot use %1$s fields as a key for the %2$s index. The index can only support keys of size %3$s
-1014 = Field \"%1$s\" is not found
-1015 = Index of type %1$s is not supported for dataset \"%2$s\" since it has composite primary keys
+1014 = Field '%1$s' is not found
+1015 = Index of type %1$s is not supported for dataset '%2$s' since it has composite primary keys
 1016 = Index of type %1$s is not supported for dataset of type %2$s
-1017 = The filter field \"%1$s\" cannot be an optional field
+1017 = The filter field '%1$s' cannot be an optional field
 1018 = Field of type %1$s cannot be used as a filter field
 1019 = Cannot autogenerate a composite %1$s key
 1020 = Cannot autogenerate a %1$s key for %1$s key of type %2$s. Autogenerated %1$s keys must be of type %3$s
-1021 = The %1$s key field \"%2$s\" cannot be nullable
+1021 = The %1$s key field '%2$s' cannot be nullable
 1022 = Field of type %1$s cannot be used as a %2$s key field
 1023 = Cannot drop dataset %1$s since it is connected to active entity: %2$s
 #1024 is no longer used
@@ -134,7 +134,7 @@
 1038 = Illegal state. %1$s
 1039 = Two-phase locking violation -- locks can not be acquired after unlocking
 1040 = Dataset id space is exhausted
-1041 = Cannot create enforced index on \"%1$s\" field with non-optional type
+1041 = Cannot create enforced index on '%1$s' field with non-optional type
 1042 = Cannot create non-enforced typed index of this kind: %1$s
 1043 = Cannot use %1$s fields as key for the R-tree index. There can be only one field as a key for the R-tree index.
 1044 = Communication-related exception occurred during the execution of a remote method call
@@ -144,8 +144,8 @@
 1048 = Metadata lock cannot be downgraded! because it was not acquired before
 1049 = Metadata lock cannot be acquired for %1$s since it is already acquired for %2$s
 1050 = Cannot find dataset with name %1$s in dataverse %2$s
-1051 = Cannot create enforced index on \"%1$s\" field. The field is closed type.
-1052 = Cannot create index with the same field \"%1$s\" specified more than once.
+1051 = Cannot create enforced index on '%1$s' field. The field is closed type.
+1052 = Cannot create index with the same field '%1$s' specified more than once.
 1053 = Cannot create primary index on external dataset.
 1054 = Compilation failed due to some problem in the query plan.
 1055 = Incompatible implementation language %1$s for function %2$s. Expected language %3$s.
@@ -153,8 +153,8 @@
 1057 = Expression of type %1$s is not supported in constant record
 1058 = Literal of type %1$s is not supported in constant record
 1059 = Field(s) %1$s unsupported in the with clause
-1060 = Field \"%1$s\" in the with clause must be of type %2$s, but found %3$s
-1061 = Field \"%1$s\" in the with clause cannot be null or missing
+1060 = Field '%1$s' in the with clause must be of type %2$s, but found %3$s
+1061 = Field '%1$s' in the with clause cannot be null or missing
 1062 = Configuration parameter cannot be of type %1$s
 1063 = Cannot find dataverse with name %1$s
 1064 = An error was occurred while converting type %1$s to type %2$s.
@@ -162,7 +162,7 @@
 1066 = Cannot serialize a value.
 1067 = Cannot find a non-missing SELECT operator in GROUP operator for a left-outer-join plan optimization.
 1068 = Cannot get the conditional split variable for the given UNNESTMAP operator.
-1069 = Cannot drop index \"%1$s\". Drop dataset \"%1$s\" to remove this index
+1069 = Cannot drop index '%1$s'. Drop dataset '%1$s' to remove this index
 1070 = Metadata error. %1$s
 1071 = A dataverse with this name %1$s already exists.
 1072 = A dataset with name %1$s already exists in dataverse %2$s
@@ -189,7 +189,7 @@
 1094 = Cannot parse range map: %1$s
 1095 = Expected function call
 1096 = Unknown compression scheme %1$s. Supported schemes are %2$s
-1097 = Subfield(s) %1$s in \"%2$s\" unsupported in the with clause
+1097 = Subfield(s) %1$s in '%2$s' unsupported in the with clause
 1098 = Invalid window frame definition
 1099 = Unexpected window frame definition
 1100 = Unexpected window expression
@@ -202,12 +202,12 @@
 1107 = Unexpected hint: %1$s. %2$s expected at this location
 1108 = External source error. %1$s
 1109 = External source container %1$s not found
-1110 = The parameters \"%1$s\" and \"%2$s\" cannot be provided at the same time
-1111 = Property \"%1$s\" expects value(s) of type %2$s
-1112 = Invalid format for property \"%1$s\"
+1110 = The parameters '%1$s' and '%2$s' cannot be provided at the same time
+1111 = Property '%1$s' expects value(s) of type %2$s
+1112 = Invalid format for property '%1$s'
 1113 = Invalid pattern %1$s
 1114 = The provided external dataset configuration returned no files from the external source
-1115 = Invalid name for a database object: \"%1$s\"
+1115 = Invalid name for a database object: '%1$s'
 1116 = Cannot find synonym with name %1$s
 1117 = Cannot find library with name %1$s
 1118 = Too many grouping sets in group by clause: %1$s. Maximum allowed: %2$s.
@@ -324,7 +324,7 @@
 3056 = Illegal escape '\%1$s'
 3057 = Found END_RECORD while expecting a record field.
 3058 = This record is closed, you can not add extra fields! new field name: %1$s
-3059 = Unexpected ADM token kind: %1$s while expecting ":"
+3059 = Unexpected ADM token kind: %1$s while expecting ':'
 3060 = Found COMMA %1$s %2$s record field
 3061 = Unsupported interval type: %1$s
 3062 = Interval was not closed
diff --git a/hyracks-fullstack/hyracks/hyracks-http/pom.xml b/hyracks-fullstack/hyracks/hyracks-http/pom.xml
index 466a447..e06f6be 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/pom.xml
+++ b/hyracks-fullstack/hyracks/hyracks-http/pom.xml
@@ -125,5 +125,10 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.hyracks</groupId>
+      <artifactId>hyracks-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
index ff23ac2..64a76f7 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/AbstractServlet.java
@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.concurrent.ConcurrentMap;
 
+import org.apache.hyracks.api.exceptions.IFormattedException;
 import org.apache.hyracks.http.api.IServlet;
 import org.apache.hyracks.http.api.IServletRequest;
 import org.apache.hyracks.http.api.IServletResponse;
@@ -98,7 +99,7 @@ public abstract class AbstractServlet implements IServlet {
             } else if (HttpMethod.OPTIONS.equals(method)) {
                 options(request, response);
             } else {
-                notAllowed(method, response);
+                methodNotAllowed(method, response);
             }
         } catch (Exception e) {
             LOGGER.log(Level.WARN, "Unhandled exception", e);
@@ -113,21 +114,31 @@ public abstract class AbstractServlet implements IServlet {
     }
 
     protected void sendError(IServletResponse response, HttpResponseStatus status, String message) throws IOException {
+        sendError(response, HttpUtil.ContentType.TEXT_PLAIN, status, message);
+    }
+
+    protected void sendError(IServletResponse response, String contentType, HttpResponseStatus status, String message)
+            throws IOException {
         response.setStatus(status);
-        HttpUtil.setContentType(response, HttpUtil.ContentType.TEXT_PLAIN, StandardCharsets.UTF_8);
+        HttpUtil.setContentType(response, contentType, StandardCharsets.UTF_8);
         if (message != null) {
             response.writer().println(message);
         }
         if (LOGGER.isInfoEnabled()) {
-            LOGGER.info("sendError: status=" + status + ", message=" + message);
+            LOGGER.info("sendError: status={}, message={}", status, message);
         }
     }
 
+    protected void sendError(IServletResponse response, HttpResponseStatus status, IFormattedException ex)
+            throws IOException {
+        sendError(response, status, ex != null ? ex.getMessage() : null);
+    }
+
     protected void sendError(IServletResponse response, HttpResponseStatus status) throws IOException {
-        sendError(response, status, null);
+        sendError(response, status, status.reasonPhrase());
     }
 
-    protected void notAllowed(HttpMethod method, IServletResponse response) throws IOException {
+    protected void methodNotAllowed(HttpMethod method, IServletResponse response) throws IOException {
         sendError(response, HttpResponseStatus.METHOD_NOT_ALLOWED,
                 "Method " + method + " not allowed for the requested resource.");
     }
@@ -135,37 +146,37 @@ public abstract class AbstractServlet implements IServlet {
     @SuppressWarnings("squid:S1172")
     protected void get(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.GET, response);
+        methodNotAllowed(HttpMethod.GET, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void head(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.HEAD, response);
+        methodNotAllowed(HttpMethod.HEAD, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void post(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.POST, response);
+        methodNotAllowed(HttpMethod.POST, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void put(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.PUT, response);
+        methodNotAllowed(HttpMethod.PUT, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void delete(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.DELETE, response);
+        methodNotAllowed(HttpMethod.DELETE, response);
     }
 
     @SuppressWarnings("squid:S1172")
     protected void options(IServletRequest request, IServletResponse response) throws Exception {
         // designed to be extended but an error in standard case
-        notAllowed(HttpMethod.OPTIONS, response);
+        methodNotAllowed(HttpMethod.OPTIONS, response);
     }
 
     public String host(IServletRequest request) {

[asterixdb] 07/09: [NO ISSUE][FUN] DATETIME constructor should accept TIME

Posted by mb...@apache.org.
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 a703f7915e7fc2d2a1ca1d3a05f5cb5e95c9cb1a
Author: Dmitry Lychagin <dm...@couchbase.com>
AuthorDate: Tue Feb 8 11:50:33 2022 -0800

    [NO ISSUE][FUN] DATETIME constructor should accept TIME
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - Fix datetime() constructor function to handle TIME
      argument, instead of returning NULL
    
    Change-Id: I9eab6b3e29642ef6d7f88808e7eb446e8f7c455c
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15203
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>
    Reviewed-by: Ian Maxon <im...@uci.edu>
---
 .../constructor/datetime_01/datetime_01.3.query.sqlpp             | 4 ++--
 .../constructor/datetime_02/datetime_02.1.query.sqlpp             | 7 +++----
 .../runtimets/results/constructor/datetime_01/datetime_01.1.adm   | 2 +-
 .../runtimets/results/constructor/datetime_02/datetime_02.1.adm   | 2 +-
 .../constructor/datetime_01/datetime_01.3.ast                     | 6 +++---
 .../asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml  | 7 +++----
 .../constructors/AbstractDateTimeConstructorEvaluator.java        | 8 ++++++++
 7 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_01/datetime_01.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_01/datetime_01.3.query.sqlpp
index 97a9955..eb34dbf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_01/datetime_01.3.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_01/datetime_01.3.query.sqlpp
@@ -34,7 +34,8 @@ test = [
     '-19280329T17493737+0630',
     '-19280301T05493737+0630',
     test.datetime('-19280301T05493737+0630'),
-    date('2020-01-02')
+    date('2020-01-02'),
+    time('01:02:03.456')
 ],
 testNull = [
   null,
@@ -47,7 +48,6 @@ testNull = [
   int64(0),
   float(0),
   double(0),
-  time('01:02:03'),
   duration('PT0H'),
   year_month_duration('P0Y0M'),
   day_time_duration('P0D')
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_02/datetime_02.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_02/datetime_02.1.query.sqlpp
index 082d840..dec3016 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_02/datetime_02.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_02/datetime_02.1.query.sqlpp
@@ -24,8 +24,7 @@
   "null_0": datetime("@#!"),
   "null_1": datetime(false),
   "null_2": datetime(0),
-  "null_3": datetime(time("01:02:03")),
-  "null_4": datetime([]),
-  "null_5": datetime({}),
-  "null_6": datetime("1951-12-27T12:20:15Z", "INVALID_FORMAT")
+  "null_3": datetime([]),
+  "null_4": datetime({}),
+  "null_5": datetime("1951-12-27T12:20:15Z", "INVALID_FORMAT")
 };
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_01/datetime_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_01/datetime_01.1.adm
index 8d2b2d2..cb20c29 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_01/datetime_01.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_01/datetime_01.1.adm
@@ -14,6 +14,7 @@
 { "g": 0, "i": 13, "actual": datetime("-1928-03-01T05:49:37.370") }
 { "g": 0, "i": 14, "actual": datetime("-1928-03-01T05:49:37.370") }
 { "g": 0, "i": 15, "actual": datetime("2020-01-02T00:00:00.000") }
+{ "g": 0, "i": 16, "actual": datetime("1970-01-01T01:02:03.456") }
 { "g": 1, "i": 0, "expected": null, "actual": null }
 { "g": 1, "i": 1, "expected": null, "actual": null }
 { "g": 1, "i": 2, "expected": null, "actual": null }
@@ -27,5 +28,4 @@
 { "g": 1, "i": 10, "expected": null, "actual": null }
 { "g": 1, "i": 11, "expected": null, "actual": null }
 { "g": 1, "i": 12, "expected": null, "actual": null }
-{ "g": 1, "i": 13, "expected": null, "actual": null }
 { "g": 2, "i": 0, "expected": true, "actual": true }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_02/datetime_02.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_02/datetime_02.1.adm
index a7601ae..4d80977 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_02/datetime_02.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_02/datetime_02.1.adm
@@ -1 +1 @@
-{ "null_0": null, "null_1": null, "null_2": null, "null_3": null, "null_4": null, "null_5": null, "null_6": null }
\ No newline at end of file
+{ "null_0": null, "null_1": null, "null_2": null, "null_3": null, "null_4": null, "null_5": null }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast
index b348fda..ad2b9d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast
@@ -22,6 +22,9 @@ Let Variable [ Name=$test ]
     FunctionCall asterix.date@1[
       LiteralExpr [STRING] [2020-01-02]
     ]
+    FunctionCall asterix.time@1[
+      LiteralExpr [STRING] [01:02:03.456]
+    ]
   ]
 Let Variable [ Name=$testNull ]
   :=
@@ -48,9 +51,6 @@ Let Variable [ Name=$testNull ]
     FunctionCall asterix.double@1[
       LiteralExpr [LONG] [0]
     ]
-    FunctionCall asterix.time@1[
-      LiteralExpr [STRING] [01:02:03]
-    ]
     FunctionCall asterix.duration@1[
       LiteralExpr [STRING] [PT0H]
     ]
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 0b98369..bc9353b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -3674,10 +3674,9 @@
         <expected-warn>ASX0006: Invalid format for datetime in @#! (in line 24, at column 13)</expected-warn>
         <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type boolean (in line 25, at column 13)</expected-warn>
         <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type bigint (in line 26, at column 13)</expected-warn>
-        <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type time (in line 27, at column 13)</expected-warn>
-        <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type array (in line 28, at column 13)</expected-warn>
-        <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type object (in line 29, at column 13)</expected-warn>
-        <expected-warn>ASX0006: Invalid format for datetime in 1951-12-27T12:20:15Z (in line 30, at column 13)</expected-warn>
+        <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type array (in line 27, at column 13)</expected-warn>
+        <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type object (in line 28, at column 13)</expected-warn>
+        <expected-warn>ASX0006: Invalid format for datetime in 1951-12-27T12:20:15Z (in line 29, at column 13)</expected-warn>
       </compilation-unit>
     </test-case>
     <test-case FilePath="constructor">
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AbstractDateTimeConstructorEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AbstractDateTimeConstructorEvaluator.java
index 6765d90..3b4355d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AbstractDateTimeConstructorEvaluator.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AbstractDateTimeConstructorEvaluator.java
@@ -20,6 +20,7 @@
 package org.apache.asterix.runtime.evaluators.constructors;
 
 import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
 import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
 import org.apache.asterix.om.base.ADateTime;
 import org.apache.asterix.om.base.AMutableDateTime;
@@ -67,6 +68,13 @@ public abstract class AbstractDateTimeConstructorEvaluator extends AbstractConst
                 datetimeSerde.serialize(aDateTime, out);
                 result.set(resultStorage);
                 break;
+            case TIME:
+                int chronon = ATimeSerializerDeserializer.getChronon(bytes, startOffset + 1);
+                aDateTime.setValue(chronon);
+                resultStorage.reset();
+                datetimeSerde.serialize(aDateTime, out);
+                result.set(resultStorage);
+                break;
             case STRING:
                 utf8Ptr.set(bytes, startOffset + 1, len - 1);
                 if (parseDateTime(utf8Ptr, aDateTime)) {

[asterixdb] 04/09: [ASTERIXDB-3009][EXT]: Update Google Cloud Storage to 2.3.0

Posted by mb...@apache.org.
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 cd050c80e4adc87f7f0ad537e2410117ef5101c2
Author: Hussain Towaileb <Hu...@Couchbase.com>
AuthorDate: Fri Feb 4 16:49:13 2022 +0300

    [ASTERIXDB-3009][EXT]: Update Google Cloud Storage to 2.3.0
    
    Change-Id: I2df742f11be39c29da4545a7016ed77088e62159
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15143
    Reviewed-by: Michael Blow <mb...@apache.org>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Integration-Tests: Hussain Towaileb <hu...@gmail.com>
---
 asterixdb/asterix-server/pom.xml                   |  89 +++++-----
 asterixdb/pom.xml                                  |   2 +-
 .../appended-resources/supplemental-models.xml     | 179 ++++++++++-----------
 ....com_google_gson_gson-parent-2.8.9_LICENSE.txt} |   0
 ..._googleapis_api-common-java_v2.1.2_LICENSE.txt} |   0
 ...ent.com_googleapis_gax-java_v2.8.1_LICENSE.txt} |   0
 ...pis_google-api-java-client_v1.33.0_LICENSE.txt} |   0
 ...is_google-auth-library-java_v1.3.0_LICENSE.txt} |   0
 ...is_google-http-java-client_v1.41.0_LICENSE.txt} |   0
 ...s_google-oauth-java-client_v1.32.1_LICENSE.txt} |   0
 ...nt.com_googleapis_java-core_v2.3.5_LICENSE.txt} |   0
 ...content.com_grpc_grpc-java_v1.43.2_LICENSE.txt} |   0
 ...rcontent.com_grpc_grpc-java_v1.43.2_NOTICE.txt} |   0
 ...m_protocolbuffers_protobuf_v3.19.2_LICENSE.txt} |   0
 14 files changed, 124 insertions(+), 146 deletions(-)

diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml
index 1c7208e..d8ad238 100644
--- a/asterixdb/asterix-server/pom.xml
+++ b/asterixdb/asterix-server/pom.xml
@@ -314,41 +314,42 @@
             </override>
             <override>
               <gavs>
-                <gav>com.google.http-client:google-http-client-jackson2:1.39.2</gav>
-                <gav>com.google.http-client:google-http-client-appengine:1.39.2</gav>
-                <gav>com.google.http-client:google-http-client-gson:1.39.2</gav>
-                <gav>com.google.http-client:google-http-client-apache-v2:1.39.2</gav>
+                <gav>com.google.http-client:google-http-client:1.41.0</gav>
+                <gav>com.google.http-client:google-http-client-jackson2:1.41.0</gav>
+                <gav>com.google.http-client:google-http-client-appengine:1.41.0</gav>
+                <gav>com.google.http-client:google-http-client-gson:1.41.0</gav>
+                <gav>com.google.http-client:google-http-client-apache-v2:1.41.0</gav>
               </gavs>
-              <url>https://raw.githubusercontent.com/googleapis/google-http-java-client/v1.39.2/LICENSE</url>
+              <url>https://raw.githubusercontent.com/googleapis/google-http-java-client/v1.41.0/LICENSE</url>
             </override>
             <override>
-              <gav>com.google.oauth-client:google-oauth-client:1.31.5</gav>
-              <url>https://raw.githubusercontent.com/googleapis/google-oauth-java-client/v1.31.5/LICENSE</url>
+              <gav>com.google.oauth-client:google-oauth-client:1.32.1</gav>
+              <url>https://raw.githubusercontent.com/googleapis/google-oauth-java-client/v1.32.1/LICENSE</url>
             </override>
             <override>
               <gavs>
-                <gav>com.google.protobuf:protobuf-java:3.16.0</gav>
-                <gav>com.google.protobuf:protobuf-java-util:3.16.0</gav>
+                <gav>com.google.protobuf:protobuf-java:3.19.2</gav>
+                <gav>com.google.protobuf:protobuf-java-util:3.19.2</gav>
               </gavs>
-              <url>https://raw.githubusercontent.com/protocolbuffers/protobuf/v3.16.0/LICENSE</url>
+              <url>https://raw.githubusercontent.com/protocolbuffers/protobuf/v3.19.2/LICENSE</url>
             </override>
             <override>
               <gavs>
-                <gav>com.google.auth:google-auth-library-oauth2-http:0.25.5</gav>
-                <gav>com.google.auth:google-auth-library-credentials:0.25.5</gav>
+                <gav>com.google.auth:google-auth-library-oauth2-http:1.3.0</gav>
+                <gav>com.google.auth:google-auth-library-credentials:1.3.0</gav>
               </gavs>
-              <url>https://raw.githubusercontent.com/googleapis/google-auth-library-java/v0.25.5/LICENSE</url>
+              <url>https://raw.githubusercontent.com/googleapis/google-auth-library-java/v1.3.0/LICENSE</url>
             </override>
             <override>
               <gavs>
-                <gav>com.google.cloud:google-cloud-core:1.94.8</gav>
-                <gav>com.google.cloud:google-cloud-core-http:1.94.8</gav>
+                <gav>com.google.cloud:google-cloud-core:2.3.5</gav>
+                <gav>com.google.cloud:google-cloud-core-http:2.3.5</gav>
               </gavs>
-              <url>https://raw.githubusercontent.com/googleapis/java-core/v1.94.8/LICENSE</url>
+              <url>https://raw.githubusercontent.com/googleapis/java-core/v2.3.5/LICENSE</url>
             </override>
             <override>
-              <gav>com.google.cloud:google-cloud-storage:1.114.0</gav>
-              <url>https://raw.githubusercontent.com/googleapis/java-storage/v1.114.0/LICENSE</url>
+              <gav>com.google.cloud:google-cloud-storage:2.3.0</gav>
+              <url>https://raw.githubusercontent.com/googleapis/java-storage/v2.3.0/LICENSE</url>
             </override>
             <override>
               <gavs>
@@ -358,39 +359,39 @@
               <url>https://raw.githubusercontent.com/census-instrumentation/opencensus-java/v0.28.0/LICENSE</url>
             </override>
             <override>
-              <gav>com.google.api-client:google-api-client:1.31.5</gav>
-              <url>https://raw.githubusercontent.com/googleapis/google-api-java-client/v1.31.5/LICENSE</url>
+              <gav>com.google.api-client:google-api-client:1.33.0</gav>
+              <url>https://raw.githubusercontent.com/googleapis/google-api-java-client/v1.33.0/LICENSE</url>
             </override>
             <override>
-              <gav>com.google.api.grpc:proto-google-iam-v1:1.0.13</gav>
-              <url>https://raw.githubusercontent.com/googleapis/java-iam/v1.0.13/proto-google-iam-v1/LICENSE</url>
+              <gav>com.google.api.grpc:proto-google-iam-v1:1.2.0</gav>
+              <url>https://raw.githubusercontent.com/googleapis/java-iam/v1.2.0/proto-google-iam-v1/LICENSE</url>
             </override>
             <override>
-              <gav>com.google.api.grpc:proto-google-common-protos:2.1.0</gav>
-              <url>https://raw.githubusercontent.com/googleapis/java-common-protos/v2.1.0/proto-google-common-protos/LICENSE</url>
+              <gav>com.google.api.grpc:proto-google-common-protos:2.7.1</gav>
+              <url>https://raw.githubusercontent.com/googleapis/java-common-protos/v2.7.1/proto-google-common-protos/LICENSE</url>
             </override>
             <override>
-              <gav>com.google.api:api-common:1.10.3</gav>
-              <url>https://raw.githubusercontent.com/googleapis/api-common-java/v1.10.3/LICENSE</url>
+              <gav>com.google.api:api-common:2.1.2</gav>
+              <url>https://raw.githubusercontent.com/googleapis/api-common-java/v2.1.2/LICENSE</url>
             </override>
             <override>
               <gavs>
-                <gav>com.google.api:gax-httpjson:0.81.0</gav>
-                <gav>com.google.api:gax:1.64.0</gav>
+                <gav>com.google.api:gax-httpjson:0.93.1</gav>
+                <gav>com.google.api:gax:2.8.1</gav>
               </gavs>
-              <url>https://raw.githubusercontent.com/googleapis/gax-java/v1.64.0/LICENSE</url>
+              <url>https://raw.githubusercontent.com/googleapis/gax-java/v2.8.1/LICENSE</url>
             </override>
             <override>
-              <gav>com.google.auto.value:auto-value-annotations:1.8.1</gav>
-              <url>https://raw.githubusercontent.com/google/auto/auto-value-1.8.1/LICENSE</url>
+              <gav>com.google.auto.value:auto-value-annotations:1.9</gav>
+              <url>https://raw.githubusercontent.com/google/auto/auto-value-1.9/LICENSE</url>
             </override>
             <override>
               <gav>com.google.code.findbugs:jsr305:3.0.2</gav>
               <url>https://raw.githubusercontent.com/findbugsproject/findbugs/3.0.2_preview2/findbugs/licenses/LICENSE-jsr305.txt</url>
             </override>
             <override>
-              <gav>com.google.code.gson:gson:2.8.6</gav>
-              <url>https://raw.githubusercontent.com/google/gson/gson-parent-2.8.6/LICENSE</url>
+              <gav>com.google.code.gson:gson:2.8.9</gav>
+              <url>https://raw.githubusercontent.com/google/gson/gson-parent-2.8.9/LICENSE</url>
             </override>
             <override>
               <gav>com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava</gav>
@@ -401,17 +402,9 @@
               <url>https://raw.githubusercontent.com/google/j2objc/1.3/LICENSE</url>
             </override>
             <override>
-              <gav>io.grpc:grpc-context:1.37.0</gav>
-              <url>https://raw.githubusercontent.com/grpc/grpc-java/v1.37.0/LICENSE</url>
-              <noticeUrl>https://raw.githubusercontent.com/grpc/grpc-java/v1.37.0/NOTICE.txt</noticeUrl>
-            </override>
-            <override>
-              <gav>org.checkerframework:checker-compat-qual:2.5.5</gav>
-              <url>https://raw.githubusercontent.com/typetools/checker-framework/checker-framework-2.5.5/LICENSE.txt</url>
-            </override>
-            <override>
-              <gav>com.google.api:api-common:1.10.3</gav>
-              <url>https://raw.githubusercontent.com/googleapis/api-common-java/v1.10.3/LICENSE</url>
+              <gav>io.grpc:grpc-context:1.43.2</gav>
+              <url>https://raw.githubusercontent.com/grpc/grpc-java/v1.43.2/LICENSE</url>
+              <noticeUrl>https://raw.githubusercontent.com/grpc/grpc-java/v1.43.2/NOTICE.txt</noticeUrl>
             </override>
             <override>
               <gav>org.mindrot:jbcrypt:0.4</gav>
@@ -467,11 +460,11 @@
                 <aliasUrl>https://raw.githubusercontent.com/reactor/reactor-core/v3.4.10/LICENSE</aliasUrl>
                 <aliasUrl>https://raw.githubusercontent.com/codehaus/stax/master/dev/ASF2.0.txt</aliasUrl>
                 <aliasUrl>https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions/raw/5d13925b57ace092ea5e1131c338f464d85545f4/LICENSE.txt</aliasUrl>
-                <aliasUrl>https://raw.githubusercontent.com/google/auto/auto-value-1.8.1/LICENSE</aliasUrl>
+                <aliasUrl>https://raw.githubusercontent.com/google/auto/auto-value-1.9/LICENSE</aliasUrl>
                 <aliasUrl>https://raw.githubusercontent.com/google/j2objc/1.3/LICENSE</aliasUrl>
-                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-common-protos/v2.1.0/proto-google-common-protos/LICENSE</aliasUrl>
-                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-iam/v1.0.13/proto-google-iam-v1/LICENSE</aliasUrl>
-                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-storage/v1.114.0/LICENSE</aliasUrl>
+                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-common-protos/v2.7.1/proto-google-common-protos/LICENSE</aliasUrl>
+                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-iam/v1.2.0/proto-google-iam-v1/LICENSE</aliasUrl>
+                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-storage/v2.3.0/LICENSE</aliasUrl>
                 <aliasUrl>http://repository.jboss.org/licenses/apache-2.0.txt</aliasUrl>
               </aliasUrls>
               <metric>1</metric>
diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml
index 7f5ffaa..40ff4e6 100644
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@ -92,7 +92,7 @@
     <hadoop-awsjavasdk.version>1.12.109</hadoop-awsjavasdk.version>
     <azureblobjavasdk.version>12.14.2</azureblobjavasdk.version>
     <azuredatalakejavasdk.version>12.7.2</azuredatalakejavasdk.version>
-    <gcsjavasdk.version>1.114.0</gcsjavasdk.version>
+    <gcsjavasdk.version>2.3.0</gcsjavasdk.version>
     <hadoop-azuresdk.version>8.6.6</hadoop-azuresdk.version>
 
     <implementation.title>Apache AsterixDB - ${project.name}</implementation.title>
diff --git a/asterixdb/src/main/appended-resources/supplemental-models.xml b/asterixdb/src/main/appended-resources/supplemental-models.xml
index 61ac8b5..825c845 100644
--- a/asterixdb/src/main/appended-resources/supplemental-models.xml
+++ b/asterixdb/src/main/appended-resources/supplemental-models.xml
@@ -1109,27 +1109,15 @@
   </supplement>
 
   <!-- GCS SDK for Java start -->
-  <!-- com.google.http-client is ALv2 with no NOTICE file -->
-  <supplement>
-    <project>
-      <groupId>com.google.http-client</groupId>
-      <artifactId>google-http-client-jackson2</artifactId>
-      <properties>
-        <license.ignoreMissingEmbeddedLicense>1.39.2</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.39.2</license.ignoreMissingEmbeddedNotice>
-      </properties>
-    </project>
-  </supplement>
-
   <!-- com.google.api has no NOTICE file -->
   <supplement>
     <project>
       <groupId>com.google.api</groupId>
       <artifactId>api-common</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.10.3</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.10.3</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.10.3</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>2.1.2</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.1.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>2.1.2</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1140,9 +1128,9 @@
       <groupId>com.google.api</groupId>
       <artifactId>gax-httpjson</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>0.81.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>0.81.0</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>0.81.0</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>0.93.1</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>0.93.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>0.93.1</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1153,9 +1141,9 @@
       <groupId>com.google.api</groupId>
       <artifactId>gax</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.64.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.64.0</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.64.0</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>2.8.1</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.8.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>2.8.1</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1166,9 +1154,9 @@
       <groupId>com.google.api-client</groupId>
       <artifactId>google-api-client</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.31.5</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.31.5</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.31.5</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>1.33.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.33.0</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.33.0</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1205,9 +1193,9 @@
       <groupId>com.google.cloud</groupId>
       <artifactId>google-cloud-core</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.94.8</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.94.8</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.94.8</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>2.3.5</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.3.5</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>2.3.5</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1218,9 +1206,9 @@
       <groupId>com.google.cloud</groupId>
       <artifactId>google-cloud-core-http</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.94.8</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.94.8</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.94.8</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>2.3.5</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.3.5</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>2.3.5</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1231,48 +1219,48 @@
       <groupId>com.google.auth</groupId>
       <artifactId>google-auth-library-credentials</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>0.25.5</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>0.25.5</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>0.25.5</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>1.3.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.3.0</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.3.0</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
 
-  <!-- io.grpc:grpc-context uses non-fixed ALv2 and has no NOTICE -->
+  <!-- com.google.auth has no NOTICE file -->
   <supplement>
     <project>
-      <groupId>io.grpc</groupId>
-      <artifactId>grpc-context</artifactId>
+      <groupId>com.google.auth</groupId>
+      <artifactId>google-auth-library-oauth2-http</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.37.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.37.0</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.37.0</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>1.3.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.3.0</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.3.0</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
 
-  <!-- com.google.protobuf has no NOTICE file -->
+  <!-- io.grpc:grpc-context uses non-fixed ALv2 and has no NOTICE -->
   <supplement>
     <project>
-      <groupId>com.google.protobuf</groupId>
-      <artifactId>protobuf-java-util</artifactId>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-context</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>3.16.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>3.16.0</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>3.16.0</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>1.43.2</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.43.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.43.2</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
 
-  <!-- com.google.auth has no NOTICE file -->
+  <!-- com.google.protobuf has no NOTICE file -->
   <supplement>
     <project>
-      <groupId>com.google.auth</groupId>
-      <artifactId>google-auth-library-oauth2-http</artifactId>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java-util</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>0.25.5</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>0.25.5</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>0.25.5</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>3.19.2</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>3.19.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>3.19.2</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1283,9 +1271,9 @@
       <groupId>com.google.protobuf</groupId>
       <artifactId>protobuf-java</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>3.16.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>3.16.0</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>3.16.0</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>3.19.2</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>3.19.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>3.19.2</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1296,7 +1284,19 @@
       <groupId>org.threeten</groupId>
       <artifactId>threetenbp</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedNotice>1.5.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedNotice>1.5.2</license.ignoreMissingEmbeddedNotice>
+      </properties>
+    </project>
+  </supplement>
+
+  <!-- com.google.http-client is ALv2 with no NOTICE file -->
+  <supplement>
+    <project>
+      <groupId>com.google.http-client</groupId>
+      <artifactId>google-http-client-jackson2</artifactId>
+      <properties>
+        <license.ignoreMissingEmbeddedLicense>1.41.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.41.0</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1307,8 +1307,8 @@
       <groupId>com.google.http-client</groupId>
       <artifactId>google-http-client</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.39.2</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.39.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>1.41.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.41.0</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1319,8 +1319,8 @@
       <groupId>com.google.http-client</groupId>
       <artifactId>google-http-client-appengine</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.39.2</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.39.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>1.41.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.41.0</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1331,8 +1331,8 @@
       <groupId>com.google.http-client</groupId>
       <artifactId>google-http-client-apache-v2</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.39.2</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.39.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>1.41.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.41.0</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1343,8 +1343,8 @@
       <groupId>com.google.http-client</groupId>
       <artifactId>google-http-client-gson</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.39.2</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.39.2</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>1.41.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.41.0</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1368,9 +1368,9 @@
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>2.8.6</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>2.8.6</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>2.8.6</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>2.8.9</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.8.9</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>2.8.9</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1392,24 +1392,9 @@
   <supplement>
     <project>
       <groupId>org.checkerframework</groupId>
-      <artifactId>checker-compat-qual</artifactId>
+      <artifactId>checker-qual</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>2.5.5</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>2.5.5</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>2.5.5</license.ignoreLicenseOverride>
-      </properties>
-    </project>
-  </supplement>
-
-  <!-- com.google.api:api-common has no NOTICE file -->
-  <supplement>
-    <project>
-      <groupId>com.google.api</groupId>
-      <artifactId>api-common</artifactId>
-      <properties>
-        <license.ignoreMissingEmbeddedLicense>1.10.3</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.10.3</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.10.3</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedNotice>3.20.0</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1420,8 +1405,8 @@
       <groupId>com.google.auto.value</groupId>
       <artifactId>auto-value-annotations</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.8.1</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.8.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>1.9</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.9</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1444,21 +1429,21 @@
       <groupId>com.google.apis</groupId>
       <artifactId>google-api-services-storage</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>v1-rev20210127-1.31.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>v1-rev20210127-1.31.0</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>v1-rev20211201-1.32.1</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>v1-rev20211201-1.32.1</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
 
-  <!-- com.google.oauth-client:google-oauth-client:1.31.5 uses non-fixed ALv2 and has no NOTICE file -->
+  <!-- com.google.oauth-client:google-oauth-client uses non-fixed ALv2 and has no NOTICE file -->
   <supplement>
     <project>
       <groupId>com.google.oauth-client</groupId>
       <artifactId>google-oauth-client</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.31.5</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.31.5</license.ignoreMissingEmbeddedNotice>
-        <license.ignoreLicenseOverride>1.31.5</license.ignoreLicenseOverride>
+        <license.ignoreMissingEmbeddedLicense>1.32.1</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.32.1</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreLicenseOverride>1.32.1</license.ignoreLicenseOverride>
       </properties>
     </project>
   </supplement>
@@ -1469,8 +1454,8 @@
       <groupId>com.google.api.grpc</groupId>
       <artifactId>proto-google-iam-v1</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.0.13</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.0.13</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>1.2.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>1.2.0</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1481,8 +1466,8 @@
       <groupId>com.google.api.grpc</groupId>
       <artifactId>proto-google-common-protos</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>2.1.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>2.1.0</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>2.7.1</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.7.1</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
@@ -1493,8 +1478,8 @@
       <groupId>com.google.cloud</groupId>
       <artifactId>google-cloud-storage</artifactId>
       <properties>
-        <license.ignoreMissingEmbeddedLicense>1.114.0</license.ignoreMissingEmbeddedLicense>
-        <license.ignoreMissingEmbeddedNotice>1.114.0</license.ignoreMissingEmbeddedNotice>
+        <license.ignoreMissingEmbeddedLicense>2.3.0</license.ignoreMissingEmbeddedLicense>
+        <license.ignoreMissingEmbeddedNotice>2.3.0</license.ignoreMissingEmbeddedNotice>
       </properties>
     </project>
   </supplement>
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_grpc_grpc-java_v1.37.0_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_google_gson_gson-parent-2.8.9_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_grpc_grpc-java_v1.37.0_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_google_gson_gson-parent-2.8.9_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_api-common-java_v1.10.3_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_api-common-java_v2.1.2_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_api-common-java_v1.10.3_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_api-common-java_v2.1.2_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_gax-java_v1.64.0_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_gax-java_v2.8.1_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_gax-java_v1.64.0_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_gax-java_v2.8.1_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_java-core_v1.94.8_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-api-java-client_v1.33.0_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_java-core_v1.94.8_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-api-java-client_v1.33.0_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-auth-library-java_v0.25.5_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-auth-library-java_v1.3.0_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-auth-library-java_v0.25.5_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-auth-library-java_v1.3.0_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-oauth-java-client_v1.31.5_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-http-java-client_v1.41.0_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-oauth-java-client_v1.31.5_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-http-java-client_v1.41.0_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-http-java-client_v1.39.2_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-oauth-java-client_v1.32.1_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-http-java-client_v1.39.2_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-oauth-java-client_v1.32.1_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-api-java-client_v1.31.5_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_java-core_v2.3.5_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_google-api-java-client_v1.31.5_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_googleapis_java-core_v2.3.5_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_google_gson_gson-parent-2.8.6_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_grpc_grpc-java_v1.43.2_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_google_gson_gson-parent-2.8.6_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_grpc_grpc-java_v1.43.2_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_grpc_grpc-java_v1.37.0_NOTICE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_grpc_grpc-java_v1.43.2_NOTICE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_grpc_grpc-java_v1.37.0_NOTICE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_grpc_grpc-java_v1.43.2_NOTICE.txt
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_protocolbuffers_protobuf_v3.16.0_LICENSE.txt b/asterixdb/src/main/licenses/content/raw.githubusercontent.com_protocolbuffers_protobuf_v3.19.2_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_protocolbuffers_protobuf_v3.16.0_LICENSE.txt
rename to asterixdb/src/main/licenses/content/raw.githubusercontent.com_protocolbuffers_protobuf_v3.19.2_LICENSE.txt

[asterixdb] 08/09: [NO ISSUE][MISC] Add ability to write messages to json object, etc.

Posted by mb...@apache.org.
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 706406d039afb2e4c851148310e3a3d2ddfacb78
Author: Michael Blow <mb...@apache.org>
AuthorDate: Thu Feb 10 09:27:01 2022 -0500

    [NO ISSUE][MISC] Add ability to write messages to json object, etc.
    
    - minor cleanup
    
    Change-Id: Ib0a3a0bc2269c3bfa65a08a3c0a77aeb45b16e5d
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15223
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Ian Maxon <im...@uci.edu>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
---
 .../org/apache/asterix/translator/BaseClientRequest.java    |  2 +-
 .../asterix/app/active/ActiveNotificationHandler.java       |  5 ++---
 .../app/result/fields/AbstractCodedMessagePrinter.java      | 13 +++++++++++++
 .../org/apache/asterix/common/api/RequestReference.java     |  2 +-
 .../src/main/java/org/apache/hyracks/util/JSONUtil.java     |  5 +++--
 5 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/BaseClientRequest.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/BaseClientRequest.java
index eaca53b..99cda09 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/BaseClientRequest.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/BaseClientRequest.java
@@ -90,7 +90,7 @@ public abstract class BaseClientRequest implements IClientRequest {
 
     @Override
     public String toJson() {
-        return JSONUtil.convertNodeOrThrow(asJson());
+        return JSONUtil.convertNodeUnchecked(asJson());
     }
 
     protected ObjectNode asJson() {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveNotificationHandler.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveNotificationHandler.java
index 6b5cae2..284929f 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveNotificationHandler.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/ActiveNotificationHandler.java
@@ -181,10 +181,9 @@ public class ActiveNotificationHandler extends SingleThreadEventProcessor<Active
     @Override
     public synchronized IActiveEntityEventsListener[] getEventListeners() {
         if (LOGGER.isTraceEnabled()) {
-            LOGGER.trace("getEventListeners() was called");
-            LOGGER.trace("returning " + entityEventListeners.size() + " Listeners");
+            LOGGER.trace("getEventListeners() returning {} listeners", entityEventListeners.size());
         }
-        return entityEventListeners.values().toArray(new IActiveEntityEventsListener[entityEventListeners.size()]);
+        return entityEventListeners.values().toArray(IActiveEntityEventsListener[]::new);
     }
 
     @Override
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/AbstractCodedMessagePrinter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/AbstractCodedMessagePrinter.java
index 6270c4c..f1eb315 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/AbstractCodedMessagePrinter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/AbstractCodedMessagePrinter.java
@@ -26,6 +26,9 @@ import org.apache.asterix.common.api.ICodedMessage;
 import org.apache.asterix.common.api.IResponseFieldPrinter;
 import org.apache.hyracks.util.JSONUtil;
 
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
 public abstract class AbstractCodedMessagePrinter implements IResponseFieldPrinter {
 
     private enum CodedMessageField {
@@ -68,4 +71,14 @@ public abstract class AbstractCodedMessagePrinter implements IResponseFieldPrint
         }
         pw.print("]");
     }
+
+    public ObjectNode appendTo(ObjectNode objectNode) {
+        ArrayNode array = objectNode.putArray(getName());
+        messages.forEach(codedMessage -> {
+            ObjectNode error = array.addObject();
+            error.put(CodedMessageField.CODE.str(), codedMessage.getCode());
+            error.put(CodedMessageField.MSG.str(), codedMessage.getMessage());
+        });
+        return objectNode;
+    }
 }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/RequestReference.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/RequestReference.java
index eb08c09..78b6b3b 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/RequestReference.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/RequestReference.java
@@ -79,6 +79,6 @@ public class RequestReference implements IRequestReference {
         object.put("time", time);
         object.put("userAgent", userAgent);
         object.put("remoteAddr", remoteAddr);
-        return JSONUtil.convertNodeOrThrow(object);
+        return JSONUtil.convertNodeUnchecked(object);
     }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java
index 5c1b292..f937e97 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/JSONUtil.java
@@ -35,6 +35,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.util.concurrent.UncheckedExecutionException;
 
 public class JSONUtil {
 
@@ -53,11 +54,11 @@ public class JSONUtil {
         return SORTED_MAPPER.writeValueAsString(SORTED_MAPPER.treeToValue(node, Object.class));
     }
 
-    public static String convertNodeOrThrow(final JsonNode node) {
+    public static String convertNodeUnchecked(final JsonNode node) throws UncheckedExecutionException {
         try {
             return convertNode(node);
         } catch (JsonProcessingException e) {
-            throw new IllegalStateException(e);
+            throw new UncheckedExecutionException(e);
         }
     }
 

[asterixdb] 03/09: [NO ISSUE][MISC] Update tomcat-annotations-api

Posted by mb...@apache.org.
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 2b6b377c38ee0ce1418d4bba097b0efd52a7f67d
Author: Michael Blow <mb...@apache.org>
AuthorDate: Thu Feb 3 12:36:07 2022 -0500

    [NO ISSUE][MISC] Update tomcat-annotations-api
    
    - org.apache.tomcat:tomcat-annotations-api ... 10.0.12 -> 10.0.16
    
    Change-Id: I13af758821d7200fc11cd98324d8cd51eddfcea4
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15144
    Reviewed-by: Michael Blow <mb...@apache.org>
    Reviewed-by: Hussain Towaileb <hu...@gmail.com>
    Tested-by: Michael Blow <mb...@apache.org>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
---
 asterixdb/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml
index 09c5f4a..7f5ffaa 100644
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@ -1819,7 +1819,7 @@
       <dependency>
         <groupId>org.apache.tomcat</groupId>
         <artifactId>tomcat-annotations-api</artifactId>
-        <version>10.0.12</version>
+        <version>10.0.16</version>
       </dependency>
       <!-- Google Cloud Storage end -->
       <!-- Azure Data Lake start -->