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 2023/02/24 18:50:55 UTC

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

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 95ad52066b3538311f83c2cd715cd856b748ad3c
Merge: f4380e5d48 05a9fd4715
Author: Michael Blow <mi...@couchbase.com>
AuthorDate: Fri Feb 24 08:53:45 2023 -0500

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

 .../asterix/optimizer/base/RuleCollections.java    |  10 +-
 .../optimizer/rules/ConstantFoldingRule.java       |  42 +-
 .../optimizer/rules/PushFieldAccessRule.java       | 243 ++++++----
 .../rules/RemoveOrReplaceDefaultNullCastRule.java  | 180 +++++++
 ...moveUnknownCheckForKnownTypeExpressionRule.java | 121 +++++
 .../optimizer/rules/am/AccessMethodUtils.java      |   8 +-
 .../cast-default-null/cast-default-null-25.sqlpp   |  38 ++
 .../cast-default-null/cast-default-null-01.plan    |  20 +-
 .../cast-default-null/cast-default-null-02.plan    |  28 +-
 .../cast-default-null/cast-default-null-03.plan    |  20 +-
 .../cast-default-null/cast-default-null-05.plan    |   2 +-
 .../cast-default-null/cast-default-null-10.plan    |  28 +-
 .../cast-default-null/cast-default-null-11.plan    |  28 +-
 .../cast-default-null/cast-default-null-12.plan    |  28 +-
 .../cast-default-null/cast-default-null-13.plan    |  28 +-
 .../cast-default-null/cast-default-null-14.plan    |  28 +-
 .../cast-default-null/cast-default-null-15.plan    |  28 +-
 .../cast-default-null/cast-default-null-16.plan    |  20 +-
 .../cast-default-null/cast-default-null-17.plan    |  20 +-
 .../cast-default-null/cast-default-null-18.plan    |  20 +-
 .../cast-default-null/cast-default-null-19.plan    |   2 +-
 .../cast-default-null/cast-default-null-20.plan    |  28 +-
 .../cast-default-null/cast-default-null-21.plan    |  20 +-
 .../cast-default-null/cast-default-null-22.plan    |  20 +-
 .../cast-default-null/cast-default-null-23.plan    |  28 +-
 .../cast-default-null/cast-default-null-25.plan    |  19 +
 ...join-probe-pidx-with-join-rtree-sidx_01_ps.plan |  86 ++--
 ...join-probe-pidx-with-join-rtree-sidx_01_ps.plan |  86 ++--
 .../view/view-pushdown/view-pushdown.01.ddl.sqlpp  |  98 ++++
 .../view-pushdown/view-pushdown.02.update.sqlpp    |  25 +
 .../view-pushdown/view-pushdown.03.query.sqlpp     |  32 ++
 .../view-pushdown/view-pushdown.04.query.sqlpp     |  32 ++
 .../view-pushdown/view-pushdown.05.query.sqlpp     |  25 +
 .../view-pushdown/view-pushdown.06.query.sqlpp     |  25 +
 .../view-pushdown/view-pushdown.07.query.sqlpp     |  32 ++
 .../view-pushdown/view-pushdown.08.query.sqlpp     |  32 ++
 .../view-pushdown/view-pushdown.09.query.sqlpp     |  26 +
 .../view-pushdown/view-pushdown.10.query.sqlpp     |  26 +
 .../view-pushdown/view-pushdown.11.query.sqlpp     |  32 ++
 .../view-pushdown/view-pushdown.12.query.sqlpp     |  32 ++
 .../view-pushdown/view-pushdown.13.query.sqlpp     |  26 +
 .../view-pushdown/view-pushdown.14.query.sqlpp     |  26 +
 .../view/view-pushdown/view-pushdown.03.adm        |   3 +
 .../view/view-pushdown/view-pushdown.04.plan       |  36 ++
 .../view/view-pushdown/view-pushdown.05.adm        |   3 +
 .../view/view-pushdown/view-pushdown.06.plan       |  24 +
 .../view/view-pushdown/view-pushdown.07.adm        |   3 +
 .../view/view-pushdown/view-pushdown.08.plan       |  28 ++
 .../view/view-pushdown/view-pushdown.09.adm        |   3 +
 .../view/view-pushdown/view-pushdown.10.plan       |  28 ++
 .../view/view-pushdown/view-pushdown.11.adm        |   3 +
 .../view/view-pushdown/view-pushdown.12.plan       |  28 ++
 .../view/view-pushdown/view-pushdown.13.adm        |   3 +
 .../view/view-pushdown/view-pushdown.14.plan       |  28 ++
 .../test/resources/runtimets/testsuite_sqlpp.xml   |   5 +
 asterixdb/asterix-server/pom.xml                   | 145 ++++--
 asterixdb/pom.xml                                  |   6 +-
 .../appended-resources/supplemental-models.xml     | 523 ++++++++++++++-------
 ...ntent.com_aws_aws-sdk-java_1.12.402_NOTICE.txt} |   0
 ...ercontent.com_google_conscrypt_2.5.2_NOTICE.txt |  30 ++
 ...rator-java_v2.13.0_api-common-java_LICENSE.txt} |   0
 ...ic-generator-java_v2.13.0_gax-java_LICENSE.txt} |   0
 ...s_google-auth-library-java_v1.14.0_LICENSE.txt} |   0
 ...rcontent.com_grpc_grpc-java_v1.50.2_NOTICE.txt} |   0
 ...rcontent.com_grpc_grpc-java_v1.52.1_NOTICE.txt} |   0
 ...ontent.com_perfmark_perfmark_v0.26.0_NOTICE.txt |  40 ++
 ..._protocolbuffers_protobuf_v3.21.12_LICENSE.txt} |   0
 ...entialFirstRuleCheckFixpointRuleController.java |   2 +-
 .../SequentialFixpointRuleController.java          |   2 +-
 .../SequentialOnceRuleController.java              |   2 +-
 .../core/rewriter/base/AbstractRuleController.java |   9 +-
 .../core/rewriter/base/IAlgebraicRewriteRule.java  |   9 +
 .../rules/ExtractCommonExpressionsRule.java        |  28 +-
 .../IPartitionedTupleBufferManager.java            |   9 +
 .../VPartitionTupleBufferManager.java              |  29 +-
 .../dataflow/std/join/OptimizedHybridHashJoin.java |  33 +-
 76 files changed, 2101 insertions(+), 659 deletions(-)

