[NO ISSUE][RT] Always write frame on flush
authorMurtadha Hubail <mhubail@apache.org>
Thu, 3 Sep 2020 09:55:11 +0000 (12:55 +0300)
committerMurtadha Hubail <mhubail@apache.org>
Thu, 3 Sep 2020 18:21:08 +0000 (18:21 +0000)
commit0e3f06c86412801c9fa02bbf099620693e97df9c
tree4536f10b2a7d845af10c115ddcd013e267add0cb
parent7656403a971e368bc432ed5fd518ed041bb61868
[NO ISSUE][RT] Always write frame on flush

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

Details:

- When flush is called on a frame appender, always push
  the frame to the next writer even if the frame has no
  tuples. This gives each operator a chance to perform
  any non-tuple related operations even if the frame is
  empty.
- Update operators to properly handle empty frames.
- Add test case for join with empty dataset.

Change-Id: I269c3a532e2327d83e22e7276db3856d371f7105
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/7764
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
17 files changed:
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.1.ddl.sqlpp [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.2.update.sqlpp [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.3.query.sqlpp [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.4.query.sqlpp [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.5.query.sqlpp [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/join-with-empty-dataset/join-with-empty-dataset.6.query.sqlpp [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.03.adm [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.04.adm [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.05.adm [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/results/join/join-with-empty-dataset/join-with-empty-dataset.06.adm [new file with mode: 0644]
asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java
hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java
hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java
hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java
hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java