[NO ISSUE][RT] Skip appending empty frames in Primary/SecondaryUpsertOperator
- user model changes: no
- storage format changes: no
- interface changes: no
Change-Id: I99cf5326044570002b6c4ccf5316d97e546401b6
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17787
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Michael Blow <mblow@apache.org>
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
index 1e7f4b7..3b8ee68 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
@@ -282,7 +282,9 @@
@Override
public void frameCompleted() throws HyracksDataException {
- appender.write(writer, true);
+ if (appender.getTupleCount() > 0) {
+ appender.write(writer, true);
+ }
callback.frameCompleted();
}
@@ -404,7 +406,9 @@
*/
@Override
public void flushPartialFrame() throws HyracksDataException {
- appender.write(writer, true);
+ if (appender.getTupleCount() > 0) {
+ appender.write(writer, true);
+ }
}
protected void appendFilterToPrevTuple() throws IOException {
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
index 955d5aa..eb4e46a 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java
@@ -152,4 +152,9 @@
}
return false;
}
+
+ @Override
+ public void flush() throws HyracksDataException {
+ // No op since nextFrame flushes by default
+ }
}