diff --cc asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.04.plan
index 0000000000,2ad4d606b5..fa32d7cf57
mode 000000,100644..100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.04.plan
@@@ -1,0 -1,34 +1,36 @@@
 -distribute result [$$91]
++cardinality: 0.0
++cost: 0.0
++distribute result [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DISTRIBUTE_RESULT  |UNPARTITIONED|
 -  exchange
++  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
 -    project ([$$91])
++    project ([$$94]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+     -- STREAM_PROJECT  |UNPARTITIONED|
 -      assign [$$91] <- [{"id": $$106, "review": $$111}]
++      assign [$$94] <- [{"id": $$109, "review": $$114}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+       -- ASSIGN  |UNPARTITIONED|
 -        exchange
++        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+         -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
 -          order (ASC, $$106)
 -          -- STABLE_SORT [$$106(ASC)]  |UNPARTITIONED|
 -            exchange
++          order (ASC, $$109) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++          -- STABLE_SORT [$$109(ASC)]  |UNPARTITIONED|
++            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
 -              limit 3
++              limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               -- STREAM_LIMIT  |UNPARTITIONED|
 -                exchange
++                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
 -                  project ([$$111, $$106])
++                  project ([$$114, $$109]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   -- STREAM_PROJECT  |PARTITIONED|
 -                    assign [$$106] <- [int64-default-null($$d.getField("id"))]
++                    assign [$$109] <- [int64-default-null($$d.getField("id"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     -- ASSIGN  |PARTITIONED|
 -                      limit 3
++                      limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       -- STREAM_LIMIT  |PARTITIONED|
 -                        assign [$$111] <- [string-default-null($$d.getField("review"))]
++                        assign [$$114] <- [string-default-null($$d.getField("review"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         -- ASSIGN  |PARTITIONED|
 -                          exchange
++                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                            data-scan []<-[$$d] <- test.ExternalDataset condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq(string-default-null($$d.getField("review")), "good"))) limit 3
++                            data-scan []<-[$$d] <- test.ExternalDataset condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq(string-default-null($$d.getField("review")), "good"))) limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             -- DATASOURCE_SCAN  |PARTITIONED|
 -                              exchange
++                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                                empty-tuple-source
++                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.06.plan
index 0000000000,a8465a50a2..3786198b77
mode 000000,100644..100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.06.plan
@@@ -1,0 -1,22 +1,24 @@@
 -distribute result [$$67]
++cardinality: 0.0
++cost: 0.0
++distribute result [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DISTRIBUTE_RESULT  |UNPARTITIONED|
 -  exchange
++  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
 -    limit 3
++    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+     -- STREAM_LIMIT  |UNPARTITIONED|
 -      exchange
++      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
 -        project ([$$67])
++        project ([$$69]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+         -- STREAM_PROJECT  |PARTITIONED|
 -          assign [$$67] <- [{"id": int64-default-null($$d.getField("id")), "review": string-default-null($$d.getField("review"))}]
++          assign [$$69] <- [{"id": int64-default-null($$d.getField("id")), "review": string-default-null($$d.getField("review"))}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+           -- ASSIGN  |PARTITIONED|
 -            limit 3
++            limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+             -- STREAM_LIMIT  |PARTITIONED|
 -              exchange
++              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                data-scan []<-[$$d] <- test.ExternalDataset limit 3
++                data-scan []<-[$$d] <- test.ExternalDataset limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 -- DATASOURCE_SCAN  |PARTITIONED|
 -                  exchange
++                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                    empty-tuple-source
++                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.08.plan
index 0000000000,a74c18ea17..0aa5d96b66
mode 000000,100644..100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.08.plan
@@@ -1,0 -1,26 +1,28 @@@
 -distribute result [$$85]
++cardinality: 0.0
++cost: 0.0
++distribute result [$$88] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DISTRIBUTE_RESULT  |UNPARTITIONED|
 -  exchange
++  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
 -    project ([$$85])
++    project ([$$88]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+     -- STREAM_PROJECT  |UNPARTITIONED|
 -      assign [$$85] <- [{"id": $$88, "review": $$92}]
++      assign [$$88] <- [{"id": $$91, "review": $$95}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+       -- ASSIGN  |UNPARTITIONED|
 -        limit 3
++        limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+         -- STREAM_LIMIT  |UNPARTITIONED|
 -          exchange
 -          -- SORT_MERGE_EXCHANGE [$$88(ASC) ]  |PARTITIONED|
 -            limit 3
++          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++          -- SORT_MERGE_EXCHANGE [$$91(ASC) ]  |PARTITIONED|
++            limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+             -- STREAM_LIMIT  |PARTITIONED|
 -              project ([$$88, $$92])
++              project ([$$91, $$95]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               -- STREAM_PROJECT  |PARTITIONED|
 -                assign [$$92] <- [$$d.getField(1)]
++                assign [$$95] <- [$$d.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 -- ASSIGN  |PARTITIONED|
 -                  exchange
++                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                    data-scan []<-[$$88, $$d] <- test.DatasetWithKnownField condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq($$d.getField(1), "good"))) limit 3
++                    data-scan []<-[$$91, $$d] <- test.DatasetWithKnownField condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq($$d.getField(1), "good"))) limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     -- DATASOURCE_SCAN  |PARTITIONED|
 -                      exchange
++                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                        empty-tuple-source
++                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.10.plan
index 0000000000,cc8d1c5e5b..64791b14b0
mode 000000,100644..100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.10.plan
@@@ -1,0 -1,26 +1,28 @@@
 -distribute result [$$61]
++cardinality: 0.0
++cost: 0.0
++distribute result [$$63] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DISTRIBUTE_RESULT  |UNPARTITIONED|
 -  exchange
++  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
 -    limit 3
++    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+     -- STREAM_LIMIT  |UNPARTITIONED|
 -      project ([$$61])
++      project ([$$63]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+       -- STREAM_PROJECT  |PARTITIONED|
 -        assign [$$61] <- [{"id": $$63, "review": $$67}]
++        assign [$$63] <- [{"id": $$65, "review": $$69}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+         -- ASSIGN  |PARTITIONED|
 -          exchange
 -          -- SORT_MERGE_EXCHANGE [$$63(ASC) ]  |PARTITIONED|
 -            project ([$$63, $$67])
++          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++          -- SORT_MERGE_EXCHANGE [$$65(ASC) ]  |PARTITIONED|
++            project ([$$65, $$69]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+             -- STREAM_PROJECT  |PARTITIONED|
 -              assign [$$67] <- [$$d.getField(1)]
++              assign [$$69] <- [$$d.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               -- ASSIGN  |PARTITIONED|
 -                limit 3
++                limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 -- STREAM_LIMIT  |PARTITIONED|
 -                  exchange
++                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                    data-scan []<-[$$63, $$d] <- test.DatasetWithKnownField limit 3
++                    data-scan []<-[$$65, $$d] <- test.DatasetWithKnownField limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     -- DATASOURCE_SCAN  |PARTITIONED|
 -                      exchange
++                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                        empty-tuple-source
++                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.12.plan
index 0000000000,149c739074..5038ac52e8
mode 000000,100644..100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.12.plan
@@@ -1,0 -1,26 +1,28 @@@
 -distribute result [$$91]
++cardinality: 0.0
++cost: 0.0
++distribute result [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DISTRIBUTE_RESULT  |UNPARTITIONED|
 -  exchange
++  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
 -    project ([$$91])
++    project ([$$94]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+     -- STREAM_PROJECT  |UNPARTITIONED|
 -      assign [$$91] <- [{"id": $$94, "review": $$98}]
++      assign [$$94] <- [{"id": $$97, "review": $$101}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+       -- ASSIGN  |UNPARTITIONED|
 -        limit 3
++        limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+         -- STREAM_LIMIT  |UNPARTITIONED|
 -          exchange
 -          -- SORT_MERGE_EXCHANGE [$$94(ASC) ]  |PARTITIONED|
 -            limit 3
++          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++          -- SORT_MERGE_EXCHANGE [$$97(ASC) ]  |PARTITIONED|
++            limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+             -- STREAM_LIMIT  |PARTITIONED|
 -              project ([$$94, $$98])
++              project ([$$97, $$101]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               -- STREAM_PROJECT  |PARTITIONED|
 -                assign [$$98] <- [$$d.getField(1)]
++                assign [$$101] <- [$$d.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 -- ASSIGN  |PARTITIONED|
 -                  exchange
++                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                    data-scan []<-[$$94, $$d] <- test.DatasetWithKnownField condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq($$d.getField(1), "good"))) limit 3
++                    data-scan []<-[$$97, $$d] <- test.DatasetWithKnownField condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq($$d.getField(1), "good"))) limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     -- DATASOURCE_SCAN  |PARTITIONED|
 -                      exchange
++                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                        empty-tuple-source
++                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.14.plan
index 0000000000,911a1c8b54..0081abec6b
mode 000000,100644..100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/view/view-pushdown/view-pushdown.14.plan
@@@ -1,0 -1,26 +1,28 @@@
 -distribute result [$$67]
++cardinality: 0.0
++cost: 0.0
++distribute result [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- DISTRIBUTE_RESULT  |UNPARTITIONED|
 -  exchange
++  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
 -    limit 3
++    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+     -- STREAM_LIMIT  |UNPARTITIONED|
 -      project ([$$67])
++      project ([$$69]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+       -- STREAM_PROJECT  |PARTITIONED|
 -        assign [$$67] <- [{"id": $$69, "review": $$73}]
++        assign [$$69] <- [{"id": $$71, "review": $$75}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+         -- ASSIGN  |PARTITIONED|
 -          exchange
 -          -- SORT_MERGE_EXCHANGE [$$69(ASC) ]  |PARTITIONED|
 -            project ([$$69, $$73])
++          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
++          -- SORT_MERGE_EXCHANGE [$$71(ASC) ]  |PARTITIONED|
++            project ([$$71, $$75]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+             -- STREAM_PROJECT  |PARTITIONED|
 -              assign [$$73] <- [$$d.getField(1)]
++              assign [$$75] <- [$$d.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               -- ASSIGN  |PARTITIONED|
 -                limit 3
++                limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 -- STREAM_LIMIT  |PARTITIONED|
 -                  exchange
++                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                    data-scan []<-[$$69, $$d] <- test.DatasetWithKnownField limit 3
++                    data-scan []<-[$$71, $$d] <- test.DatasetWithKnownField limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     -- DATASOURCE_SCAN  |PARTITIONED|
 -                      exchange
++                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
 -                        empty-tuple-source
++                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --cc asterixdb/asterix-server/pom.xml
index c82384df41,fb1c2f16cc..c15152aea5
--- a/asterixdb/asterix-server/pom.xml
+++ b/asterixdb/asterix-server/pom.xml
@@@ -342,21 -342,29 +342,35 @@@
              </override>
              <override>
                <gavs>
-                 <gav>com.google.cloud:google-cloud-core:2.8.0</gav>
-                 <gav>com.google.cloud:google-cloud-core-http:2.8.0</gav>
+                 <gav>com.google.cloud:google-cloud-core:2.9.4</gav>
+                 <gav>com.google.cloud:google-cloud-core-http:2.9.4</gav>
+                 <gav>com.google.cloud:google-cloud-core-grpc:2.9.4</gav>
                </gavs>
-               <url>https://raw.githubusercontent.com/googleapis/java-core/v2.8.0/LICENSE</url>
+               <url>https://raw.githubusercontent.com/googleapis/java-core/v2.9.4/LICENSE</url>
              </override>
              <override>
-               <gav>com.google.cloud:google-cloud-storage:2.9.0</gav>
-               <url>https://raw.githubusercontent.com/googleapis/java-storage/v2.9.0/LICENSE</url>
+               <gav>com.google.cloud:google-cloud-storage:2.17.2</gav>
+               <gav>com.google.api.grpc:gapic-google-cloud-storage-v2:2.17.2-alpha</gav>
+               <gav>com.google.api.grpc:proto-google-cloud-storage-v2:2.17.2-alpha</gav>
+               <gav>com.google.api.grpc:grpc-google-cloud-storage-v2:2.17.2-alpha</gav>
+               <url>https://raw.githubusercontent.com/googleapis/java-storage/v2.17.2/LICENSE</url>
+             </override>
+             <override>
+               <gav>com.google.api.grpc:proto-google-cloud-monitoring-v3:1.64.0</gav>
+               <url>https://raw.githubusercontent.com/googleapis/googleapis/master/LICENSE</url>
+             </override>
+             <override>
+               <gavs>
+                 <gav>io.opencensus:opencensus-proto:0.2.0</gav>
+               </gavs>
+               <url>https://raw.githubusercontent.com/census-instrumentation/opencensus-proto/v0.2.0/LICENSE</url>
              </override>
 +            <override>
 +              <gavs>
 +                <gav>io.opencensus:opencensus-proto:0.2.0</gav>
 +              </gavs>
 +              <url>https://raw.githubusercontent.com/census-instrumentation/opencensus-proto/v0.2.0/LICENSE</url>
 +            </override>
              <override>
                <gavs>
                  <gav>io.opencensus:opencensus-api:0.31.1</gav>
@@@ -419,27 -433,23 +439,40 @@@
                <gav>com.google.j2objc:j2objc-annotations:1.3</gav>
                <url>https://raw.githubusercontent.com/google/j2objc/1.3/LICENSE</url>
              </override>
 +            <override>
 +              <gavs>
 +                <gav>io.grpc:grpc-alts:1.43.2</gav>
 +                <gav>io.grpc:grpc-api:1.43.2</gav>
 +                <gav>io.grpc:grpc-auth:1.43.2</gav>
 +                <gav>io.grpc:grpc-census:1.43.2</gav>
 +                <gav>io.grpc:grpc-core:1.43.2</gav>
 +                <gav>io.grpc:grpc-grpclb:1.43.2</gav>
 +                <gav>io.grpc:grpc-protobuf-lite:1.43.2</gav>
 +                <gav>io.grpc:grpc-protobuf:1.43.2</gav>
 +                <gav>io.grpc:grpc-services:1.43.2</gav>
 +                <gav>io.grpc:grpc-stub:1.43.2</gav>
 +                <gav>io.grpc:grpc-xds:1.43.2</gav>
 +              </gavs>
 +              <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>io.grpc:grpc-context:1.47.0</gav>
-               <url>https://raw.githubusercontent.com/grpc/grpc-java/v1.47.0/LICENSE</url>
-               <noticeUrl>https://raw.githubusercontent.com/grpc/grpc-java/v1.47.0/NOTICE.txt</noticeUrl>
+               <gavs>
+                 <gav>io.grpc:grpc-alts:1.52.1</gav>
+                 <gav>io.grpc:grpc-api:1.52.1</gav>
+                 <gav>io.grpc:grpc-auth:1.52.1</gav>
+                 <gav>io.grpc:grpc-context:1.52.1</gav>
+                 <gav>io.grpc:grpc-core:1.52.1</gav>
+                 <gav>io.grpc:grpc-grpclb:1.52.1</gav>
+                 <gav>io.grpc:grpc-googleapis:1.52.1</gav>
+                 <gav>io.grpc:grpc-protobuf-lite:1.52.1</gav>
+                 <gav>io.grpc:grpc-protobuf:1.52.1</gav>
+                 <gav>io.grpc:grpc-services:1.52.1</gav>
+                 <gav>io.grpc:grpc-stub:1.52.1</gav>
+                 <gav>io.grpc:grpc-xds:1.52.1</gav>
+               </gavs>
+               <url>https://raw.githubusercontent.com/grpc/grpc-java/v1.52.1/LICENSE</url>
+               <noticeUrl>https://raw.githubusercontent.com/grpc/grpc-java/v1.52.1/NOTICE.txt</noticeUrl>
              </override>
              <override>
                <gav>org.mindrot:jbcrypt:0.4</gav>
@@@ -457,68 -467,16 +490,78 @@@
                <gav>org.slf4j:slf4j-reload4j:1.7.36</gav>
                <url>https://raw.githubusercontent.com/qos-ch/slf4j/v_1.7.36/LICENSE.txt</url>
              </override>
+             <override>
+               <gav>org.conscrypt:conscrypt-openjdk-uber:2.5.1</gav>
+               <url>https://raw.githubusercontent.com/google/conscrypt/2.5.1/LICENSE</url>
+               <noticeUrl>https://raw.githubusercontent.com/google/conscrypt/2.5.1/NOTICE</noticeUrl>
+             </override>
+             <override>
+               <gav>io.perfmark:perfmark-api:0.26.0</gav>
+               <url>https://raw.githubusercontent.com/perfmark/perfmark/v0.26.0/LICENSE</url>
+               <noticeUrl>https://raw.githubusercontent.com/perfmark/perfmark/v0.26.0/NOTICE</noticeUrl>
+             </override>
 +            <override>
 +              <gavs>
 +                <gav>com.google.cloud.bigdataoss:gcs-connector:hadoop3-2.2.6</gav>
 +                <gav>com.google.cloud.bigdataoss:gcsio:2.2.6</gav>
 +                <gav>com.google.cloud.bigdataoss:util-hadoop:hadoop3-2.2.6</gav>
 +                <gav>com.google.cloud.bigdataoss:util:2.2.6</gav>
 +              </gavs>
 +              <url>https://raw.githubusercontent.com/GoogleCloudDataproc/hadoop-connectors/v2.2.6/LICENSE</url>
 +            </override>
 +            <override>
 +              <gavs>
 +                <gav>com.google.flogger:flogger:0.7.1</gav>
 +                <gav>com.google.flogger:google-extensions:0.7.1</gav>
 +                <gav>com.google.flogger:flogger-system-backend:0.7.1</gav>
 +              </gavs>
 +              <url>https://raw.githubusercontent.com/google/flogger/flogger-0.7.1/LICENSE</url>
 +            </override>
 +            <override>
 +              <gavs>
 +                <gav>com.google.api.grpc:proto-google-cloud-monitoring-v3:1.64.0</gav>
 +                <gav>com.google.api.grpc:proto-google-cloud-storage-v2:2.2.2-alpha</gav>
 +                <gav>com.google.api.grpc:grpc-google-cloud-storage-v2:2.2.2-alpha</gav>
 +              </gavs>
 +              <url>https://raw.githubusercontent.com/googleapis/googleapis/master/LICENSE</url>
 +            </override>
 +            <override>
 +              <gav>com.lmax:disruptor:3.4.2</gav>
 +              <url>https://raw.githubusercontent.com/LMAX-Exchange/disruptor/3.4.2/LICENCE.txt</url>
 +            </override>
 +            <override>
 +              <gav>com.google.cloud:google-cloud-core-grpc:1.82.0</gav>
 +              <url>https://raw.githubusercontent.com/googleapis/java-core/v1.82.0/LICENSE</url>
 +            </override>
 +            <override>
 +              <gav>com.google.cloud:google-cloud-monitoring:1.82.0</gav>
 +              <url>https://raw.githubusercontent.com/googleapis/java-monitoring/1.82.0/LICENSE</url>
 +            </override>
 +            <override>
 +              <gav>com.google.api-client:google-api-client-jackson2:1.32.2</gav>
 +              <url>https://raw.githubusercontent.com/googleapis/google-api-java-client/v1.32.2/LICENSE</url>
 +            </override>
 +            <override>
 +              <gav>org.conscrypt:conscrypt-openjdk-uber:2.5.1</gav>
 +              <url>https://raw.githubusercontent.com/google/conscrypt/2.5.1/LICENSE</url>
 +              <noticeUrl>https://raw.githubusercontent.com/google/conscrypt/2.5.1/NOTICE</noticeUrl>
 +            </override>
 +            <override>
 +              <gav>io.perfmark:perfmark-api:0.23.0</gav>
 +              <url>https://raw.githubusercontent.com/perfmark/perfmark/v0.23.0/LICENSE</url>
 +              <noticeUrl>https://raw.githubusercontent.com/perfmark/perfmark/v0.23.0/NOTICE</noticeUrl>
 +            </override>
 +            <override>
 +              <gav>com.google.api:gax-grpc:2.7.1</gav>
 +              <url>https://raw.githubusercontent.com/googleapis/gax-java/v2.7.1/LICENSE</url>
 +            </override>
 +            <override>
 +              <gavs>
 +                <gav>org.bouncycastle:bcprov-jdk15on:1.60</gav>
 +                <gav>org.bouncycastle:bcpkix-jdk15on:1.60</gav>
 +              </gavs>
 +              <url>https://raw.githubusercontent.com/bcgit/bc-java/r1rv60/LICENSE.html</url>
 +            </override>
            </overrides>
            <licenses>
              <license>
@@@ -570,22 -526,16 +611,30 @@@
                  <aliasUrl>https://raw.githubusercontent.com/census-instrumentation/opencensus-java/v0.31.0/LICENSE</aliasUrl>
                  <aliasUrl>https://raw.githubusercontent.com/census-instrumentation/opencensus-java/v0.31.1/LICENSE</aliasUrl>
                  <aliasUrl>https://raw.githubusercontent.com/census-instrumentation/opencensus-proto/v0.2.0/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/google/conscrypt/2.5.2/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/googleapis/googleapis/master/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/perfmark/perfmark/v0.26.0/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/googleapis/google-http-java-client/v1.42.3/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/google/conscrypt/2.5.1/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/google/flogger/flogger-0.7.1/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/googleapis/google-api-java-client/v1.32.2/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/googleapis/google-api-java-client/v1.35.1/LICENSE</aliasUrl>
-                 <aliasUrl>https://raw.githubusercontent.com/googleapis/googleapis/master/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-core/v1.82.0/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-monitoring/1.82.0/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/GoogleCloudDataproc/hadoop-connectors/v2.2.6/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/LMAX-Exchange/disruptor/3.4.2/LICENCE.txt</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/perfmark/perfmark/v0.23.0/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/grpc/grpc-java/v1.43.2/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/grpc/grpc-java/v1.47.0/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/googleapis/google-http-java-client/v1.42.0/LICENSE</aliasUrl>
                  <aliasUrl>https://raw.githubusercontent.com/googleapis/google-oauth-java-client/v1.34.1/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/googleapis/java-core/v2.9.4/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/google/gson/gson-parent-2.10.1/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/googleapis/gapic-generator-java/v2.13.0/java-common-protos/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/googleapis/google-api-java-client/v2.1.2/LICENSE</aliasUrl>
+                 <aliasUrl>https://raw.githubusercontent.com/grpc/grpc-java/v1.52.1/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/googleapis/java-core/v2.8.0/LICENSE</aliasUrl>
 +                <aliasUrl>https://raw.githubusercontent.com/google/gson/gson-parent-2.9.0/LICENSE</aliasUrl>
                </aliasUrls>
                <metric>1</metric>
              </license>
diff --cc asterixdb/pom.xml
index 4b7fd8e4b5,6e198a7e3d..ea91efc0d1
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@@ -89,12 -89,11 +89,12 @@@
      <log4j.version>2.19.0</log4j.version>
      <awsjavasdk.version>2.17.218</awsjavasdk.version>
      <parquet.version>1.12.3</parquet.version>
-     <hadoop-awsjavasdk.version>1.12.109</hadoop-awsjavasdk.version>
+     <hadoop-awsjavasdk.version>1.12.402</hadoop-awsjavasdk.version>
      <azureblobjavasdk.version>12.14.2</azureblobjavasdk.version>
      <azuredatalakejavasdk.version>12.7.2</azuredatalakejavasdk.version>
-     <gcsjavasdk.version>2.9.0</gcsjavasdk.version>
+     <gcsjavasdk.version>2.17.2</gcsjavasdk.version>
      <hadoop-azuresdk.version>8.6.6</hadoop-azuresdk.version>
 +    <hadoop-gcs.version>hadoop3-2.2.6</hadoop-gcs.version>
  
      <implementation.title>Apache AsterixDB - ${project.name}</implementation.title>
      <implementation.url>https://asterixdb.apache.org/</implementation.url>
diff --cc asterixdb/src/main/appended-resources/supplemental-models.xml
index f196fb231a,18508ef66a..ae9f9fd88c
--- a/asterixdb/src/main/appended-resources/supplemental-models.xml
+++ b/asterixdb/src/main/appended-resources/supplemental-models.xml
@@@ -1237,6 -1237,6 +1262,32 @@@
      </project>
    </supplement>
  
++  <!-- io.opencensus uses ALv2 with no NOTICE file -->
++  <supplement>
++    <project>
++      <groupId>io.opencensus</groupId>
++      <artifactId>opencensus-contrib-exemplar-util</artifactId>
++      <properties>
++        <license.ignoreMissingEmbeddedLicense>0.31.0</license.ignoreMissingEmbeddedLicense>
++        <license.ignoreMissingEmbeddedNotice>0.31.0</license.ignoreMissingEmbeddedNotice>
++        <license.ignoreLicenseOverride>0.31.0</license.ignoreLicenseOverride>
++      </properties>
++    </project>
++  </supplement>
++
++  <!-- io.opencensus uses ALv2 with no NOTICE file -->
++  <supplement>
++    <project>
++      <groupId>io.opencensus</groupId>
++      <artifactId>opencensus-contrib-grpc-metrics</artifactId>
++      <properties>
++        <license.ignoreMissingEmbeddedLicense>0.31.0</license.ignoreMissingEmbeddedLicense>
++        <license.ignoreMissingEmbeddedNotice>0.31.0</license.ignoreMissingEmbeddedNotice>
++        <license.ignoreLicenseOverride>0.31.0</license.ignoreLicenseOverride>
++      </properties>
++    </project>
++  </supplement>
++
    <!-- io.opencensus uses non-fixed ALv2 with no NOTICE file -->
    <supplement>
      <project>
@@@ -1250,316 -1250,121 +1301,354 @@@
      </project>
    </supplement>
  
+   <!-- com.google.api.grpc uses ALv2 with no NOTICE file -->
+   <supplement>
+     <project>
+       <groupId>com.google.api.grpc</groupId>
+       <artifactId>gapic-google-cloud-storage-v2</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>2.17.2-alpha</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>2.17.2-alpha</license.ignoreMissingEmbeddedNotice>
+         <license.ignoreLicenseOverride>2.17.2-alpha</license.ignoreLicenseOverride>
+       </properties>
+     </project>
+   </supplement>
+ 
+   <!-- com.google.api.grpc uses ALv2 with no NOTICE file -->
+   <supplement>
+     <project>
+       <groupId>com.google.api.grpc</groupId>
+       <artifactId>grpc-google-cloud-storage-v2</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>2.17.2-alpha</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>2.17.2-alpha</license.ignoreMissingEmbeddedNotice>
+         <license.ignoreLicenseOverride>2.17.2-alpha</license.ignoreLicenseOverride>
+       </properties>
+     </project>
+   </supplement>
+ 
+   <!-- com.google.api.grpc uses ALv2 with no NOTICE file -->
+   <supplement>
+     <project>
+       <groupId>com.google.api.grpc</groupId>
+       <artifactId>proto-google-cloud-storage-v2</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>2.17.2-alpha</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>2.17.2-alpha</license.ignoreMissingEmbeddedNotice>
+         <license.ignoreLicenseOverride>2.17.2-alpha</license.ignoreLicenseOverride>
+       </properties>
+     </project>
+   </supplement>
+ 
+   <!-- org.conscrypt uses ALv2 LICENSE and has a NOTICE file -->
+   <supplement>
+     <project>
+       <groupId>org.conscrypt</groupId>
+       <artifactId>conscrypt-openjdk-uber</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>2.5.2</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>2.5.2</license.ignoreMissingEmbeddedNotice>
+         <license.ignoreLicenseOverride>2.5.2</license.ignoreLicenseOverride>
+       </properties>
+     </project>
+   </supplement>
+ 
+   <!-- io.perfmark uses ALv2 license -->
+   <supplement>
+     <project>
+       <groupId>io.perfmark</groupId>
+       <artifactId>perfmark-api</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>0.26.0</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>0.26.0</license.ignoreMissingEmbeddedNotice>
+         <license.ignoreLicenseOverride>0.26.0</license.ignoreLicenseOverride>
+       </properties>
+     </project>
+   </supplement>
+ 
+   <!-- org.codehaus.mojo:animal-sniffer-annotations uses MIT license -->
+   <supplement>
+     <project>
+       <groupId>org.codehaus.mojo</groupId>
+       <artifactId>animal-sniffer-annotations</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>1.22</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>1.22</license.ignoreMissingEmbeddedNotice>
+       </properties>
+     </project>
+   </supplement>
+ 
+   <!-- com.google.apis:google-api-services-iamcredentials has embedded ASLv2 in pom.xml -->
+   <supplement>
+     <project>
+       <groupId>com.google.apis</groupId>
+       <artifactId>google-api-services-iamcredentials</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>v1-rev20210326-1.32.1</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>v1-rev20210326-1.32.1</license.ignoreMissingEmbeddedNotice>
+       </properties>
+     </project>
+   </supplement>
+ 
+   <!-- com.google.apis:google-api-services-iamcredentials has embedded ASLv2 in pom.xml -->
+   <supplement>
+     <project>
+       <groupId>com.google.api</groupId>
+       <artifactId>gax-grpc</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>2.22.0</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>2.22.0</license.ignoreMissingEmbeddedNotice>
+         <license.ignoreLicenseOverride>2.22.0</license.ignoreLicenseOverride>
+       </properties>
+     </project>
+   </supplement>
+ 
+   <!-- com.google.cloud uses ALv2 with no NOTICE file -->
+   <supplement>
+     <project>
+       <groupId>com.google.cloud</groupId>
+       <artifactId>google-cloud-core-grpc</artifactId>
+       <properties>
+         <license.ignoreMissingEmbeddedLicense>2.9.4</license.ignoreMissingEmbeddedLicense>
+         <license.ignoreMissingEmbeddedNotice>2.9.4</license.ignoreMissingEmbeddedNotice>
+         <license.ignoreLicenseOverride>2.9.4</license.ignoreLicenseOverride>
+       </properties>
+     </project>
+   </supplement>
+ 
 +  <!-- io.opencensus uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>io.opencensus</groupId>
 +      <artifactId>opencensus-contrib-resource-util</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.31.0</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.31.0</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.31.0</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- io.opencensus uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>io.opencensus</groupId>
 +      <artifactId>opencensus-exporter-metrics-util</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.31.0</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.31.0</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.31.0</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- io.opencensus uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>io.opencensus</groupId>
 +      <artifactId>opencensus-exporter-stats-stackdriver</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.31.0</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.31.0</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.31.0</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- io.opencensus uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>io.opencensus</groupId>
 +      <artifactId>opencensus-impl-core</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.31.0</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.31.0</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.31.0</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- io.opencensus uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>io.opencensus</groupId>
 +      <artifactId>opencensus-impl</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.31.0</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.31.0</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.31.0</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.cloud.bigdataoss uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.cloud.bigdataoss</groupId>
 +      <artifactId>gcs-connector</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>hadoop3-2.2.6</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>hadoop3-2.2.6</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>hadoop3-2.2.6</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.cloud.bigdataoss uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.cloud.bigdataoss</groupId>
 +      <artifactId>gcsio</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>2.2.6</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>2.2.6</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>2.2.6</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.cloud.bigdataoss uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.cloud.bigdataoss</groupId>
 +      <artifactId>util-hadoop</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>hadoop3-2.2.6</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>hadoop3-2.2.6</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>hadoop3-2.2.6</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.cloud.bigdataoss uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.cloud.bigdataoss</groupId>
 +      <artifactId>util</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>2.2.6</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>2.2.6</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>2.2.6</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.flogger uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.flogger</groupId>
 +      <artifactId>flogger</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.7.1</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.7.1</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.7.1</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.flogger uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.flogger</groupId>
 +      <artifactId>google-extensions</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.7.1</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.7.1</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.7.1</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.flogger uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.flogger</groupId>
 +      <artifactId>flogger-system-backend</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.7.1</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.7.1</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.7.1</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.api.grpc uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.api.grpc</groupId>
 +      <artifactId>proto-google-cloud-monitoring-v3</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>1.64.0</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>1.64.0</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>1.64.0</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
-   <!-- com.google.api.grpc uses ALv2 with no NOTICE file -->
-   <supplement>
-     <project>
-       <groupId>com.google.api.grpc</groupId>
-       <artifactId>grpc-google-cloud-storage-v2</artifactId>
-       <properties>
-         <license.ignoreMissingEmbeddedLicense>2.2.2-alpha</license.ignoreMissingEmbeddedLicense>
-         <license.ignoreMissingEmbeddedNotice>2.2.2-alpha</license.ignoreMissingEmbeddedNotice>
-         <license.ignoreLicenseOverride>2.2.2-alpha</license.ignoreLicenseOverride>
-       </properties>
-     </project>
-   </supplement>
- 
-   <!-- com.google.api.grpc uses ALv2 with no NOTICE file -->
-   <supplement>
-     <project>
-       <groupId>com.google.api.grpc</groupId>
-       <artifactId>proto-google-cloud-storage-v2</artifactId>
-       <properties>
-         <license.ignoreMissingEmbeddedLicense>2.2.2-alpha</license.ignoreMissingEmbeddedLicense>
-         <license.ignoreMissingEmbeddedNotice>2.2.2-alpha</license.ignoreMissingEmbeddedNotice>
-         <license.ignoreLicenseOverride>2.2.2-alpha</license.ignoreLicenseOverride>
-       </properties>
-     </project>
-   </supplement>
- 
 +  <!-- com.lmax uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.lmax</groupId>
 +      <artifactId>disruptor</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>3.4.2</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>3.4.2</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>3.4.2</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
-   <!-- com.google.cloud uses ALv2 with no NOTICE file -->
-   <supplement>
-     <project>
-       <groupId>com.google.cloud</groupId>
-       <artifactId>google-cloud-core-grpc</artifactId>
-       <properties>
-         <license.ignoreMissingEmbeddedLicense>1.82.0</license.ignoreMissingEmbeddedLicense>
-         <license.ignoreMissingEmbeddedNotice>1.82.0</license.ignoreMissingEmbeddedNotice>
-         <license.ignoreLicenseOverride>1.82.0</license.ignoreLicenseOverride>
-       </properties>
-     </project>
-   </supplement>
- 
 +  <!-- com.google.cloud uses ALv2 with no NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.cloud</groupId>
 +      <artifactId>google-cloud-monitoring</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>1.82.0</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>1.82.0</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>1.82.0</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
 +  <!-- com.google.api-client uses ALv2 LICENSE and has a NOTICE file -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.api-client</groupId>
 +      <artifactId>google-api-client-jackson2</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>1.32.2</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>1.32.2</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>1.32.2</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
-   <!-- org.conscrypt uses ALv2 LICENSE and has a NOTICE file -->
-   <supplement>
-     <project>
-       <groupId>org.conscrypt</groupId>
-       <artifactId>conscrypt-openjdk-uber</artifactId>
-       <properties>
-         <license.ignoreMissingEmbeddedLicense>2.5.1</license.ignoreMissingEmbeddedLicense>
-         <license.ignoreMissingEmbeddedNotice>2.5.1</license.ignoreMissingEmbeddedNotice>
-         <license.ignoreLicenseOverride>2.5.1</license.ignoreLicenseOverride>
-       </properties>
-     </project>
-   </supplement>
- 
 +  <!-- io.perfmark uses ALv2 license -->
 +  <supplement>
 +    <project>
 +      <groupId>io.perfmark</groupId>
 +      <artifactId>perfmark-api</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>0.23.0</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>0.23.0</license.ignoreMissingEmbeddedNotice>
 +        <license.ignoreLicenseOverride>0.23.0</license.ignoreLicenseOverride>
 +      </properties>
 +    </project>
 +  </supplement>
 +
-   <!-- org.codehaus.mojo:animal-sniffer-annotations uses MIT license -->
-   <supplement>
-     <project>
-       <groupId>org.codehaus.mojo</groupId>
-       <artifactId>animal-sniffer-annotations</artifactId>
-       <properties>
-         <license.ignoreMissingEmbeddedLicense>1.19</license.ignoreMissingEmbeddedLicense>
-         <license.ignoreMissingEmbeddedNotice>1.19</license.ignoreMissingEmbeddedNotice>
-       </properties>
-     </project>
-   </supplement>
- 
 +  <!-- com.google.apis:google-api-services-iamcredentials has embedded ASLv2 in pom.xml -->
 +  <supplement>
 +    <project>
 +      <groupId>com.google.apis</groupId>
 +      <artifactId>google-api-services-iamcredentials</artifactId>
 +      <properties>
 +        <license.ignoreMissingEmbeddedLicense>v1-rev20210326-1.32.1</license.ignoreMissingEmbeddedLicense>
 +        <license.ignoreMissingEmbeddedNotice>v1-rev20210326-1.32.1</license.ignoreMissingEmbeddedNotice>
 +      </properties>
 +    </project>
 +  </supplement>
 +
-   <!-- com.google.apis:google-api-services-iamcredentials has embedded ASLv2 in pom.xml -->
-   <supplement>
-     <project>
-       <groupId>com.google.api</groupId>
-       <artifactId>gax-grpc</artifactId>
-       <properties>
-         <license.ignoreMissingEmbeddedLicense>2.7.1</license.ignoreMissingEmbeddedLicense>
-         <license.ignoreMissingEmbeddedNotice>2.7.1</license.ignoreMissingEmbeddedNotice>
-         <license.ignoreLicenseOverride>2.7.1</license.ignoreLicenseOverride>
-       </properties>
-     </project>
-   </supplement>
- 
    <!-- com.google.cloud:google-cloud-core is non-fixed ALv2 with no NOTICE file -->
    <supplement>
      <project>
@@@ -1631,9 -1436,9 +1720,10 @@@
        <groupId>io.grpc</groupId>
        <artifactId>grpc-api</artifactId>
        <properties>
-         <license.ignoreMissingEmbeddedLicense>1.43.2</license.ignoreMissingEmbeddedLicense>
-         <license.ignoreMissingEmbeddedNotice>1.43.2</license.ignoreMissingEmbeddedNotice>
-         <license.ignoreLicenseOverride>1.43.2</license.ignoreLicenseOverride>
 -        <license.ignoreMissingEmbeddedLicense>1.52.1</license.ignoreMissingEmbeddedLicense>
 -        <license.ignoreMissingEmbeddedNotice>1.52.1</license.ignoreMissingEmbeddedNotice>
 -        <license.ignoreLicenseOverride>1.52.1</license.ignoreLicenseOverride>
++        <license.ignoreMissingEmbeddedLicense>1.43.2,1.52.1</license.ignoreMissingEmbeddedLicense>
++        <license.ignoreMissingEmbeddedNotice>1.43.2,1.52.1</license.ignoreMissingEmbeddedNotice>
++        <license.ignoreLicenseOverride>1.43.2,1.52.1</license.ignoreLicenseOverride>
++        <license.ignoreNoticeOverride>1.43.2</license.ignoreNoticeOverride>
        </properties>
      </project>
    </supplement>
diff --cc hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
index b35c5ff29e,5f80165fed..04f5fe8ce2
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
@@@ -643,7 -621,13 +640,17 @@@ public class OptimizedHybridHashJoin 
          this.isReversed = reversed;
      }
  
+     private void logTupleInsertionFailure(int tid, int pid, int numFrames, int partitionFrameLimit) {
+         int recordSize = VPartitionTupleBufferManager.calculateActualSize(null, accessorBuild.getTupleLength(tid));
+         String details = String.format(
+                 "partition %s, tuple size %s, needed # frames %s, partition frame limit %s, join "
+                         + "memory in frames %s, initial frame size %s",
+                 pid, recordSize, numFrames, partitionFrameLimit, memSizeInFrames, jobletCtx.getInitialFrameSize());
+         LOGGER.debug("can't insert tuple in join memory. {}", details);
+         LOGGER.debug("partitions status:\n{}", spillPolicy.partitionsStatus());
+     }
++
 +    public void setOperatorStats(IOperatorStats stats) {
 +        this.stats = stats;
 +    }
  }