[ASTERIXDB-3559][COMP] Add output document size at each operator in explain plan

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

Details:
Explain plans currently display cardinality, operator cost, and total cost at each
operator in the explain plan.

This patch adds the output document size to the above parameters to each operator in
the explain plan.

Ext-ref: MB-65102

Change-Id: I6a3e8ec8b904b34b96a055b19cd5e826246bd7a0
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19392
Reviewed-by: Vijay Sarathy <vijay.sarathy@couchbase.com>
Reviewed-by: Ian Maxon <imaxon@apache.org>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Ian Maxon <imaxon@apache.org>
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
index 0861c01..3588fd4 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
@@ -1129,6 +1129,10 @@
             return;
         op.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_CARDINALITY,
                 (double) Math.round(plan.getJoinNode().getCardinality() * 100) / 100);
+        op.getAnnotations().put(OperatorAnnotations.OP_INPUT_DOCSIZE,
+                (double) Math.round(plan.getJoinNode().getInputSize() * 100) / 100);
+        op.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_DOCSIZE,
+                (double) Math.round(plan.getJoinNode().getOutputSize() * 100) / 100);
         op.getAnnotations().put(OperatorAnnotations.OP_COST_TOTAL,
                 (double) Math.round(plan.computeTotalCost() * 100) / 100);
         if (plan.IsScanNode()) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java
index 4874417..1e70fa7 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java
@@ -21,7 +21,6 @@
 import java.util.Map;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
 import org.apache.hyracks.algebricks.core.algebra.base.OperatorAnnotations;
@@ -66,330 +65,387 @@
 /**
  * A visitor that annotates an operator with its estimated cardinality and estimated cost.
  */
-public class EstimatedCostComputationVisitor implements ILogicalOperatorVisitor<Pair<Double, Double>, Double> {
+public class EstimatedCostComputationVisitor
+        implements ILogicalOperatorVisitor<EstimatedCostComputationVisitor.CardSizeCost, Double> {
 
     public EstimatedCostComputationVisitor() {
     }
 
     @Override
-    public Pair<Double, Double> visitAggregateOperator(AggregateOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitRunningAggregateOperator(RunningAggregateOperator op, Double arg)
+    public EstimatedCostComputationVisitor.CardSizeCost visitAggregateOperator(AggregateOperator op, Double arg)
             throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op, Double arg)
-            throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitRunningAggregateOperator(RunningAggregateOperator op,
+            Double arg) throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op,
+            Double arg) throws AlgebricksException {
         // Empty tuple source operator sends an empty tuple to downstream operators.
-        return new Pair<>(0.0, 0.0);
+        return new EstimatedCostComputationVisitor.CardSizeCost(0.0, 0.0, 0.0);
     }
 
     @Override
-    public Pair<Double, Double> visitGroupByOperator(GroupByOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitGroupByOperator(GroupByOperator op, Double arg)
+            throws AlgebricksException {
 
         return annotateGroupByDistinct(op, arg);
     }
 
-    private Pair<Double, Double> annotateGroupByDistinct(ILogicalOperator op, Double arg) throws AlgebricksException {
+    private EstimatedCostComputationVisitor.CardSizeCost annotateGroupByDistinct(ILogicalOperator op, Double arg)
+            throws AlgebricksException {
         double groupByDistinctCost = 0.0;
-        Pair<Double, Double> cardCost = op.getInputs().get(0).getValue().accept(this, arg);
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost =
+                op.getInputs().getFirst().getValue().accept(this, arg);
 
         for (Map.Entry<String, Object> anno : op.getAnnotations().entrySet()) {
             if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_CARDINALITY)) {
-                cardCost.setFirst((Double) anno.getValue());
+                cardSizeCost.setCard((Double) anno.getValue());
             }
             if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_COST_LOCAL)) {
                 groupByDistinctCost = (double) anno.getValue();
             }
         }
-        double totalCost = cardCost.getSecond() + groupByDistinctCost;
-        op.getAnnotations().put(OperatorAnnotations.OP_COST_TOTAL, (double) Math.round(totalCost * 100) / 100);
-        cardCost.setSecond(totalCost);
 
-        return cardCost;
+        double totalCost = cardSizeCost.getCost() + groupByDistinctCost;
+        cardSizeCost.setCost(totalCost);
+        annotateOp(op, cardSizeCost);
+
+        return cardSizeCost;
     }
 
     @Override
-    public Pair<Double, Double> visitLimitOperator(LimitOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitLimitOperator(LimitOperator op, Double arg)
+            throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitInnerJoinOperator(InnerJoinOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitInnerJoinOperator(InnerJoinOperator op, Double arg)
+            throws AlgebricksException {
         return visitInnerJoin(op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitLeftOuterJoinOperator(LeftOuterJoinOperator op, Double arg)
+    public EstimatedCostComputationVisitor.CardSizeCost visitLeftOuterJoinOperator(LeftOuterJoinOperator op, Double arg)
             throws AlgebricksException {
         return visitLeftOuterUnnest(op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitNestedTupleSourceOperator(NestedTupleSourceOperator op, Double arg)
-            throws AlgebricksException {
-        Pair<Double, Double> cardCost = annotate(this, op, arg);
-        return op.getDataSourceReference().getValue().getOperatorTag() == LogicalOperatorTag.SUBPLAN ? cardCost
-                : new Pair<>(0.0, 0.0);
+    public EstimatedCostComputationVisitor.CardSizeCost visitNestedTupleSourceOperator(NestedTupleSourceOperator op,
+            Double arg) throws AlgebricksException {
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost = annotate(this, op, arg);
+        return op.getDataSourceReference().getValue().getOperatorTag() == LogicalOperatorTag.SUBPLAN ? cardSizeCost
+                : new EstimatedCostComputationVisitor.CardSizeCost(0.0, 0.0, 0.0);
     }
 
     @Override
-    public Pair<Double, Double> visitOrderOperator(OrderOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitOrderOperator(OrderOperator op, Double arg)
+            throws AlgebricksException {
         double orderCost = 0.0;
-        Pair<Double, Double> cardCost = op.getInputs().get(0).getValue().accept(this, arg);
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost =
+                op.getInputs().getFirst().getValue().accept(this, arg);
 
         for (Map.Entry<String, Object> anno : op.getAnnotations().entrySet()) {
             if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_COST_LOCAL)) {
                 orderCost = (double) anno.getValue();
             }
         }
-        double totalCost = cardCost.getSecond() + orderCost;
+
+        double totalCost = cardSizeCost.getCost() + orderCost;
         op.getAnnotations().put(OperatorAnnotations.OP_COST_TOTAL, (double) Math.round(totalCost * 100) / 100);
-        op.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_CARDINALITY,
-                (double) Math.round(cardCost.getFirst() * 100) / 100);
-        cardCost.setSecond(totalCost);
+        cardSizeCost.setCost(totalCost);
+        annotateOp(op, cardSizeCost);
 
-        return cardCost;
+        return cardSizeCost;
     }
 
     @Override
-    public Pair<Double, Double> visitAssignOperator(AssignOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitWindowOperator(WindowOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitSelectOperator(SelectOperator op, Double arg) throws AlgebricksException {
-        Pair<Double, Double> cardCost = op.getInputs().get(0).getValue().accept(this, arg);
-        for (Map.Entry<String, Object> anno : op.getAnnotations().entrySet()) {
-            if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_CARDINALITY)) {
-                cardCost.setFirst((Double) anno.getValue());
-            } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_COST_TOTAL)) {
-                cardCost.setSecond((Double) anno.getValue());
-            }
-        }
-
-        return cardCost;
-    }
-
-    @Override
-    public Pair<Double, Double> visitDelegateOperator(DelegateOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitProjectOperator(ProjectOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitReplicateOperator(ReplicateOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitSplitOperator(SplitOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitSwitchOperator(SwitchOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitMaterializeOperator(MaterializeOperator op, Double arg)
+    public EstimatedCostComputationVisitor.CardSizeCost visitAssignOperator(AssignOperator op, Double arg)
             throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitScriptOperator(ScriptOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitWindowOperator(WindowOperator op, Double arg)
+            throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitSubplanOperator(SubplanOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitSelectOperator(SelectOperator op, Double arg)
+            throws AlgebricksException {
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost =
+                op.getInputs().getFirst().getValue().accept(this, arg);
+        for (Map.Entry<String, Object> anno : op.getAnnotations().entrySet()) {
+            if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_CARDINALITY)) {
+                cardSizeCost.setCard((Double) anno.getValue());
+            } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_COST_TOTAL)) {
+                cardSizeCost.setCost((Double) anno.getValue());
+            }
+        }
+
+        annotateOp(op, cardSizeCost);
+        return cardSizeCost;
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitDelegateOperator(DelegateOperator op, Double arg)
+            throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitSinkOperator(SinkOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitProjectOperator(ProjectOperator op, Double arg)
+            throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitUnionOperator(UnionAllOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitReplicateOperator(ReplicateOperator op, Double arg)
+            throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitSplitOperator(SplitOperator op, Double arg)
+            throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitSwitchOperator(SwitchOperator op, Double arg)
+            throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitMaterializeOperator(MaterializeOperator op, Double arg)
+            throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitScriptOperator(ScriptOperator op, Double arg)
+            throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitSubplanOperator(SubplanOperator op, Double arg)
+            throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitSinkOperator(SinkOperator op, Double arg)
+            throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitUnionOperator(UnionAllOperator op, Double arg)
+            throws AlgebricksException {
         // Needs more work.
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitUnnestOperator(UnnestOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitUnnestOperator(UnnestOperator op, Double arg)
+            throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitLeftOuterUnnestOperator(LeftOuterUnnestOperator op, Double arg)
-            throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitLeftOuterUnnestOperator(LeftOuterUnnestOperator op,
+            Double arg) throws AlgebricksException {
         return visitLeftOuterUnnest(op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitUnnestMapOperator(UnnestMapOperator op, Double arg) throws AlgebricksException {
-        Pair<Double, Double> cardCost = new Pair<>(0.0, 0.0);
+    public EstimatedCostComputationVisitor.CardSizeCost visitUnnestMapOperator(UnnestMapOperator op, Double arg)
+            throws AlgebricksException {
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost =
+                new EstimatedCostComputationVisitor.CardSizeCost(0.0, 0.0, 0.0);
 
         for (Map.Entry<String, Object> anno : op.getAnnotations().entrySet()) {
             if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_CARDINALITY)) {
-                cardCost.setFirst((Double) anno.getValue());
+                cardSizeCost.setCard((Double) anno.getValue());
+            } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_DOCSIZE)) {
+                cardSizeCost.setSize((Double) anno.getValue());
             } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_COST_TOTAL)) {
-                cardCost.setSecond((Double) anno.getValue());
+                cardSizeCost.setCost((Double) anno.getValue());
             }
         }
 
-        return cardCost;
+        annotateOp(op, cardSizeCost);
+        return cardSizeCost;
     }
 
     @Override
-    public Pair<Double, Double> visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Double arg)
-            throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op,
+            Double arg) throws AlgebricksException {
         return visitLeftOuterUnnest(op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitDataScanOperator(DataSourceScanOperator op, Double arg)
+    public EstimatedCostComputationVisitor.CardSizeCost visitDataScanOperator(DataSourceScanOperator op, Double arg)
             throws AlgebricksException {
-        Pair<Double, Double> cardCost = new Pair<>(0.0, 0.0);
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost =
+                new EstimatedCostComputationVisitor.CardSizeCost(0.0, 0.0, 0.0);
 
         for (Map.Entry<String, Object> anno : op.getAnnotations().entrySet()) {
             if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_CARDINALITY)) {
                 if (op.getSelectCondition() != null) {
-                    cardCost.setFirst((Double) anno.getValue());
+                    cardSizeCost.setCard((Double) anno.getValue());
                 }
             } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_INPUT_CARDINALITY)) {
                 if (op.getSelectCondition() == null) {
-                    cardCost.setFirst((Double) anno.getValue());
+                    cardSizeCost.setCard((Double) anno.getValue());
                 }
+            } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_DOCSIZE)) {
+                cardSizeCost.setSize((Double) anno.getValue());
             } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_COST_TOTAL)) {
-                cardCost.setSecond((Double) anno.getValue());
+                cardSizeCost.setCost((Double) anno.getValue());
             }
         }
 
-        return cardCost;
+        annotateOp(op, cardSizeCost);
+        return cardSizeCost;
     }
 
     @Override
-    public Pair<Double, Double> visitDistinctOperator(DistinctOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitDistinctOperator(DistinctOperator op, Double arg)
+            throws AlgebricksException {
 
         return annotateGroupByDistinct(op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitExchangeOperator(ExchangeOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitExchangeOperator(ExchangeOperator op, Double arg)
+            throws AlgebricksException {
         double exchCost = 0;
         if (arg != null) {
             exchCost = arg;
         }
 
-        Pair<Double, Double> cardCost = op.getInputs().get(0).getValue().accept(this, arg);
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost =
+                op.getInputs().getFirst().getValue().accept(this, arg);
         if (exchCost != 0) {
             op.getAnnotations().put(OperatorAnnotations.OP_COST_LOCAL, (double) Math.round(exchCost * 100) / 100);
             op.getAnnotations().put(OperatorAnnotations.OP_COST_TOTAL,
-                    (double) Math.round((exchCost + cardCost.getSecond()) * 100) / 100);
+                    (double) Math.round((exchCost + cardSizeCost.getCost()) * 100) / 100);
         } else {
             op.getAnnotations().put(OperatorAnnotations.OP_COST_LOCAL, 0.0);
             op.getAnnotations().put(OperatorAnnotations.OP_COST_TOTAL,
-                    (double) Math.round(cardCost.getSecond() * 100) / 100);
+                    (double) Math.round(cardSizeCost.getCost() * 100) / 100);
         }
         op.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_CARDINALITY,
-                (double) Math.round(cardCost.getFirst() * 100) / 100);
-        return cardCost;
+                (double) Math.round(cardSizeCost.getCard() * 100) / 100);
+        op.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_DOCSIZE,
+                (double) Math.round(cardSizeCost.getSize() * 100) / 100);
+
+        annotateOp(op, cardSizeCost);
+        return cardSizeCost;
     }
 
     @Override
-    public Pair<Double, Double> visitWriteOperator(WriteOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitDistributeResultOperator(DistributeResultOperator op, Double arg)
+    public EstimatedCostComputationVisitor.CardSizeCost visitWriteOperator(WriteOperator op, Double arg)
             throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Double arg)
+    public EstimatedCostComputationVisitor.CardSizeCost visitDistributeResultOperator(DistributeResultOperator op,
+            Double arg) throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op,
+            Double arg) throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitIndexInsertDeleteUpsertOperator(
+            IndexInsertDeleteUpsertOperator op, Double arg) throws AlgebricksException {
+        return annotate(this, op, arg);
+    }
+
+    @Override
+    public EstimatedCostComputationVisitor.CardSizeCost visitTokenizeOperator(TokenizeOperator op, Double arg)
             throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, Double arg)
+    public EstimatedCostComputationVisitor.CardSizeCost visitForwardOperator(ForwardOperator op, Double arg)
             throws AlgebricksException {
         return annotate(this, op, arg);
     }
 
     @Override
-    public Pair<Double, Double> visitTokenizeOperator(TokenizeOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitForwardOperator(ForwardOperator op, Double arg) throws AlgebricksException {
-        return annotate(this, op, arg);
-    }
-
-    @Override
-    public Pair<Double, Double> visitIntersectOperator(IntersectOperator op, Double arg) throws AlgebricksException {
+    public EstimatedCostComputationVisitor.CardSizeCost visitIntersectOperator(IntersectOperator op, Double arg)
+            throws AlgebricksException {
         // Needs more work.
         return annotate(this, op, arg);
     }
 
-    private static Pair<Double, Double> annotate(EstimatedCostComputationVisitor visitor, ILogicalOperator op,
-            Double arg) throws AlgebricksException {
-        if (op.getInputs().isEmpty()) {
-            return new Pair<>(0.0, 0.0);
-        }
-        Pair<Double, Double> cardCost = op.getInputs().get(0).getValue().accept(visitor, arg);
+    private void annotateOp(ILogicalOperator op, EstimatedCostComputationVisitor.CardSizeCost cardSizeCost) {
         op.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_CARDINALITY,
-                (double) Math.round(cardCost.getFirst() * 100) / 100);
+                (double) Math.round(cardSizeCost.getCard() * 100) / 100);
+        op.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_DOCSIZE,
+                (double) Math.round(cardSizeCost.getSize() * 100) / 100);
         op.getAnnotations().put(OperatorAnnotations.OP_COST_TOTAL,
-                (double) Math.round(cardCost.getSecond() * 100) / 100);
+                (double) Math.round(cardSizeCost.getCost() * 100) / 100);
         op.getAnnotations().put(OperatorAnnotations.OP_COST_LOCAL, 0.0);
-        return cardCost;
+    }
+
+    private EstimatedCostComputationVisitor.CardSizeCost annotate(EstimatedCostComputationVisitor visitor,
+            ILogicalOperator op, Double arg) throws AlgebricksException {
+        if (op.getInputs().isEmpty()) {
+            return new EstimatedCostComputationVisitor.CardSizeCost(0.0, 0.0, 0.0);
+        }
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost =
+                op.getInputs().getFirst().getValue().accept(visitor, arg);
+        annotateOp(op, cardSizeCost);
+
+        return cardSizeCost;
     }
 
     // Visits an operator that has the left outer semantics, e.g.,
     // left outer join, left outer unnest, left outer unnest map.
-    private Pair<Double, Double> visitLeftOuterUnnest(ILogicalOperator operator, Double arg)
+    private EstimatedCostComputationVisitor.CardSizeCost visitLeftOuterUnnest(ILogicalOperator operator, Double arg)
             throws AlgebricksException {
         // Needs more work.
-        return operator.getInputs().get(0).getValue().accept(this, arg);
+        return operator.getInputs().getFirst().getValue().accept(this, arg);
     }
 
     // Visits an inner join operator.
-    private Pair<Double, Double> visitInnerJoin(InnerJoinOperator joinOperator, Double arg) throws AlgebricksException {
-        Pair<Double, Double> cardCost = new Pair<>(0.0, 0.0);
+    private EstimatedCostComputationVisitor.CardSizeCost visitInnerJoin(InnerJoinOperator joinOperator, Double arg)
+            throws AlgebricksException {
+        EstimatedCostComputationVisitor.CardSizeCost cardSizeCost =
+                new EstimatedCostComputationVisitor.CardSizeCost(0.0, 0.0, 0.0);
 
-        ILogicalOperator left = joinOperator.getInputs().get(0).getValue();
+        ILogicalOperator left = joinOperator.getInputs().getFirst().getValue();
         ILogicalOperator right = joinOperator.getInputs().get(1).getValue();
         double leftExchangeCost = 0;
         double rightExchangeCost = 0;
 
         for (Map.Entry<String, Object> anno : joinOperator.getAnnotations().entrySet()) {
             if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_CARDINALITY)) {
-                cardCost.setFirst((Double) anno.getValue());
+                cardSizeCost.setCard((Double) anno.getValue());
+            } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_DOCSIZE)) {
+                cardSizeCost.setSize((Double) anno.getValue());
             } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_COST_TOTAL)) {
-                cardCost.setSecond((Double) anno.getValue());
+                cardSizeCost.setCost((Double) anno.getValue());
             } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_LEFT_EXCHANGE_COST)) {
                 leftExchangeCost = (double) anno.getValue();
             } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_RIGHT_EXCHANGE_COST)) {
@@ -401,6 +457,43 @@
         left.accept(this, leftExchangeCost);
         right.accept(this, rightExchangeCost);
 
-        return cardCost;
+        return cardSizeCost;
+    }
+
+    public static class CardSizeCost {
+
+        public double card;
+        public double size;
+        public double cost;
+
+        public CardSizeCost(double card, double size, double cost) {
+            this.card = card;
+            this.size = size;
+            this.cost = cost;
+        }
+
+        public double getCard() {
+            return card;
+        }
+
+        public double getSize() {
+            return size;
+        }
+
+        public double getCost() {
+            return cost;
+        }
+
+        public void setCard(double card) {
+            this.card = card;
+        }
+
+        public void setSize(double size) {
+            this.size = size;
+        }
+
+        public void setCost(double cost) {
+            this.cost = cost;
+        }
     }
 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/count_dataset/count_dataset.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/count_dataset/count_dataset.1.plan
index d0efadf..6ddc07f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/count_dataset/count_dataset.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate-sql/count_dataset/count_dataset.1.plan
@@ -1,26 +1,26 @@
-distribute result [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$26] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$26] <- [agg-sql-sum($$29)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$26] <- [agg-sql-sum($$29)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      aggregate [$$29] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$29] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-          order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$27) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/count_dataset/count_dataset.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/count_dataset/count_dataset.1.plan
index cc00b25..01e3461 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/count_dataset/count_dataset.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/aggregate/count_dataset/count_dataset.1.plan
@@ -1,26 +1,26 @@
-distribute result [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$26] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$26] <- [agg-sum($$29)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$26] <- [agg-sum($$29)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      aggregate [$$29] <- [agg-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$29] <- [agg-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-          order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$27) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/array_fun/array_remove/array_remove.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/array_fun/array_remove/array_remove.5.plan
index 5b6ddc1..b776713 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/array_fun/array_remove/array_remove.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/array_fun/array_remove/array_remove.5.plan
@@ -1,8 +1,8 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    unnest $$d <- scan-collection(ordered-list-constructor({"id": 1, "t1": array-remove(ordered-list-constructor(1, 2, 3, ordered-list-constructor(9, 8), ordered-list-constructor("str1", "str2"), ordered-list-constructor(90, 100)), array: [ 9, 8 ], array: [ 90, 100 ])}, {"id": 2, "t2": cast(array: [ array: [ 5, 1, 2 ], array: [ 90, 100 ] ])}, {"id": 3, "t3": cast(array: [ { "id": 1, "age": 34 }, { "id": 3, "age": 90 } ])})) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    unnest $$d <- scan-collection(ordered-list-constructor({"id": 1, "t1": array-remove(ordered-list-constructor(1, 2, 3, ordered-list-constructor(9, 8), ordered-list-constructor("str1", "str2"), ordered-list-constructor(90, 100)), array: [ 9, 8 ], array: [ 90, 100 ])}, {"id": 2, "t2": cast(array: [ array: [ 5, 1, 2 ], array: [ 90, 100 ] ])}, {"id": 3, "t3": cast(array: [ { "id": 1, "age": 34 }, { "id": 3, "age": 90 } ])})) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- UNNEST  |UNPARTITIONED|
-      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.3.plan
index 5f3e48d..e627092 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.3.plan
@@ -1,46 +1,46 @@
-distribute result [$$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([$$35]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    distinct ([$$35]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        order (ASC, $$35) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$35) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$35(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$35]  |PARTITIONED|
-            assign [$$35] <- [{"l_linenumber": $$37, "l_partkey": $$43, "o_custkey": $$44}] project: [$$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$35] <- [{"l_linenumber": $$37, "l_partkey": $$43, "o_custkey": $$44}] project: [$$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$37, $$43, $$44]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$37, $$43, $$44]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$36, $$38)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$36, $$38)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$36][$$38]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$36]  |PARTITIONED|
-                      select (gt($$l.getField(4), 10)) project: [$$37, $$43, $$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (gt($$l.getField(4), 10)) project: [$$37, $$43, $$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        assign [$$43] <- [$$l.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$43] <- [$$l.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$36, $$37, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$36, $$37, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-                      assign [$$44] <- [$$o.getField(1)] project: [$$44, $$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$44] <- [$$o.getField(1)] project: [$$44, $$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$38, $$o] <- tpch.Orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$38, $$o] <- tpch.Orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.4.plan
index 7d72bad..5841453 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.4.plan
@@ -1,46 +1,46 @@
-distribute result [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([$$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    distinct ([$$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        order (ASC, $$34) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$34) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-            assign [$$34] <- [{"l_orderkey": $$36, "o_custkey": $$41}] project: [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$34] <- [{"l_orderkey": $$36, "o_custkey": $$41}] project: [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$36, $$41]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$36, $$41]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$36, $$38)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$36, $$38)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$36][$$38]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$36]  |PARTITIONED|
-                      select (gt($$l.getField(1), 5)) project: [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (gt($$l.getField(1), 5)) project: [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$36, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$36, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$36, $$37, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$36, $$37, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-                      assign [$$41] <- [$$o.getField(1)] project: [$$41, $$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$41] <- [$$o.getField(1)] project: [$$41, $$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$38, $$o] <- tpch.Orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$38, $$o] <- tpch.Orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.5.plan
index 94fc84c..2a3779e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.5.plan
@@ -1,80 +1,80 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$111]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_partkey := $$115; $$o_orderstatus := $$116; $$c_nationkey := $$117]) decor ([]) {
-                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$102; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$102, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$102, $$103, $$104]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$102, $$103, $$104]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$109, $$108)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$109, $$108)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$109]  |PARTITIONED|
-                          project ([$$102, $$103, $$109]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$102, $$103, $$109]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$105, $$107)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$105, $$107)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$105][$$107]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$105]  |PARTITIONED|
-                                  assign [$$102] <- [$$l.getField(1)] project: [$$102, $$105] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$102] <- [$$l.getField(1)] project: [$$102, $$105] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    project ([$$105, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$105, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$107]  |PARTITIONED|
-                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$109, $$107] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$109, $$107] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$108]  |PARTITIONED|
-                          assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.6.plan
index df823ed..7f0c73d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.6.plan
@@ -1,78 +1,78 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$111]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_linenumber := $$115; $$o_orderstatus := $$116; $$c_nationkey := $$117]) decor ([]) {
-                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$106; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$106, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$106, $$103, $$104]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$106, $$103, $$104]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$109, $$108)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$109, $$108)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$109]  |PARTITIONED|
-                          project ([$$106, $$103, $$109]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$106, $$103, $$109]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$105, $$107)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$105, $$107)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$105][$$107]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$105]  |PARTITIONED|
-                                  project ([$$106, $$105]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$106, $$105]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$107]  |PARTITIONED|
-                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$109, $$107] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$109, $$107] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$108]  |PARTITIONED|
-                          assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.7.plan
index a6db1e3..f543ca4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.7.plan
@@ -1,78 +1,78 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$111]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_linenumber := $$115; $$c_nationkey := $$116; $$o_orderstatus := $$117]) decor ([]) {
-                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$106; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$106, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$106, $$103, $$104]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$106, $$103, $$104]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$109, $$108)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$109, $$108)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$109]  |PARTITIONED|
-                          project ([$$106, $$104, $$109]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$106, $$104, $$109]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$105, $$107)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$105, $$107)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$105][$$107]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$105]  |PARTITIONED|
-                                  project ([$$106, $$105]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$106, $$105]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$107]  |PARTITIONED|
-                                  assign [$$104, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$104, $$109, $$107] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$104, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$104, $$109, $$107] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$108]  |PARTITIONED|
-                          assign [$$103] <- [$$c.getField(3)] project: [$$103, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$103] <- [$$c.getField(3)] project: [$$103, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.8.plan
index 83ac5aa..107f5be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.8.plan
@@ -1,120 +1,120 @@
-distribute result [$$119] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$119] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$119] <- [{"n_name": $$n_name, "revenue": $$132}] project: [$$119] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$119] <- [{"n_name": $$n_name, "revenue": $$132}] project: [$$119] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$$n_name := $$142]) decor ([]) {
-                  aggregate [$$132] <- [agg-global-sql-sum($$141)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$132] <- [agg-global-sql-sum($$141)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$142]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$142]  |PARTITIONED|
             group by ([$$142 := $$120]) decor ([]) {
-                      aggregate [$$141] <- [agg-local-sql-sum(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$141] <- [agg-local-sql-sum(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$120]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$139, $$140, $$120]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$139, $$140, $$120]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (and(eq($$130, $$128), eq($$131, $$143))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    join (and(eq($$130, $$128), eq($$131, $$143))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HYBRID_HASH_JOIN [$$130, $$131][$$128, $$143]  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HASH_PARTITION_EXCHANGE [$$130, $$131]  |PARTITIONED|
-                        project ([$$139, $$140, $$130, $$131]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$139, $$140, $$130, $$131]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            join (eq($$133, $$127)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            join (eq($$133, $$127)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- HYBRID_HASH_JOIN [$$133][$$127]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$133]  |PARTITIONED|
-                                project ([$$139, $$140, $$131, $$133]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$139, $$140, $$131, $$133]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    join (eq($$125, $$124)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    join (eq($$125, $$124)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- HYBRID_HASH_JOIN [$$124][$$125]  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HASH_PARTITION_EXCHANGE [$$124]  |PARTITIONED|
-                                        project ([$$131, $$124]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        project ([$$131, $$124]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- STREAM_PROJECT  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            join (eq($$123, $$136)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            join (eq($$123, $$136)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- HYBRID_HASH_JOIN [$$123][$$136]  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HASH_PARTITION_EXCHANGE [$$123]  |PARTITIONED|
-                                                assign [$$131] <- [$$c.getField(3)] project: [$$131, $$123] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                assign [$$131] <- [$$c.getField(3)] project: [$$131, $$123] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ASSIGN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    data-scan []<-[$$123, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    data-scan []<-[$$123, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HASH_PARTITION_EXCHANGE [$$136]  |PARTITIONED|
-                                                select (and(lt($$121, "1994-01-01"), ge($$121, "1993-01-01"))) project: [$$124, $$136] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                select (and(lt($$121, "1994-01-01"), ge($$121, "1993-01-01"))) project: [$$124, $$136] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- STREAM_SELECT  |PARTITIONED|
-                                                  assign [$$136, $$121] <- [$$o.getField(1), $$o.getField(4)] project: [$$124, $$136, $$121] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$136, $$121] <- [$$o.getField(1), $$o.getField(4)] project: [$$124, $$136, $$121] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$124, $$o] <- tpch.Orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$124, $$o] <- tpch.Orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HASH_PARTITION_EXCHANGE [$$125]  |PARTITIONED|
-                                        assign [$$140, $$139, $$133] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$139, $$140, $$133, $$125] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$140, $$139, $$133] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$139, $$140, $$133, $$125] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          project ([$$125, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$125, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              data-scan []<-[$$125, $$126, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              data-scan []<-[$$125, $$126, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$127]  |PARTITIONED|
-                                assign [$$130] <- [$$s.getField(3)] project: [$$130, $$127] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$130] <- [$$s.getField(3)] project: [$$130, $$127] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$127, $$s] <- tpch.Supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    data-scan []<-[$$127, $$s] <- tpch.Supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HASH_PARTITION_EXCHANGE [$$128, $$143]  |PARTITIONED|
-                        assign [$$143, $$120] <- [$$128, $$n.getField(1)] project: [$$120, $$128, $$143] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$143, $$120] <- [$$128, $$n.getField(1)] project: [$$120, $$128, $$143] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$128, $$n] <- tpch.Nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$128, $$n] <- tpch.Nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
index dc9bef3..6b0bdd4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
@@ -1,42 +1,42 @@
-distribute result [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$51]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$51]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$o_custkey := $$54]) decor ([]) {
-                    aggregate [$$51] <- [agg-sql-sum($$53)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$51] <- [agg-sql-sum($$53)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$54]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$54]  |PARTITIONED|
               group by ([$$54 := $$49]) decor ([]) {
-                        aggregate [$$53] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$53] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$49]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$49] <- [$$o.getField(1)] project: [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$49] <- [$$o.getField(1)] project: [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$o]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$o]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$55] <- [2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$55] <- [2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
index 38c8af4..9b1b4dc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
@@ -1,42 +1,42 @@
-distribute result [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$51]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$51]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$o_orderdate := $$54]) decor ([]) {
-                    aggregate [$$51] <- [agg-sql-sum($$53)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$51] <- [agg-sql-sum($$53)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$54]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$54]  |PARTITIONED|
               group by ([$$54 := $$49]) decor ([]) {
-                        aggregate [$$53] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$53] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$49]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$49] <- [$$o.getField(4)] project: [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$49] <- [$$o.getField(4)] project: [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$o]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$o]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$55] <- [5] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$55] <- [5] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
index 68bc90e..a7b8c35 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
@@ -1,40 +1,40 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_orderkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$53]) decor ([]) {
-                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$53]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  select (and(gt($$l.getField(4), 10), gt($$l.getField(1), 1))) project: [$$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (and(gt($$l.getField(4), 10), gt($$l.getField(1), 1))) project: [$$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$53, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$53, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
index 9512646..6a9b282 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
@@ -1,38 +1,38 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_orderkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$53]) decor ([]) {
-                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$53]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  select (and(le($$54, 4), gt($$l.getField(4), 10))) project: [$$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (and(le($$54, 4), gt($$l.getField(4), 10))) project: [$$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
index 927d33d..cf894be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
@@ -1,42 +1,42 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_partkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$52]) decor ([]) {
-                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$52]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$52] <- [$$l.getField(1)] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$52] <- [$$l.getField(1)] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    select (and(gt($$53, 1), gt($$54, 4))) project: [$$l] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    select (and(gt($$53, 1), gt($$54, 4))) project: [$$l] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_SELECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$53, $$54, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", false, false, 2, $$60, $$61, 0, true, true, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$53, $$54, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", false, false, 2, $$60, $$61, 0, true, true, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$60, $$61] <- [1, 4] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$60, $$61] <- [1, 4] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.007.plan
index b1e3f8c..3a0042d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.007.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(gt($$19, "1"), lt($$19, "3"))) project: [$$d, $$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(gt($$19, "1"), lt($$19, "3"))) project: [$$d, $$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$d.getField("a")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$19] <- [$$d.getField("a")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$20, $$d] <- test.ColumnDataset filter on: and(gt($$d.getField("a"), "1"), lt($$d.getField("a"), "3")) range-filter on: and(gt($$d.getField("a"), "1"), lt($$d.getField("a"), "3")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$20, $$d] <- test.ColumnDataset filter on: and(gt($$d.getField("a"), "1"), lt($$d.getField("a"), "3")) range-filter on: and(gt($$d.getField("a"), "1"), lt($$d.getField("a"), "3")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.009.plan
index df0e7cd..a1e29c4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.009.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(gt($$19, 1), lt($$19, 3))) project: [$$d, $$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(gt($$19, 1), lt($$19, 3))) project: [$$d, $$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$d.getField("a")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$19] <- [$$d.getField("a")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$20, $$d] <- test.ColumnDataset filter on: and(gt($$d.getField("a"), 1), lt($$d.getField("a"), 3)) range-filter on: and(gt($$d.getField("a"), 1), lt($$d.getField("a"), 3)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$20, $$d] <- test.ColumnDataset filter on: and(gt($$d.getField("a"), 1), lt($$d.getField("a"), 3)) range-filter on: and(gt($$d.getField("a"), 1), lt($$d.getField("a"), 3)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.011.plan
index ab93b30..eb6e7b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.011.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$28, $$d, $$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (lt($$a, "100")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (lt($$a, "100")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), "100") range-filter on: lt(scan-collection($$d.getField("array")), "100") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), "100") range-filter on: lt(scan-collection($$d.getField("array")), "100") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.013.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.013.plan
index a62536b..fb9d50f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.013.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.013.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$28, $$d, $$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (lt($$a, 100)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (lt($$a, 100)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), 100) range-filter on: lt(scan-collection($$d.getField("array")), 100) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), 100) range-filter on: lt(scan-collection($$d.getField("array")), 100) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.015.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.015.plan
index 2700a41..bec5abf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.015.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.015.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$28, $$d, $$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$a, 100)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$a, 100)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: eq(scan-collection($$d.getField("array")), 100) range-filter on: eq(scan-collection($$d.getField("array")), 100) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: eq(scan-collection($$d.getField("array")), 100) range-filter on: eq(scan-collection($$d.getField("array")), 100) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.017.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.017.plan
index f16fc24..c215b86 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.017.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.017.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$28, $$d, $$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (lt($$a, 100.1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (lt($$a, 100.1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), 100.1) range-filter on: lt(scan-collection($$d.getField("array")), 100.1) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), 100.1) range-filter on: lt(scan-collection($$d.getField("array")), 100.1) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.019.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.019.plan
index aab321b..825afbb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.019.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.019.plan
@@ -1,26 +1,26 @@
-distribute result [$$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$item] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$item]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$item]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$29(ASC), $$item(ASC) ]  |PARTITIONED|
-        order (ASC, $$29) (ASC, $$item) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$29) (ASC, $$item) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$29(ASC), $$item(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(gt($$item, 60), lt($$item, 100))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(gt($$item, 60), lt($$item, 100))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$item <- scan-collection($$30) project: [$$29, $$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$item <- scan-collection($$30) project: [$$29, $$item] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$30] <- [$$d.getField("array")] project: [$$29, $$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$30] <- [$$d.getField("array")] project: [$$29, $$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$29, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: and(gt(scan-collection($$d.getField("array")), 60), lt(scan-collection($$d.getField("array")), 100)) range-filter on: and(gt(scan-collection($$d.getField("array")), 60), lt(scan-collection($$d.getField("array")), 100)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$29, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: and(gt(scan-collection($$d.getField("array")), 60), lt(scan-collection($$d.getField("array")), 100)) range-filter on: and(gt(scan-collection($$d.getField("array")), 60), lt(scan-collection($$d.getField("array")), 100)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.021.plan
index f759f48..4a18421 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.021.plan
@@ -1,26 +1,26 @@
-distribute result [$$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$item] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$item]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$item]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$27(ASC), $$item(ASC) ]  |PARTITIONED|
-        order (ASC, $$27) (ASC, $$item) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$27) (ASC, $$item) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$27(ASC), $$item(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$item, 100)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$item, 100)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$item <- scan-collection($$28) project: [$$27, $$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$item <- scan-collection($$28) project: [$$27, $$item] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$28] <- [$$d.getField("array")] project: [$$27, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$28] <- [$$d.getField("array")] project: [$$27, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: eq(scan-collection($$d.getField("array")), 100) range-filter on: eq(scan-collection($$d.getField("array")), 100) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$27, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: eq(scan-collection($$d.getField("array")), 100) range-filter on: eq(scan-collection($$d.getField("array")), 100) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.023.plan
index 9f4386d..0c4dbfb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.023.plan
@@ -1,26 +1,26 @@
-distribute result [$$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$item] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$item]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$item]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$27(ASC), $$item(ASC) ]  |PARTITIONED|
-        order (ASC, $$27) (ASC, $$item) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$27) (ASC, $$item) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$27(ASC), $$item(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (gt($$item, 10000)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (gt($$item, 10000)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$item <- scan-collection($$28) project: [$$27, $$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$item <- scan-collection($$28) project: [$$27, $$item] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$28] <- [$$d.getField("array")] project: [$$27, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$28] <- [$$d.getField("array")] project: [$$27, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: gt(scan-collection($$d.getField("array")), 10000) range-filter on: gt(scan-collection($$d.getField("array")), 10000) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$27, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: gt(scan-collection($$d.getField("array")), 10000) range-filter on: gt(scan-collection($$d.getField("array")), 10000) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan
index 4b9c6ab..bbb1321 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.025.plan
@@ -1,30 +1,30 @@
-distribute result [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"a": $$34, "item": $$item}] project: [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$31] <- [{"a": $$34, "item": $$item}] project: [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$34, $$item]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$34, $$item]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$35(ASC), $$34(ASC), $$item(ASC) ]  |PARTITIONED|
-          order (ASC, $$35) (ASC, $$34) (ASC, $$item) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$35) (ASC, $$34) (ASC, $$item) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$35(ASC), $$34(ASC), $$item(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (gt($$item, 10)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (gt($$item, 10)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                unnest $$item <- scan-collection($$36) project: [$$35, $$34, $$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                unnest $$item <- scan-collection($$36) project: [$$35, $$34, $$item] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- UNNEST  |PARTITIONED|
-                  select (eq($$34, "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (eq($$34, "1")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    assign [$$34, $$36] <- [$$d.getField("a"), $$d.getField("array")] project: [$$35, $$34, $$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$34, $$36] <- [$$d.getField("a"), $$d.getField("array")] project: [$$35, $$34, $$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$35, $$d] <- test.ColumnDataset project ({a:any,array:[any]}) filter on: and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10)) range-filter on: and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$35, $$d] <- test.ColumnDataset project ({a:any,array:[any]}) filter on: and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10)) range-filter on: and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.028.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.028.plan
index 09484f3..cc28ac7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.028.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/001/001.028.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$16(ASC) ]  |PARTITIONED|
-        order (ASC, $$16) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$16) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$16(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (neq(count($$d.getField("array")), 0)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (neq(count($$d.getField("array")), 0)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$16, $$d] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$16, $$d] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.006.plan
index df11815..fb58b38 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.006.plan
@@ -1,28 +1,28 @@
-distribute result [$$47] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$47] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$47] <- [{"$1": $$49}] project: [$$47] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$47] <- [{"$1": $$49}] project: [$$47] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$49] <- [agg-sql-sum($$51)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$49] <- [agg-sql-sum($$51)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (gt($$D, " ")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (gt($$D, " ")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$D <- scan-collection($$50) project: [$$D] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$D <- scan-collection($$50) project: [$$D] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$50] <- [$$C.getField("dates")] project: [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$50] <- [$$C.getField("dates")] project: [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$C]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$C]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$48, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: gt(scan-collection($$C.getField("dates")), " ") range-filter on: gt(scan-collection($$C.getField("dates")), " ") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$48, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: gt(scan-collection($$C.getField("dates")), " ") range-filter on: gt(scan-collection($$C.getField("dates")), " ") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.102.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.102.plan
index 72555d5..ea7d66a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.102.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.102.plan
@@ -1,28 +1,28 @@
-distribute result [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$48] <- [{"$1": $$50}] project: [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$48] <- [{"$1": $$50}] project: [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (eq(substring($$D, 0, 4), "2011")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(substring($$D, 0, 4), "2011")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$D <- scan-collection($$51) project: [$$D] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$D <- scan-collection($$51) project: [$$D] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$51] <- [$$C.getField("dates")] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$51] <- [$$C.getField("dates")] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$C]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$C]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$49, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$49, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.105.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.105.plan
index dbdd8f4..7a33977 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.105.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.105.plan
@@ -1,30 +1,30 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$51] <- [{"$1": $$54}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$54}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$54] <- [agg-sql-sum($$57)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$54] <- [agg-sql-sum($$57)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or(eq($$58, "2011"), eq($$58, "2016"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$58, "2011"), eq($$58, "2016"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$58] <- [substring($$D, 0, 4)] project: [$$58] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$58] <- [substring($$D, 0, 4)] project: [$$58] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                unnest $$D <- scan-collection($$55) project: [$$D] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                unnest $$D <- scan-collection($$55) project: [$$D] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- UNNEST  |PARTITIONED|
-                  assign [$$55] <- [$$C.getField("dates")] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$55] <- [$$C.getField("dates")] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$C]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$C]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$53, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$53, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.108.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.108.plan
index e3975f1..7a24223 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.108.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.108.plan
@@ -1,41 +1,41 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$52] <- [{"$1": $$55}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"$1": $$55}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select ($$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$45] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$45] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (or(eq($$59, "2011"), eq($$59, "2016"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (or(eq($$59, "2011"), eq($$59, "2016"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$59] <- [substring($$D, 0, 4)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$59] <- [substring($$D, 0, 4)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$D <- scan-collection($$56) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$D <- scan-collection($$56) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$56] <- [$$C.getField("dates")] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$56] <- [$$C.getField("dates")] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$C]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$C]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$54, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$54, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan
index eb99ff7..c5e404a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/004/004.113.plan
@@ -1,32 +1,32 @@
-distribute result [$$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$54] <- [{"$1": $$57}] project: [$$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$54] <- [{"$1": $$57}] project: [$$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$57] <- [agg-sql-sum($$61)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$57] <- [agg-sql-sum($$61)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$61] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$61] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or(eq($$62, "2011"), eq($$62, "2016"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$62, "2011"), eq($$62, "2016"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$62] <- [substring($$D, 0, 4)] project: [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$62] <- [substring($$D, 0, 4)] project: [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                unnest $$D <- scan-collection($$59) project: [$$D] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                unnest $$D <- scan-collection($$59) project: [$$D] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- UNNEST  |PARTITIONED|
-                  select (starts-with($$C.getField("business_id"), "-0")) project: [$$59] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (starts-with($$C.getField("business_id"), "-0")) project: [$$59] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    assign [$$59] <- [$$C.getField("dates")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$59] <- [$$C.getField("dates")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$C]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$C]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$56, $$C] <- TestYelp.YelpCheckin project ({dates:[any],business_id:any}) filter on: and(starts-with($$C.getField("business_id"), "-0"), or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$56, $$C] <- TestYelp.YelpCheckin project ({dates:[any],business_id:any}) filter on: and(starts-with($$C.getField("business_id"), "-0"), or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/005/005.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/005/005.008.plan
index 3a64cc9..b7d1a1d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/005/005.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/005/005.008.plan
@@ -1,28 +1,28 @@
-distribute result [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$48] <- [{"$1": $$50}] project: [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$48] <- [{"$1": $$50}] project: [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (gt(numeric-add($$D, 1), 2018)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (gt(numeric-add($$D, 1), 2018)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$D <- scan-collection($$51) project: [$$D] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$D <- scan-collection($$51) project: [$$D] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$51] <- [$$C.getField("dates")] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$51] <- [$$C.getField("dates")] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$C]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$C]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$49, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: gt(numeric-add(scan-collection($$C.getField("dates")), 1), 2018) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$49, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: gt(numeric-add(scan-collection($$C.getField("dates")), 1), 2018) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/005/005.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/005/005.011.plan
index 2f93b7c..e3d4d22 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/005/005.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/005/005.011.plan
@@ -1,28 +1,28 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$51] <- [{"$1": $$53}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$53}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$53] <- [agg-sql-sum($$55)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$53] <- [agg-sql-sum($$55)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$55] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$55] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or(gt(numeric-add($$D, 1), 2018), eq(substring($$D, 0, 4), "2011"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(gt(numeric-add($$D, 1), 2018), eq(substring($$D, 0, 4), "2011"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$D <- scan-collection($$54) project: [$$D] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$D <- scan-collection($$54) project: [$$D] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$54] <- [$$C.getField("dates")] project: [$$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$54] <- [$$C.getField("dates")] project: [$$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$C]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$C]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$52, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(gt(numeric-add(scan-collection($$C.getField("dates")), 1), 2018), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$52, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(gt(numeric-add(scan-collection($$C.getField("dates")), 1), 2018), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/006/006.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/006/006.010.plan
index f18bf14..1fb271e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/006/006.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/006/006.010.plan
@@ -1,41 +1,41 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$51] <- [{"$1": $$53}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$53}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$53] <- [agg-sql-sum($$57)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$53] <- [agg-sql-sum($$57)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select ($$44) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$44) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$44]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$44]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$55, array: [ 5.1 ])) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$55, array: [ 5.1 ])) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$55] <- [$$point.getField("lon")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$55] <- [$$point.getField("lon")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$point <- scan-collection($$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$point <- scan-collection($$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$54] <- [$$c.getField("geo").getField("coordinates")] project: [$$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$54] <- [$$c.getField("geo").getField("coordinates")] project: [$$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$52, $$c] <- test.ColumnDataset project ({geo:{coordinates:[{lon:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$52, $$c] <- test.ColumnDataset project ({geo:{coordinates:[{lon:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/007/007.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/007/007.010.plan
index 8fb9238..3d8bafd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/007/007.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/007/007.010.plan
@@ -1,24 +1,24 @@
-distribute result [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$37] <- [{"$1": $$39}] project: [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$37] <- [{"$1": $$39}] project: [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$39] <- [agg-sql-sum($$42)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$39] <- [agg-sql-sum($$42)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$42] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$42] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (array-contains($$C.getField("checkin_times").getField("dates"), "2018-05-25")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (array-contains($$C.getField("checkin_times").getField("dates"), "2018-05-25")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$C]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$C]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$38, $$C] <- TestYelp.YelpCheckin project ({checkin_times:{dates:any}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$38, $$C] <- TestYelp.YelpCheckin project ({checkin_times:{dates:any}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.011.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.011.adm
index c455cca..055b80f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.011.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.011.adm
@@ -1,18 +1,18 @@
-distribute result [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$17] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- SORT_MERGE_EXCHANGE [$$17(ASC) ]  |PARTITIONED|
-    order (ASC, $$17) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    order (ASC, $$17) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STABLE_SORT [$$17(ASC)]  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        select ($$d.getField("myBoolean")) project: [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        select ($$d.getField("myBoolean")) project: [$$17] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_SELECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$d] <- test.ColumnDataset project ({myBoolean:any}) filter on: $$d.getField("myBoolean") range-filter on: $$d.getField("myBoolean") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$d] <- test.ColumnDataset project ({myBoolean:any}) filter on: $$d.getField("myBoolean") range-filter on: $$d.getField("myBoolean") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.021.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.021.adm
index 92fa24b..34f19b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.021.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.021.adm
@@ -1,18 +1,18 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-    order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        select (not($$d.getField("myBoolean"))) project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        select (not($$d.getField("myBoolean"))) project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_SELECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$18, $$d] <- test.ColumnDataset project ({myBoolean:any}) filter on: not($$d.getField("myBoolean")) range-filter on: not($$d.getField("myBoolean")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$18, $$d] <- test.ColumnDataset project ({myBoolean:any}) filter on: not($$d.getField("myBoolean")) range-filter on: not($$d.getField("myBoolean")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.031.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.031.adm
index 547338a..7d4aeec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.031.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/boolean/boolean.031.adm
@@ -1,18 +1,18 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-    order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        select (eq($$d.getField("myBoolean"), true)) project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        select (eq($$d.getField("myBoolean"), true)) project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_SELECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$18, $$d] <- test.ColumnDataset project ({myBoolean:any}) filter on: eq($$d.getField("myBoolean"), true) range-filter on: eq($$d.getField("myBoolean"), true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$18, $$d] <- test.ColumnDataset project ({myBoolean:any}) filter on: eq($$d.getField("myBoolean"), true) range-filter on: eq($$d.getField("myBoolean"), true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.101.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.101.plan
index f6187ca..52fae76e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.101.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.101.plan
@@ -1,35 +1,35 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$18) project: [$$d, $$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$18) project: [$$d, $$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$20, $$d, $$18]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$20, $$d, $$18]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (not(if-missing-or-null(neq($$21, "1"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (not(if-missing-or-null(neq($$21, "1"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$21] <- [$$d.getField("a")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$21] <- [$$d.getField("a")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$20, $$d] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$20, $$d] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.201.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.201.plan
index d4ae3fa..f45042a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.201.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.201.plan
@@ -1,53 +1,53 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$24(ASC) ]  |PARTITIONED|
-        select ($$18) project: [$$d, $$24] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        select ($$18) project: [$$d, $$24] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_SELECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
             group by ([$$24 := $$20]) decor ([$$d]) {
-                      aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        select (not(is-missing($$23))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (not(is-missing($$23))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- PRE_CLUSTERED_GROUP_BY[$$20]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-                    project ([$$d, $$23, $$20]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$d, $$23, $$20]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        left outer join (not(if-missing-or-null(neq($$21, $#1), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        left outer join (not(if-missing-or-null(neq($$21, $#1), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_LOOP  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$21] <- [$$d.getField("a")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$21] <- [$$d.getField("a")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$20, $$d] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$20, $$d] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                            assign [$$23] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$23] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |UNPARTITIONED|
-                              unnest $#1 <- scan-collection(array: [ "1", "2", "3" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $#1 <- scan-collection(array: [ "1", "2", "3" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |UNPARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.301.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.301.plan
index 8ea050d..1b4a5f1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.301.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/not-in_every/not-in_every.301.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$28, $$d, $$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (not(if-missing-or-null(ge($$x, 100), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (not(if-missing-or-null(ge($$x, 100), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$x <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$x <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/sql-compat/sql-compat.013.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/sql-compat/sql-compat.013.plan
index 8230f6a..505049f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/sql-compat/sql-compat.013.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/sql-compat/sql-compat.013.plan
@@ -1,55 +1,55 @@
-distribute result [$$197] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$197] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$197] <- [{"str2": $$str2, "sum:num3:ok": $$201}] project: [$$197] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$197] <- [{"str2": $$str2, "sum:num3:ok": $$201}] project: [$$197] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$str2(ASC) ]  |PARTITIONED|
         group by ([$$str2 := $$233]) decor ([]) {
-                  aggregate [$$201] <- [agg-global-sql-sum($$232)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$201] <- [agg-global-sql-sum($$232)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$233]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$233]  |PARTITIONED|
             group by ([$$233 := $$231]) decor ([]) {
-                      aggregate [$$232] <- [agg-local-sql-sum($$195)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$232] <- [agg-local-sql-sum($$195)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$231]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$195] <- [double-default-null($$206)] project: [$$195, $$231] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$195] <- [double-default-null($$206)] project: [$$195, $$231] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  select (or($$184, is-unknown($$231))) project: [$$206, $$231] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (or($$184, is-unknown($$231))) project: [$$206, $$231] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$206, $$231, $$184]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$206, $$231, $$184]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
                       subplan {
-                                aggregate [$$184] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$184] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  select (eq(string-default-null($$210), "sixteen")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  select (eq(string-default-null($$210), "sixteen")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_SELECT  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SUBPLAN  |PARTITIONED|
-                        assign [$$231] <- [string-default-null($$210)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$231] <- [string-default-null($$210)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          assign [$$210, $$206] <- [$#4.getField("str2"), $#4.getField("num3")] project: [$$210, $$206] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$210, $$206] <- [$#4.getField("str2"), $#4.getField("num3")] project: [$$210, $$206] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            project ([$#4]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$#4]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$200, $#4] <- test.ColumnDataset project ({str2:any,num3:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$200, $#4] <- test.ColumnDataset project ({str2:any,num3:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.012.plan
index 58261e3..7faaee2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.012.plan
@@ -1,37 +1,37 @@
-distribute result [$$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_SELECT  |PARTITIONED|
             subplan {
-                      aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        select (eq($$55, "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (eq($$55, "1")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |LOCAL|
-                          assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |LOCAL|
-                            unnest $$ao <- scan-collection($$57) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            unnest $$ao <- scan-collection($$57) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- UNNEST  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SUBPLAN  |PARTITIONED|
-              assign [$$57] <- [$$p.getField("arrayOrObject")] project: [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$57] <- [$$p.getField("arrayOrObject")] project: [$$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$52, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$p.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$52, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$p.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.022.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.022.plan
index f8a88fc..91517a3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.022.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.022.plan
@@ -1,37 +1,37 @@
-distribute result [$$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_SELECT  |PARTITIONED|
             subplan {
-                      aggregate [$$44] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$44] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        select (not(if-missing-or-null(le($$55, "2"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (not(if-missing-or-null(le($$55, "2"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |LOCAL|
-                          assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |LOCAL|
-                            unnest $$ao <- scan-collection($$57) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            unnest $$ao <- scan-collection($$57) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- UNNEST  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SUBPLAN  |PARTITIONED|
-              assign [$$57] <- [$$p.getField("arrayOrObject")] project: [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$57] <- [$$p.getField("arrayOrObject")] project: [$$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$52, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$52, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.032.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.032.plan
index 588a92e..6c900d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.032.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.032.plan
@@ -1,68 +1,68 @@
-distribute result [$$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            join (true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- NESTED_LOOP  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (eq($$p.getField("arrayOrObject").getField("text"), "7")) project: [] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (eq($$p.getField("arrayOrObject").getField("text"), "7")) project: [] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$p] <- [$$b2] project: [$$p] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$p] <- [$$b2] project: [$$p] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$b2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$b2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BROADCAST_EXCHANGE  |PARTITIONED|
-                select (neq($$69, 0)) project: [] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (neq($$69, 0)) project: [] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |UNPARTITIONED|
-                  aggregate [$$69] <- [agg-sum($$75)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$69] <- [agg-sum($$75)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |UNPARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                      aggregate [$$75] <- [agg-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$75] <- [agg-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |PARTITIONED|
-                        select (eq($$ao.getField("text"), "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (eq($$ao.getField("text"), "1")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          unnest $$ao <- scan-collection($$72) project: [$$ao] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest $$ao <- scan-collection($$72) project: [$$ao] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- UNNEST  |PARTITIONED|
-                            assign [$$72] <- [$$b2.getField("arrayOrObject")] project: [$$72] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$72] <- [$$b2.getField("arrayOrObject")] project: [$$72] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- REPLICATE  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    project ([$$b2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$b2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.042.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.042.plan
index d570b28..a138a44 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.042.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.042.plan
@@ -1,66 +1,66 @@
-distribute result [$$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (or(eq($$71, "7"), neq($$69, 0))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            join (or(eq($$71, "7"), neq($$69, 0))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- NESTED_LOOP  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$71] <- [$$p.getField("arrayOrObject").getField("text")] project: [$$71] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$71] <- [$$p.getField("arrayOrObject").getField("text")] project: [$$71] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$p] <- [$$b2] project: [$$p] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$p] <- [$$b2] project: [$$p] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$b2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$b2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BROADCAST_EXCHANGE  |PARTITIONED|
-                aggregate [$$69] <- [agg-sum($$75)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                aggregate [$$69] <- [agg-sum($$75)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- AGGREGATE  |UNPARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                    aggregate [$$75] <- [agg-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$75] <- [agg-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |PARTITIONED|
-                      select (eq($$ao.getField("text"), "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$ao.getField("text"), "1")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        unnest $$ao <- scan-collection($$72) project: [$$ao] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest $$ao <- scan-collection($$72) project: [$$ao] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- UNNEST  |PARTITIONED|
-                          assign [$$72] <- [$$b2.getField("arrayOrObject")] project: [$$72] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$72] <- [$$b2.getField("arrayOrObject")] project: [$$72] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- REPLICATE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$b2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$b2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.052.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.052.plan
index dfe7f62..fc7e087 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.052.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.052.plan
@@ -1,37 +1,37 @@
-distribute result [$$67] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$67] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$67] <- [agg-global-sql-sum($$71)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$67] <- [agg-global-sql-sum($$71)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$71] <- [agg-local-sql-sum($$70)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$71] <- [agg-local-sql-sum($$70)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          project ([$$70]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$70]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
             subplan {
-                      aggregate [$$70] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$70] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        select (and(ge($$65, "1"), le($$65, "2"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (and(ge($$65, "1"), le($$65, "2"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |LOCAL|
-                          assign [$$65] <- [$$ao.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$65] <- [$$ao.getField("text")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |LOCAL|
-                            unnest $$ao <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            unnest $$ao <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- UNNEST  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SUBPLAN  |PARTITIONED|
-              assign [$$68] <- [$$p.getField("arrayOrObject")] project: [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$68] <- [$$p.getField("arrayOrObject")] project: [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$66, $$p] <- test.ColumnDataset project ({arrayOrObject:[{text:any}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$66, $$p] <- test.ColumnDataset project ({arrayOrObject:[{text:any}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.062.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.062.plan
index e8656fe..d29f353 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.062.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/filter/subplan/subplan.062.plan
@@ -1,60 +1,60 @@
-distribute result [$$63] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$63] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    join (true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    join (true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- NESTED_LOOP  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        select (eq($$p.getField("arrayOrObject").getField("text"), "7")) project: [] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        select (eq($$p.getField("arrayOrObject").getField("text"), "7")) project: [] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_SELECT  |PARTITIONED|
-          assign [$$p] <- [$$p2] project: [$$p] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          assign [$$p] <- [$$p2] project: [$$p] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ASSIGN  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- REPLICATE  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$p2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$p2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$62, $$p2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) range-filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$62, $$p2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) range-filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- BROADCAST_EXCHANGE  |PARTITIONED|
-        aggregate [$$63] <- [agg-sql-sum($$67)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$63] <- [agg-sql-sum($$67)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |UNPARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-            aggregate [$$67] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            aggregate [$$67] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- AGGREGATE  |PARTITIONED|
-              select (and(ge($$60, "1"), le($$60, "2"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (and(ge($$60, "1"), le($$60, "2"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$60] <- [$$ao.getField("text")] project: [$$60] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$60] <- [$$ao.getField("text")] project: [$$60] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  unnest $$ao <- scan-collection($$65) project: [$$ao] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  unnest $$ao <- scan-collection($$65) project: [$$ao] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- UNNEST  |PARTITIONED|
-                    assign [$$65] <- [$$p2.getField("arrayOrObject")] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$65] <- [$$p2.getField("arrayOrObject")] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- REPLICATE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$p2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$p2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$62, $$p2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) range-filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$62, $$p2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) range-filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/ASTERIXDB-3540/ASTERIXDB-3540.003.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/ASTERIXDB-3540/ASTERIXDB-3540.003.plan
index e8211a2..cd11128 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/ASTERIXDB-3540/ASTERIXDB-3540.003.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/ASTERIXDB-3540/ASTERIXDB-3540.003.plan
@@ -1,18 +1,18 @@
-distribute result [$$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$25] <- [{"g": $$26.getField("g"), "$1": $$26.getField("p").getField("$$ColumnDataset.getField("x").getField("y").getField("age_field")")}] project: [$$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$25] <- [{"g": $$26.getField("g"), "$1": $$26.getField("p").getField("$$ColumnDataset.getField("x").getField("y").getField("age_field")")}] project: [$$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$26] <- [$$ColumnDataset.getField("t").getField("r")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$26] <- [$$ColumnDataset.getField("t").getField("r")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        project ([$$ColumnDataset]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ColumnDataset]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$27, $$ColumnDataset] <- test.ColumnDataset project ({t:{r:{p:any,g:any}},x:{y:{age_field:any}}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$27, $$ColumnDataset] <- test.ColumnDataset project ({t:{r:{p:any,g:any}},x:{y:{age_field:any}}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/ASTERIXDB-3540/ASTERIXDB-3540.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/ASTERIXDB-3540/ASTERIXDB-3540.004.plan
index 273d5b8..fb93f43 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/ASTERIXDB-3540/ASTERIXDB-3540.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/ASTERIXDB-3540/ASTERIXDB-3540.004.plan
@@ -1,18 +1,18 @@
-distribute result [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$26] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$26] <- [{"g": $$27.getField("g"), "$1": $$27.getField("p").getField("substring($$ColumnDataset.getField("x").getField("y").getField("age_field"), 0, 4)")}] project: [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$26] <- [{"g": $$27.getField("g"), "$1": $$27.getField("p").getField("substring($$ColumnDataset.getField("x").getField("y").getField("age_field"), 0, 4)")}] project: [$$26] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$27] <- [$$ColumnDataset.getField("t").getField("r")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$27] <- [$$ColumnDataset.getField("t").getField("r")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        project ([$$ColumnDataset]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ColumnDataset]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$28, $$ColumnDataset] <- test.ColumnDataset project ({t:{r:{p:any,g:any}},x:{y:{age_field:any}}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$28, $$ColumnDataset] <- test.ColumnDataset project ({t:{r:{p:any,g:any}},x:{y:{age_field:any}}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
index 1113862..9374e57 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
@@ -1,24 +1,24 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"display_url": $$22}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"display_url": $$22}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-          order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$22] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url")] project: [$$22, $$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url")] project: [$$22, $$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$20, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$20, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
index a98b4d0..27c2393 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
@@ -1,28 +1,28 @@
-distribute result [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$22] <- [{"display_url": $$27}] project: [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$22] <- [{"display_url": $$27}] project: [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$27]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$27]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$25(ASC) ]  |PARTITIONED|
-          order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$27] <- [array-star($$24).getField("display_url")] project: [$$27, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$27] <- [array-star($$24).getField("display_url")] project: [$$27, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                select (not(is-missing($$24))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (not(is-missing($$24))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$24] <- [$$p.getField("entities").getField("urls")] project: [$$25, $$24] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$24] <- [$$p.getField("entities").getField("urls")] project: [$$25, $$24] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
index 29b623c..8895823 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
@@ -1,26 +1,26 @@
-distribute result [$$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] project: [$$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] project: [$$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$urls]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$urls]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$30(ASC) ]  |PARTITIONED|
-          order (ASC, $$30) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$30) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$30(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest $$urls <- scan-collection($$31) project: [$$urls, $$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$urls <- scan-collection($$31) project: [$$urls, $$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$31] <- [$$p.getField("entities").getField("urls")] project: [$$30, $$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$31] <- [$$p.getField("entities").getField("urls")] project: [$$30, $$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$30, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$30, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
index 21ad053..6b9f696 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
@@ -1,39 +1,39 @@
-distribute result [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$50] <- [agg-sql-sum($$54)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$50] <- [agg-sql-sum($$54)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$54] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$54] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          select ($$42) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          select ($$42) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_SELECT  |PARTITIONED|
-            project ([$$42]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$42]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
               subplan {
-                        aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          select (not(if-missing-or-null(eq($$52, "string"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (not(if-missing-or-null(eq($$52, "string"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |LOCAL|
-                            assign [$$52] <- [$$ht.getField("display_url")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$52] <- [$$ht.getField("display_url")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |LOCAL|
-                              unnest $$ht <- scan-collection($$51) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$ht <- scan-collection($$51) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SUBPLAN  |PARTITIONED|
-                assign [$$51] <- [$$p.getField("entities").getField("urls")] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$51] <- [$$p.getField("entities").getField("urls")] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$49, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$49, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
index 1b1b9c0..697d10c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
@@ -1,24 +1,24 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [get-item(get-item(get-item($$25.getField("coordinates"), 0), 0), 0)] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [get-item(get-item(get-item($$25.getField("coordinates"), 0), 0), 0)] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-          order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$25] <- [$$p.getField("place").getField("bounding_box")] project: [$$25, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$25] <- [$$p.getField("place").getField("bounding_box")] project: [$$25, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$21, $$p] <- test.ColumnDataset project ({place:{bounding_box:{coordinates:[[[any]]]}}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$21, $$p] <- test.ColumnDataset project ({place:{bounding_box:{coordinates:[[[any]]]}}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.004.plan
index e213cee..46394ce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.004.plan
@@ -1,18 +1,18 @@
-distribute result [$$p] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$p] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$14, $$p] <- test.ColumnDataset1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$14, $$p] <- test.ColumnDataset1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.006.plan
index 8790751..1a0bf74 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.006.plan
@@ -1,38 +1,38 @@
-distribute result [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [{"p1": $$p1, "id": $$34}] project: [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$30] <- [{"p1": $$p1, "id": $$34}] project: [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$34(ASC) ]  |PARTITIONED|
-        order (ASC, $$34) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$34) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$p1, $$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$p1, $$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$33, $$34)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$33, $$34)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$33][$$34]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$33]  |PARTITIONED|
-                    data-scan []<-[$$33, $$p1] <- test.ColumnDataset1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$33, $$p1] <- test.ColumnDataset1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                    project ([$$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$34, $$p2] <- test.ColumnDataset2 project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$34, $$p2] <- test.ColumnDataset2 project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.008.plan
index 5bca144..66bf0d8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.008.plan
@@ -1,44 +1,44 @@
-distribute result [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"age": $$38, "name": $$39}] project: [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$31] <- [{"age": $$38, "name": $$39}] project: [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$38, $$39]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$38, $$39]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$34(ASC) ]  |PARTITIONED|
-          order (ASC, $$34) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$34) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$38, $$39, $$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$38, $$39, $$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$33, $$34)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$33, $$34)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$33][$$34]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$33]  |PARTITIONED|
-                      assign [$$38] <- [$$p1.getField("age")] project: [$$38, $$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$38] <- [$$p1.getField("age")] project: [$$38, $$33] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$33, $$p1] <- test.ColumnDataset1 project ({age:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$33, $$p1] <- test.ColumnDataset1 project ({age:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                      assign [$$39] <- [$$p2.getField("name")] project: [$$39, $$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$39] <- [$$p2.getField("name")] project: [$$39, $$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$34, $$p2] <- test.ColumnDataset3 project ({name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$34, $$p2] <- test.ColumnDataset3 project ({name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
index cce610d..813da9e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
@@ -1,22 +1,22 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"id": $$20.getField("id"), "name": $$20.getField("name")}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"id": $$20.getField("id"), "name": $$20.getField("name")}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$20] <- [$$p.getField("user")] project: [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$20] <- [$$p.getField("user")] project: [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-            order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$21, $$p] <- test.ColumnDataset4 project ({user:{name:any,id:any}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$21, $$p] <- test.ColumnDataset4 project ({user:{name:any,id:any}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
index ab94475..35fc21e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
@@ -1,18 +1,18 @@
-distribute result [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$34] <- [agg-sql-sum($$35)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$34] <- [agg-sql-sum($$35)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$35] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$35] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$33, $$p] <- test.ColumnDataset4 project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$33, $$p] <- test.ColumnDataset4 project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/heterogeneous-access-pushdown/heterogeneous-access-pushdown.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/heterogeneous-access-pushdown/heterogeneous-access-pushdown.004.plan
index 9b44790..c6a91d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/heterogeneous-access-pushdown/heterogeneous-access-pushdown.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/heterogeneous-access-pushdown/heterogeneous-access-pushdown.004.plan
@@ -1,22 +1,22 @@
-distribute result [$$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$21] <- [switch-case(true, is-array($$23), array-star($$23).getField("text"), $$23.getField("text"))] project: [$$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$21] <- [switch-case(true, is-array($$23), array-star($$23).getField("text"), $$23.getField("text"))] project: [$$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$23] <- [$$p.getField("arrayOrObject")] project: [$$23] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$23] <- [$$p.getField("arrayOrObject")] project: [$$23] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_MERGE_EXCHANGE [$$24(ASC) ]  |PARTITIONED|
-            order (ASC, $$24) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            order (ASC, $$24) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STABLE_SORT [$$24(ASC)]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$24, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$24, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
index 4a1ce9c..1f53612 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
@@ -1,48 +1,48 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ]  |PARTITIONED|
-        order (ASC, $$40) (ASC, $$41) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$40) (ASC, $$41) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$40(ASC), $$41(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$40, $$37, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$40, $$37, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        order (ASC, $$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        order (ASC, $$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STABLE_SORT [$$45(ASC)]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$40, $$37, $$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$40, $$37, $$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                unnest-map [$$44, $$45] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest-map [$$44, $$45] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BTREE_SEARCH  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
index b0d6f88..7b87a0d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
@@ -1,54 +1,54 @@
-distribute result [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ]  |PARTITIONED|
-        order (ASC, $$47) (ASC, $$48) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$47) (ASC, $$48) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$47(ASC), $$48(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$47, $$42, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$47, $$42, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- BTREE_SEARCH  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          order (ASC, $$52) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          order (ASC, $$52) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STABLE_SORT [$$52(ASC)]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              project ([$$47, $$42, $$52]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$47, $$42, $$52]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  unnest-map [$$51, $$52] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest-map [$$51, $$52] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- STREAM_SELECT  |PARTITIONED|
-                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
index a557644..40d92fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
@@ -1,48 +1,48 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ]  |PARTITIONED|
-        order (ASC, $$40) (ASC, $$41) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$40) (ASC, $$41) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$40(ASC), $$41(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$40, $$37, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$40, $$37, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$36, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$45, 1, $$45, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest-map [$$36, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$45, 1, $$45, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        order (ASC, $$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        order (ASC, $$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STABLE_SORT [$$45(ASC)]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$40, $$37, $$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$40, $$37, $$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                unnest-map [$$44, $$45] <- index-search("idx_row_t2_s", 0, "Default", "test", "TestOpenRow2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest-map [$$44, $$45] <- index-search("idx_row_t2_s", 0, "Default", "test", "TestOpenRow2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BTREE_SEARCH  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
index 73fb237..75fdae3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
@@ -1,54 +1,54 @@
-distribute result [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ]  |PARTITIONED|
-        order (ASC, $$47) (ASC, $$48) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$47) (ASC, $$48) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$47(ASC), $$48(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$47, $$42, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$47, $$42, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      unnest-map [$$41, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$52, 1, $$52, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      unnest-map [$$41, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$52, 1, $$52, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- BTREE_SEARCH  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          order (ASC, $$52) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          order (ASC, $$52) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STABLE_SORT [$$52(ASC)]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              project ([$$47, $$42, $$52]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$47, $$42, $$52]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  unnest-map [$$51, $$52] <- index-search("idx_row_t2_s", 0, "Default", "test", "TestOpenRow2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest-map [$$51, $$52] <- index-search("idx_row_t2_s", 0, "Default", "test", "TestOpenRow2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- STREAM_SELECT  |PARTITIONED|
-                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
index 6bada47..9927403 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
@@ -1,48 +1,48 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ]  |PARTITIONED|
-        order (ASC, $$40) (ASC, $$41) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$40) (ASC, $$41) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$40(ASC), $$41(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$40, $$37, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$40, $$37, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        order (ASC, $$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        order (ASC, $$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STABLE_SORT [$$45(ASC)]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$40, $$37, $$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$40, $$37, $$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                unnest-map [$$44, $$45] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest-map [$$44, $$45] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BTREE_SEARCH  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$35, $$t1] <- test.TestOpenRow1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$35, $$t1] <- test.TestOpenRow1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
index 9e5c65e..b5aed5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
@@ -1,54 +1,54 @@
-distribute result [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ]  |PARTITIONED|
-        order (ASC, $$47) (ASC, $$48) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$47) (ASC, $$48) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$47(ASC), $$48(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$47, $$42, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$47, $$42, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- BTREE_SEARCH  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          order (ASC, $$52) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          order (ASC, $$52) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STABLE_SORT [$$52(ASC)]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              project ([$$47, $$42, $$52]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$47, $$42, $$52]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  unnest-map [$$51, $$52] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest-map [$$51, $$52] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- STREAM_SELECT  |PARTITIONED|
-                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$40, $$t1] <- test.TestOpenRow1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$40, $$t1] <- test.TestOpenRow1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.004.plan
index cd1f227..3d9004a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.004.plan
@@ -1,36 +1,36 @@
-distribute result [$$61] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$61] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$61] <- [{"$1": $$66, "$2": $$67}] project: [$$61] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$61] <- [{"$1": $$66, "$2": $$67}] project: [$$61] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$66, $$67] <- [agg-global-sql-sum($$70), agg-global-sql-sum($$71)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$66, $$67] <- [agg-global-sql-sum($$70), agg-global-sql-sum($$71)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$70, $$71] <- [agg-local-sql-sum($$54), agg-local-sql-sum($$59)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$70, $$71] <- [agg-local-sql-sum($$54), agg-local-sql-sum($$59)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            assign [$$59, $$54] <- [object-length($$p2), object-length($$p1)] project: [$$54, $$59] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$59, $$54] <- [object-length($$p2), object-length($$p1)] project: [$$54, $$59] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$p1, $$p2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$p1, $$p2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$63, $$62)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$63, $$62)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$62][$$63]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$62]  |PARTITIONED|
-                      data-scan []<-[$$62, $$p1] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$62, $$p1] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$63]  |PARTITIONED|
-                      data-scan []<-[$$63, $$p2] <- test.RowDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$63, $$p2] <- test.RowDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.006.plan
index a0d15f3..929e4c6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.006.plan
@@ -1,30 +1,30 @@
-distribute result [$$p1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$p1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$p1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$p1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$16(ASC) ]  |PARTITIONED|
-        order (ASC, $$16) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$16) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$16(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            distinct ([$$p1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            distinct ([$$p1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$p1) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (ASC, $$p1) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [$$p1(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$p1]  |PARTITIONED|
-                    select (neq($$16, "0")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    select (neq($$16, "0")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_SELECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$16, $$p1] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$16, $$p1] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.008.plan
index 02e6f1b..56530e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.008.plan
@@ -1,44 +1,44 @@
-distribute result [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$69] <- [{"text": $$text, "$1": $$73}] project: [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$69] <- [{"text": $$text, "$1": $$73}] project: [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$text(ASC) ]  |PARTITIONED|
         group by ([$$text := $$81]) decor ([]) {
-                  aggregate [$$73] <- [agg-global-sql-sum($$80)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$73] <- [agg-global-sql-sum($$80)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$81]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$81]  |PARTITIONED|
             group by ([$$81 := $$71]) decor ([]) {
-                      aggregate [$$80] <- [agg-local-sql-sum(sql-count($$75))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$80] <- [agg-local-sql-sum(sql-count($$75))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$71]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (eq(lowercase($$71), "string")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (eq(lowercase($$71), "string")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$71] <- [$$ht.getField("display_url")] project: [$$75, $$71] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$71] <- [$$ht.getField("display_url")] project: [$$75, $$71] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    unnest $$ht <- scan-collection($$75) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$ht <- scan-collection($$75) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |PARTITIONED|
-                      assign [$$75] <- [$$p1.getField("entities").getField("urls")] project: [$$75] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$75] <- [$$p1.getField("entities").getField("urls")] project: [$$75] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        select (neq($$72, "0")) project: [$$p1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (neq($$72, "0")) project: [$$p1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$72, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$72, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.010.plan
index 4723a05..1654328 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.010.plan
@@ -1,44 +1,44 @@
-distribute result [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$68] <- [{"text": $$text, "$1": $$72}] project: [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$68] <- [{"text": $$text, "$1": $$72}] project: [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$text(ASC) ]  |PARTITIONED|
         group by ([$$text := $$79]) decor ([]) {
-                  aggregate [$$72] <- [agg-global-sql-sum($$78)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$72] <- [agg-global-sql-sum($$78)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$79]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
             group by ([$$79 := $$70]) decor ([]) {
-                      aggregate [$$78] <- [agg-local-sql-sum(sql-sum($$75))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$78] <- [agg-local-sql-sum(sql-sum($$75))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$70]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (eq(lowercase($$70), "string")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (eq(lowercase($$70), "string")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$75, $$70] <- [$$ht.getField("indices"), $$ht.getField("display_url")] project: [$$75, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$75, $$70] <- [$$ht.getField("indices"), $$ht.getField("display_url")] project: [$$75, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    unnest $$ht <- scan-collection($$74) project: [$$ht] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$ht <- scan-collection($$74) project: [$$ht] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |PARTITIONED|
-                      assign [$$74] <- [$$p1.getField("entities").getField("urls")] project: [$$74] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$74] <- [$$p1.getField("entities").getField("urls")] project: [$$74] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        select (neq($$71, "0")) project: [$$p1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (neq($$71, "0")) project: [$$p1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$71, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any,indices:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$71, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any,indices:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.012.plan
index 7ae6fe3..cc19b66 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.012.plan
@@ -1,28 +1,28 @@
-distribute result [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$22] <- [{"display_url": $$27}] project: [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$22] <- [{"display_url": $$27}] project: [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$27]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$27]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$25(ASC) ]  |PARTITIONED|
-          order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$27] <- [get-item($$24, 0).getField("display_url")] project: [$$27, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$27] <- [get-item($$24, 0).getField("display_url")] project: [$$27, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                select (eq(sql-count($$24), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (eq(sql-count($$24), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$24] <- [$$p.getField("entities").getField("urls")] project: [$$25, $$24] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$24] <- [$$p.getField("entities").getField("urls")] project: [$$25, $$24] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.014.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.014.plan
index d524b65..6aa477e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.014.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.014.plan
@@ -1,95 +1,95 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"uname": $$uname, "cnt": $$105}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$101] <- [{"uname": $$uname, "cnt": $$105}] project: [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$105(DESC), $$uname(ASC) ]  |PARTITIONED|
-        order (DESC, $$105) (ASC, $$uname) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (DESC, $$105) (ASC, $$uname) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$105(DESC), $$uname(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
             group by ([$$uname := $$116]) decor ([]) {
-                      aggregate [$$105] <- [agg-sql-sum($$115)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$105] <- [agg-sql-sum($$115)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$116]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$116]  |PARTITIONED|
                 group by ([$$116 := $$102]) decor ([]) {
-                          aggregate [$$115] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$115] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SORT_GROUP_BY[$$102]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    select ($$92) project: [$$102] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    select ($$92) project: [$$102] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_SELECT  |PARTITIONED|
-                      project ([$$92, $$102]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$92, $$102]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                           group by ([$$114 := $$112]) decor ([$$102]) {
-                                    aggregate [$$92] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$92] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
-                                      select (not(is-missing($$113))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      select (not(is-missing($$113))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_SELECT  |LOCAL|
-                                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- PRE_CLUSTERED_GROUP_BY[$$112]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              order (ASC, $$112) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              order (ASC, $$112) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STABLE_SORT [$$112(ASC)]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$112]  |PARTITIONED|
-                                  project ([$$102, $$113, $$112]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$102, $$113, $$112]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      left outer join (eq($$106, $$88)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      left outer join (eq($$106, $$88)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$106][$$88]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$106]  |PARTITIONED|
-                                          running-aggregate [$$112] <- [create-query-uid()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          running-aggregate [$$112] <- [create-query-uid()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- RUNNING_AGGREGATE  |PARTITIONED|
-                                            assign [$$106] <- [$$ht1.getField("display_url")] project: [$$102, $$106] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$106] <- [$$ht1.getField("display_url")] project: [$$102, $$106] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              unnest $$ht1 <- scan-collection($$107) project: [$$102, $$ht1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              unnest $$ht1 <- scan-collection($$107) project: [$$102, $$ht1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- UNNEST  |PARTITIONED|
-                                                assign [$$107, $$102] <- [$$p1.getField("entities").getField("urls"), $$p1.getField("user").getField("name")] project: [$$107, $$102] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                assign [$$107, $$102] <- [$$p1.getField("entities").getField("urls"), $$p1.getField("user").getField("name")] project: [$$107, $$102] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ASSIGN  |PARTITIONED|
-                                                  project ([$$p1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  project ([$$p1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$103, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]},user:{name:any}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$103, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]},user:{name:any}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$88]  |PARTITIONED|
-                                          assign [$$113, $$88] <- [true, $$ht2.getField("display_url")] project: [$$113, $$88] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$113, $$88] <- [true, $$ht2.getField("display_url")] project: [$$113, $$88] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            unnest $$ht2 <- scan-collection($$108) project: [$$ht2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            unnest $$ht2 <- scan-collection($$108) project: [$$ht2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- UNNEST  |PARTITIONED|
-                                              assign [$$108] <- [$$p2.getField("entities").getField("urls")] project: [$$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$108] <- [$$p2.getField("entities").getField("urls")] project: [$$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                project ([$$p2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                project ([$$p2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    data-scan []<-[$$104, $$p2] <- test.RowDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    data-scan []<-[$$104, $$p2] <- test.RowDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.015.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.015.plan
index f222777..01b4290 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.015.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.015.plan
@@ -1,48 +1,48 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$52] <- [{"$1": $$57}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"$1": $$57}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$57] <- [agg-sql-sum($$60)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$57] <- [agg-sql-sum($$60)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$60] <- [agg-sql-count($$50)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$60] <- [agg-sql-count($$50)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            project ([$$50]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$50]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$55, $$56)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$55, $$56)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$55][$$56]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                    assign [$$50] <- [$$55.getField("y")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$50] <- [$$55.getField("y")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField("x")] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$55] <- [$$c.getField("x")] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$53, $$c] <- test.ColumnDataset project ({x:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$53, $$c] <- test.ColumnDataset project ({x:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$r.getField("x")] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$r.getField("x")] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$r]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$r]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$54, $$r] <- test.RowDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$54, $$r] <- test.RowDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.016.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.016.plan
index 50a35be..a545ec1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.016.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.016.plan
@@ -1,54 +1,54 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$53, $$57]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$71, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$71, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$71] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$71] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
                   subplan {
-                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              select (eq($$69, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$69, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |LOCAL|
-                                assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |LOCAL|
-                                  unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- UNNEST  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SUBPLAN  |PARTITIONED|
-                    assign [$$68] <- [$$c.getField("val1")] project: [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$68] <- [$$c.getField("val1")] project: [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val1:[{x:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("x"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("x"), 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val1:[{x:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("x"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("x"), 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.017.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.017.plan
index 4a1bdc7..51b9bde 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.017.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.017.plan
@@ -1,54 +1,54 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$53, $$57]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$71, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$71, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$71] <- [$$e.getField("y")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$71] <- [$$e.getField("y")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
                   subplan {
-                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              select (eq($$69, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$69, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |LOCAL|
-                                assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |LOCAL|
-                                  unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- UNNEST  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SUBPLAN  |PARTITIONED|
-                    assign [$$68] <- [$$c.getField("val1")] project: [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$68] <- [$$c.getField("val1")] project: [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val1:[{x:any,y:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("y"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("y"), 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val1:[{x:any,y:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("y"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("y"), 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.018.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.018.plan
index bf4a1ce..855a17a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.018.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.018.plan
@@ -1,56 +1,56 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$53, $$57]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$71, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$71, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$71] <- [$$e.getField("y")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$71] <- [$$e.getField("y")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$70) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$70) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  project ([$$70, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$70, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
                     subplan {
-                              aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- AGGREGATE  |LOCAL|
-                                select (eq($$69, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                select (eq($$69, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_SELECT  |LOCAL|
-                                  assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                           } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                           } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- SUBPLAN  |PARTITIONED|
-                      assign [$$70, $$68] <- [$$c.getField("val2"), $$c.getField("val1")] project: [$$70, $$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$70, $$68] <- [$$c.getField("val2"), $$c.getField("val1")] project: [$$70, $$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val2:[{y:any}],val1:[{x:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val2")).getField("y"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val2")).getField("y"), 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val2:[{y:any}],val1:[{x:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val2")).getField("y"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val2")).getField("y"), 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.019.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.019.plan
index 510b86c..d4eb1e1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.019.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.019.plan
@@ -1,20 +1,20 @@
-distribute result [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"$1": get-item(get-item(get-item($$32, 0).getField("f2"), 0), 0), "$2": get-item($$47.getField("f3"), 1), "$3": get-item(get-item($$47.getField("f2"), 1), 1)}] project: [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$31] <- [{"$1": get-item(get-item(get-item($$32, 0).getField("f2"), 0), 0), "$2": get-item($$47.getField("f3"), 1), "$3": get-item(get-item($$47.getField("f2"), 1), 1)}] project: [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$47] <- [get-item($$32, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$47] <- [get-item($$32, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$32] <- [$$c.getField("f1")] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$32] <- [$$c.getField("f1")] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$33, $$c] <- test.ColumnDataset project ({f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$33, $$c] <- test.ColumnDataset project ({f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan
index 0c66acf..832fd10 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.020.plan
@@ -1,45 +1,45 @@
-distribute result [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
-          distinct ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          distinct ([$$64]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (ASC, $$64) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (ASC, $$64) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [$$64(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
-                  select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$64, $$68]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$64, $$68]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
                       subplan {
-                                aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$i <- scan-collection($$70) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$i <- scan-collection($$70) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SUBPLAN  |PARTITIONED|
-                        assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$t]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$t]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.021.plan
index 0c66acf..832fd10 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.021.plan
@@ -1,45 +1,45 @@
-distribute result [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
-          distinct ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          distinct ([$$64]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (ASC, $$64) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (ASC, $$64) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [$$64(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
-                  select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$64, $$68]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$64, $$68]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
                       subplan {
-                                aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$i <- scan-collection($$70) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$i <- scan-collection($$70) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SUBPLAN  |PARTITIONED|
-                        assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$t]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$t]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.022.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.022.plan
index dfef008..e0ad5d5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.022.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.022.plan
@@ -1,62 +1,62 @@
-distribute result [$$84] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$84] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$84] <- [{"name": $$93, "phone": $$94, "num_reviews": sql-count($$91), "overall_avg": $#2, "overall_reviews": $$83}] project: [$$84] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$84] <- [{"name": $$93, "phone": $$94, "num_reviews": sql-count($$91), "overall_avg": $#2, "overall_reviews": $$83}] project: [$$84] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$#2(DESC) ]  |PARTITIONED|
-          limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 5) (DESC, $#2) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 5) (DESC, $#2) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 5] [$#2(DESC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   subplan {
-                            aggregate [$$83] <- [listify($$82)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$83] <- [listify($$82)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              assign [$$82] <- [$$98.getField("Overall")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$82] <- [$$98.getField("Overall")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                assign [$$98] <- [$$reviews.getField("ratings")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$98] <- [$$reviews.getField("ratings")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |LOCAL|
-                                  unnest $$reviews <- scan-collection($$91) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest $$reviews <- scan-collection($$91) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- UNNEST  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SUBPLAN  |PARTITIONED|
-                    assign [$#2] <- [get-item($$72, 0)] project: [$$93, $$94, $$91, $#2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$#2] <- [get-item($$72, 0)] project: [$$93, $$94, $$91, $#2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
                       subplan {
-                                aggregate [$$72] <- [listify($$86)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$72] <- [listify($$86)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  aggregate [$$86] <- [agg-sql-min($$69)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  aggregate [$$86] <- [agg-sql-min($$69)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- AGGREGATE  |LOCAL|
-                                    assign [$$69] <- [$$97.getField("Overall")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$69] <- [$$97.getField("Overall")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |LOCAL|
-                                      assign [$$97] <- [$$89.getField("ratings")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$97] <- [$$89.getField("ratings")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |LOCAL|
-                                        unnest $$89 <- scan-collection($$91) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        unnest $$89 <- scan-collection($$91) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- UNNEST  |LOCAL|
-                                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SUBPLAN  |PARTITIONED|
-                        select (eq($$ht.getField("city"), "Los Angeles")) project: [$$93, $$94, $$91] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (eq($$ht.getField("city"), "Los Angeles")) project: [$$93, $$94, $$91] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          assign [$$94, $$91, $$93] <- [$$ht.getField("phone"), $$ht.getField("reviews"), $$ht.getField("name")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$94, $$91, $$93] <- [$$ht.getField("phone"), $$ht.getField("reviews"), $$ht.getField("name")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            project ([$$ht]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$ht]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$85, $$ht] <- test.ColumnDataset project ({reviews:[{ratings:{Overall:any}}],phone:any,city:any,name:any}) filter on: eq($$ht.getField("city"), "Los Angeles") range-filter on: eq($$ht.getField("city"), "Los Angeles") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$85, $$ht] <- test.ColumnDataset project ({reviews:[{ratings:{Overall:any}}],phone:any,city:any,name:any}) filter on: eq($$ht.getField("city"), "Los Angeles") range-filter on: eq($$ht.getField("city"), "Los Angeles") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.023.plan
index 4708d89..8f9cc66 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.023.plan
@@ -1,24 +1,24 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$19] <- [{"payload": $$20.getField("payload")}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$19] <- [{"payload": $$20.getField("payload")}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            assign [$$20] <- [$$o.getField("v")] project: [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$20] <- [$$o.getField("v")] project: [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$o]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$o]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$21, $$o] <- test.ColumnDataset condition (eq($$o.getField("v").getField("type"), "WeMo")) limit 10 project ({v:{payload:any,type:any}}) filter on: eq($$o.getField("v").getField("type"), "WeMo") range-filter on: eq($$o.getField("v").getField("type"), "WeMo") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$21, $$o] <- test.ColumnDataset condition (eq($$o.getField("v").getField("type"), "WeMo")) limit 10 project ({v:{payload:any,type:any}}) filter on: eq($$o.getField("v").getField("type"), "WeMo") range-filter on: eq($$o.getField("v").getField("type"), "WeMo") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.024.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.024.plan
index e02e06b..8c6658a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.024.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.024.plan
@@ -1,30 +1,30 @@
-distribute result [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"$1": get-item(get-item($$36, 0), 0), "$2": get-item($$37, 1), "$3": get-item(get-item($$38, 1), 1)}] project: [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$31] <- [{"$1": get-item(get-item($$36, 0), 0), "$2": get-item($$37, 1), "$3": get-item(get-item($$38, 1), 1)}] project: [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$36, $$37, $$38]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$36, $$37, $$38]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$35(ASC) ]  |PARTITIONED|
-          order (ASC, $$35) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$35) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$35(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$38, $$37] <- [$$49.getField("f2"), $$49.getField("f3")] project: [$$36, $$37, $$38, $$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$38, $$37] <- [$$49.getField("f2"), $$49.getField("f3")] project: [$$36, $$37, $$38, $$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$49, $$36] <- [get-item($$33, 1), get-item($$33, 0).getField("f2")] project: [$$35, $$49, $$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$49, $$36] <- [get-item($$33, 1), get-item($$33, 0).getField("f2")] project: [$$35, $$49, $$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$33, $$35] <- [$$c.getField("f1"), $$c.getField("x")] project: [$$33, $$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$33, $$35] <- [$$c.getField("f1"), $$c.getField("x")] project: [$$33, $$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$34, $$c] <- test.ColumnDataset project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$34, $$c] <- test.ColumnDataset project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.025.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.025.plan
index 567805d..85f7ce8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.025.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.025.plan
@@ -1,20 +1,20 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"$1": get-item(get-item(get-item($$33, 0).getField("f2"), 0), 0), "$2": get-item($$49.getField("f3"), 1), "$3": get-item(get-item($$49.getField("f2"), 1), 1), "x": $$c.getField("x")}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"$1": get-item(get-item(get-item($$33, 0).getField("f2"), 0), 0), "$2": get-item($$49.getField("f3"), 1), "$3": get-item(get-item($$49.getField("f2"), 1), 1), "x": $$c.getField("x")}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$49] <- [get-item($$33, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$49] <- [get-item($$33, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$33] <- [$$c.getField("f1")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$33] <- [$$c.getField("f1")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$34, $$c] <- test.ColumnDataset project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$34, $$c] <- test.ColumnDataset project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.026.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.026.plan
index e5f387d..373d41e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.026.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.026.plan
@@ -1,30 +1,30 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"$1": get-item(get-item($$37, 0), 0), "$2": get-item($$38, 1), "$3": get-item(get-item($$39, 1), 1), "x": $$40}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"$1": get-item(get-item($$37, 0), 0), "$2": get-item($$38, 1), "$3": get-item(get-item($$39, 1), 1), "x": $$40}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$37, $$38, $$39, $$40]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$37, $$38, $$39, $$40]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$36(ASC) ]  |PARTITIONED|
-          order (ASC, $$36) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$36) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$36(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$39, $$38] <- [$$51.getField("f2"), $$51.getField("f3")] project: [$$37, $$38, $$39, $$40, $$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$39, $$38] <- [$$51.getField("f2"), $$51.getField("f3")] project: [$$37, $$38, $$39, $$40, $$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$51, $$37] <- [get-item($$34, 1), get-item($$34, 0).getField("f2")] project: [$$36, $$40, $$51, $$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$51, $$37] <- [get-item($$34, 1), get-item($$34, 0).getField("f2")] project: [$$36, $$40, $$51, $$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$34, $$36, $$40] <- [$$c.getField("f1"), $$c.getField("y"), $$c.getField("x")] project: [$$34, $$36, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$34, $$36, $$40] <- [$$c.getField("f1"), $$c.getField("y"), $$c.getField("x")] project: [$$34, $$36, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$35, $$c] <- test.ColumnDataset project ({x:any,y:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$35, $$c] <- test.ColumnDataset project ({x:any,y:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.027.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.027.plan
index e16744d..cefb3a5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.027.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/other-pushdowns/other-pushdowns.027.plan
@@ -1,22 +1,22 @@
-distribute result [$$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$35] <- [{"$1": get-item(get-item(get-item($$36, 0).getField("f2"), 0), 0), "$2": get-item($$43, 1), "$3": get-item(get-item($$55.getField("f2"), 1), 1), "f4": $$43.getField("f4")}] project: [$$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$35] <- [{"$1": get-item(get-item(get-item($$36, 0).getField("f2"), 0), 0), "$2": get-item($$43, 1), "$3": get-item(get-item($$55.getField("f2"), 1), 1), "f4": $$43.getField("f4")}] project: [$$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$43] <- [$$55.getField("f3")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$43] <- [$$55.getField("f3")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$55] <- [get-item($$36, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$55] <- [get-item($$36, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          assign [$$36] <- [$$c.getField("f1")] project: [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          assign [$$36] <- [$$c.getField("f1")] project: [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ASSIGN  |PARTITIONED|
-            project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$37, $$c] <- test.ColumnDataset project ({f1:[{f2:[[any]],f3:<[any],{f4:any}>}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$37, $$c] <- test.ColumnDataset project ({f1:[{f2:[[any]],f3:<[any],{f4:any}>}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.010.plan
index ff20185..046e4ce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.010.plan
@@ -1,244 +1,244 @@
-distribute result [$$223] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$223] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$223] <- [{"su_suppkey": $$230, "su_name": $$272, "su_address": $$273, "su_phone": $$274, "total_revenue": $$231}] project: [$$223] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$223] <- [{"su_suppkey": $$230, "su_name": $$272, "su_address": $$273, "su_phone": $$274, "total_revenue": $$231}] project: [$$223] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$230(ASC) ]  |PARTITIONED|
-        order (ASC, $$230) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$230) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$230(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$230, $$272, $$273, $$274, $$231]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$230, $$272, $$273, $$274, $$231]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$230, $#1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$230, $#1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$#1][$$230]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$#1]  |PARTITIONED|
-                    project ([$$231, $#1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$231, $#1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$231, $$268)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$231, $$268)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$231][$$268]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$231]  |PARTITIONED|
-                            assign [$$231] <- [{"supplier_no": $#1, "total_rev": $$240}.getField("total_revenue")] project: [$$231, $#1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$231] <- [{"supplier_no": $#1, "total_rev": $$240}.getField("total_revenue")] project: [$$231, $#1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                 group by ([$#1 := $$280]) decor ([]) {
-                                          aggregate [$$240] <- [agg-global-sql-sum($$279)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          aggregate [$$240] <- [agg-global-sql-sum($$279)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- AGGREGATE  |LOCAL|
-                                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- SORT_GROUP_BY[$$280]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$280]  |PARTITIONED|
                                     group by ([$$280 := $$225]) decor ([]) {
-                                              aggregate [$$279] <- [agg-local-sql-sum($$169)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              aggregate [$$279] <- [agg-local-sql-sum($$169)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- AGGREGATE  |LOCAL|
-                                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                           } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                           } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- SORT_GROUP_BY[$$225]  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        assign [$$225] <- [numeric-mod(numeric-multiply($$228, $$229), 10000)] project: [$$169, $$225] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$225] <- [numeric-mod(numeric-multiply($$228, $$229), 10000)] project: [$$169, $$225] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          project ([$$228, $$229, $$169]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$228, $$229, $$169]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (and(eq($$262, $$229), eq($$263, $$228))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              join (and(eq($$262, $$229), eq($$263, $$228))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HYBRID_HASH_JOIN [$$229, $$228][$$262, $$263]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  assign [$$228, $$229] <- [$$250, $$251] project: [$$228, $$229] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$228, $$229] <- [$$250, $$251] project: [$$228, $$229] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- REPLICATE  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HASH_PARTITION_EXCHANGE [$$251, $$250]  |PARTITIONED|
-                                                          assign [$$251, $$250] <- [$$253.getField("s_i_id"), $$253.getField("s_w_id")] project: [$$250, $$251] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          assign [$$251, $$250] <- [$$253.getField("s_i_id"), $$253.getField("s_w_id")] project: [$$250, $$251] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ASSIGN  |PARTITIONED|
-                                                            project ([$$253]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            project ([$$253]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_PROJECT  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$258, $$253] <- test.stock project ({s_w_id:any,s_i_id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                data-scan []<-[$$258, $$253] <- test.stock project ({s_w_id:any,s_i_id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$262, $$263]  |PARTITIONED|
-                                                  select (and(ge($$227, "2018-01-01 00:00:00.000000"), lt($$227, "2018-04-01 00:00:00.000000"))) project: [$$169, $$262, $$263] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  select (and(ge($$227, "2018-01-01 00:00:00.000000"), lt($$227, "2018-04-01 00:00:00.000000"))) project: [$$169, $$262, $$263] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STREAM_SELECT  |PARTITIONED|
-                                                    assign [$$169, $$263, $$262, $$227] <- [$$259, $$267, $$266, $$256] project: [$$169, $$263, $$262, $$227] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$169, $$263, $$262, $$227] <- [$$259, $$267, $$266, $$256] project: [$$169, $$263, $$262, $$227] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- REPLICATE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            assign [$$259, $$267, $$266, $$256] <- [$$255.getField("ol_amount"), $$255.getField("ol_supply_w_id"), $$255.getField("ol_i_id"), $$255.getField("ol_delivery_d")] project: [$$259, $$267, $$266, $$256] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$259, $$267, $$266, $$256] <- [$$255.getField("ol_amount"), $$255.getField("ol_supply_w_id"), $$255.getField("ol_i_id"), $$255.getField("ol_delivery_d")] project: [$$259, $$267, $$266, $$256] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              unnest $$255 <- scan-collection($$270) project: [$$255] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              unnest $$255 <- scan-collection($$270) project: [$$255] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- UNNEST  |PARTITIONED|
-                                                                assign [$$270] <- [$$254.getField("o_orderline")] project: [$$270] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                assign [$$270] <- [$$254.getField("o_orderline")] project: [$$270] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ASSIGN  |PARTITIONED|
-                                                                  project ([$$254]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  project ([$$254]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      unnest-map [$$257, $$254] <- index-search("orders", 0, "Default", "test", "orders", false, false, 1, $$291, 1, $$291, true, true, true) project ({o_orderline:[{ol_delivery_d:any,ol_i_id:any,ol_supply_w_id:any,ol_amount:any}]}) range-filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      unnest-map [$$257, $$254] <- index-search("orders", 0, "Default", "test", "orders", false, false, 1, $$291, 1, $$291, true, true, true) project ({o_orderline:[{ol_delivery_d:any,ol_i_id:any,ol_supply_w_id:any,ol_amount:any}]}) range-filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- BTREE_SEARCH  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          distinct ([$$291]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          distinct ([$$291]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              order (ASC, $$291) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              order (ASC, $$291) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- STABLE_SORT [$$291(ASC)]  |PARTITIONED|
-                                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                  project ([$$291]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  project ([$$291]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                      unnest-map [$$290, $$291] <- index-search("orderline_delivery_d", 0, "Default", "test", "orders", false, false, 1, $$288, 1, $$289, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      unnest-map [$$290, $$291] <- index-search("orderline_delivery_d", 0, "Default", "test", "orders", false, false, 1, $$288, 1, $$289, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- BTREE_SEARCH  |PARTITIONED|
-                                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                          assign [$$288, $$289] <- ["2018-01-01 00:00:00.000000", "2018-04-01 00:00:00.000000"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          assign [$$288, $$289] <- ["2018-01-01 00:00:00.000000", "2018-04-01 00:00:00.000000"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- ASSIGN  |PARTITIONED|
-                                                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$268]  |PARTITIONED|
-                            assign [$$268] <- [get-item($$213, 0)] project: [$$268] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$268] <- [get-item($$213, 0)] project: [$$268] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |UNPARTITIONED|
-                              aggregate [$$213] <- [listify($$278)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              aggregate [$$213] <- [listify($$278)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- AGGREGATE  |UNPARTITIONED|
-                                aggregate [$$278] <- [agg-global-sql-max($$281)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$278] <- [agg-global-sql-max($$281)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |UNPARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                                    aggregate [$$281] <- [agg-local-sql-max($$210)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$281] <- [agg-local-sql-max($$210)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |PARTITIONED|
-                                      assign [$$210] <- [{"supplier_no": $$247, "total_rev": $$265}.getField("total_revenue")] project: [$$210] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$210] <- [{"supplier_no": $$247, "total_rev": $$265}.getField("total_revenue")] project: [$$210] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                           group by ([$$247 := $$283]) decor ([]) {
-                                                    aggregate [$$265] <- [agg-global-sql-sum($$282)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    aggregate [$$265] <- [agg-global-sql-sum($$282)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- AGGREGATE  |LOCAL|
-                                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- SORT_GROUP_BY[$$283]  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- HASH_PARTITION_EXCHANGE [$$283]  |PARTITIONED|
                                               group by ([$$283 := $$249]) decor ([]) {
-                                                        aggregate [$$282] <- [agg-local-sql-sum($$259)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        aggregate [$$282] <- [agg-local-sql-sum($$259)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- AGGREGATE  |LOCAL|
-                                                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- SORT_GROUP_BY[$$249]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  assign [$$249] <- [numeric-mod(numeric-multiply($$250, $$251), 10000)] project: [$$259, $$249] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$249] <- [numeric-mod(numeric-multiply($$250, $$251), 10000)] project: [$$259, $$249] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    project ([$$250, $$251, $$259]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    project ([$$250, $$251, $$259]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        join (and(eq($$266, $$251), eq($$267, $$250))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        join (and(eq($$266, $$251), eq($$267, $$250))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HYBRID_HASH_JOIN [$$251, $$250][$$266, $$267]  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- REPLICATE  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- HASH_PARTITION_EXCHANGE [$$251, $$250]  |PARTITIONED|
-                                                                assign [$$251, $$250] <- [$$253.getField("s_i_id"), $$253.getField("s_w_id")] project: [$$250, $$251] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                assign [$$251, $$250] <- [$$253.getField("s_i_id"), $$253.getField("s_w_id")] project: [$$250, $$251] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ASSIGN  |PARTITIONED|
-                                                                  project ([$$253]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  project ([$$253]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      data-scan []<-[$$258, $$253] <- test.stock project ({s_w_id:any,s_i_id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      data-scan []<-[$$258, $$253] <- test.stock project ({s_w_id:any,s_i_id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$266, $$267]  |PARTITIONED|
-                                                            select (and(lt($$256, "2018-04-01 00:00:00.000000"), ge($$256, "2018-01-01 00:00:00.000000"))) project: [$$259, $$266, $$267] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            select (and(lt($$256, "2018-04-01 00:00:00.000000"), ge($$256, "2018-01-01 00:00:00.000000"))) project: [$$259, $$266, $$267] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- REPLICATE  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    assign [$$259, $$267, $$266, $$256] <- [$$255.getField("ol_amount"), $$255.getField("ol_supply_w_id"), $$255.getField("ol_i_id"), $$255.getField("ol_delivery_d")] project: [$$259, $$267, $$266, $$256] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    assign [$$259, $$267, $$266, $$256] <- [$$255.getField("ol_amount"), $$255.getField("ol_supply_w_id"), $$255.getField("ol_i_id"), $$255.getField("ol_delivery_d")] project: [$$259, $$267, $$266, $$256] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ASSIGN  |PARTITIONED|
-                                                                      unnest $$255 <- scan-collection($$270) project: [$$255] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      unnest $$255 <- scan-collection($$270) project: [$$255] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- UNNEST  |PARTITIONED|
-                                                                        assign [$$270] <- [$$254.getField("o_orderline")] project: [$$270] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        assign [$$270] <- [$$254.getField("o_orderline")] project: [$$270] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ASSIGN  |PARTITIONED|
-                                                                          project ([$$254]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          project ([$$254]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- STREAM_PROJECT  |PARTITIONED|
-                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              unnest-map [$$257, $$254] <- index-search("orders", 0, "Default", "test", "orders", false, false, 1, $$291, 1, $$291, true, true, true) project ({o_orderline:[{ol_delivery_d:any,ol_i_id:any,ol_supply_w_id:any,ol_amount:any}]}) range-filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              unnest-map [$$257, $$254] <- index-search("orders", 0, "Default", "test", "orders", false, false, 1, $$291, 1, $$291, true, true, true) project ({o_orderline:[{ol_delivery_d:any,ol_i_id:any,ol_supply_w_id:any,ol_amount:any}]}) range-filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- BTREE_SEARCH  |PARTITIONED|
-                                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                  distinct ([$$291]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  distinct ([$$291]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-                                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                      order (ASC, $$291) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      order (ASC, $$291) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- STABLE_SORT [$$291(ASC)]  |PARTITIONED|
-                                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                          project ([$$291]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          project ([$$291]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- STREAM_PROJECT  |PARTITIONED|
-                                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                              unnest-map [$$290, $$291] <- index-search("orderline_delivery_d", 0, "Default", "test", "orders", false, false, 1, $$288, 1, $$289, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              unnest-map [$$290, $$291] <- index-search("orderline_delivery_d", 0, "Default", "test", "orders", false, false, 1, $$288, 1, $$289, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- BTREE_SEARCH  |PARTITIONED|
-                                                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                  assign [$$288, $$289] <- ["2018-01-01 00:00:00.000000", "2018-04-01 00:00:00.000000"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  assign [$$288, $$289] <- ["2018-01-01 00:00:00.000000", "2018-04-01 00:00:00.000000"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- ASSIGN  |PARTITIONED|
-                                                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$230]  |PARTITIONED|
-                    assign [$$274, $$273, $$272, $$230] <- [$$su.getField("su_phone"), $$su.getField("su_address"), $$su.getField("su_name"), $$su.getField("su_suppkey")] project: [$$230, $$272, $$273, $$274] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$274, $$273, $$272, $$230] <- [$$su.getField("su_phone"), $$su.getField("su_address"), $$su.getField("su_name"), $$su.getField("su_suppkey")] project: [$$230, $$272, $$273, $$274] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$su]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$su]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$234, $$su] <- test.supplier project ({su_phone:any,su_suppkey:any,su_name:any,su_address:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$234, $$su] <- test.supplier project ({su_phone:any,su_suppkey:any,su_name:any,su_address:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.011.plan
index 6be8f9a..638069d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.011.plan
@@ -1,208 +1,208 @@
-distribute result [$$223] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$223] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$223] <- [{"su_suppkey": $$230, "su_name": $$272, "su_address": $$273, "su_phone": $$274, "total_revenue": $$231}] project: [$$223] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$223] <- [{"su_suppkey": $$230, "su_name": $$272, "su_address": $$273, "su_phone": $$274, "total_revenue": $$231}] project: [$$223] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$230(ASC) ]  |PARTITIONED|
-        order (ASC, $$230) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$230) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$230(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$230, $$272, $$273, $$274, $$231]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$230, $$272, $$273, $$274, $$231]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$230, $#1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$230, $#1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$#1][$$230]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$#1]  |PARTITIONED|
-                    project ([$$231, $#1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$231, $#1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$231, $$268)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$231, $$268)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$231][$$268]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$231]  |PARTITIONED|
-                            assign [$$231] <- [{"supplier_no": $#1, "total_rev": $$240}.getField("total_revenue")] project: [$$231, $#1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$231] <- [{"supplier_no": $#1, "total_rev": $$240}.getField("total_revenue")] project: [$$231, $#1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                 group by ([$#1 := $$280]) decor ([]) {
-                                          aggregate [$$240] <- [agg-global-sql-sum($$279)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          aggregate [$$240] <- [agg-global-sql-sum($$279)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- AGGREGATE  |LOCAL|
-                                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- SORT_GROUP_BY[$$280]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$280]  |PARTITIONED|
                                     group by ([$$280 := $$225]) decor ([]) {
-                                              aggregate [$$279] <- [agg-local-sql-sum($$169)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              aggregate [$$279] <- [agg-local-sql-sum($$169)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- AGGREGATE  |LOCAL|
-                                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                           } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                           } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- SORT_GROUP_BY[$$225]  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        assign [$$225] <- [numeric-mod(numeric-multiply($$228, $$229), 10000)] project: [$$169, $$225] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$225] <- [numeric-mod(numeric-multiply($$228, $$229), 10000)] project: [$$169, $$225] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          project ([$$228, $$229, $$169]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$228, $$229, $$169]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (and(eq($$262, $$229), eq($$263, $$228))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              join (and(eq($$262, $$229), eq($$263, $$228))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HYBRID_HASH_JOIN [$$229, $$228][$$262, $$263]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  assign [$$228, $$229] <- [$$250, $$251] project: [$$228, $$229] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$228, $$229] <- [$$250, $$251] project: [$$228, $$229] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- REPLICATE  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HASH_PARTITION_EXCHANGE [$$251, $$250]  |PARTITIONED|
-                                                          assign [$$251, $$250] <- [$$253.getField("s_i_id"), $$253.getField("s_w_id")] project: [$$250, $$251] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          assign [$$251, $$250] <- [$$253.getField("s_i_id"), $$253.getField("s_w_id")] project: [$$250, $$251] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ASSIGN  |PARTITIONED|
-                                                            project ([$$253]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            project ([$$253]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_PROJECT  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$258, $$253] <- test.stock project ({s_w_id:any,s_i_id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                data-scan []<-[$$258, $$253] <- test.stock project ({s_w_id:any,s_i_id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$262, $$263]  |PARTITIONED|
-                                                  select (and(ge($$227, "2018-01-01 00:00:00.000000"), lt($$227, "2018-04-01 00:00:00.000000"))) project: [$$169, $$262, $$263] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  select (and(ge($$227, "2018-01-01 00:00:00.000000"), lt($$227, "2018-04-01 00:00:00.000000"))) project: [$$169, $$262, $$263] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STREAM_SELECT  |PARTITIONED|
-                                                    assign [$$169, $$263, $$262, $$227] <- [$$259, $$267, $$266, $$256] project: [$$169, $$263, $$262, $$227] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$169, $$263, $$262, $$227] <- [$$259, $$267, $$266, $$256] project: [$$169, $$263, $$262, $$227] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- REPLICATE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            assign [$$259, $$267, $$266, $$256] <- [$$255.getField("ol_amount"), $$255.getField("ol_supply_w_id"), $$255.getField("ol_i_id"), $$255.getField("ol_delivery_d")] project: [$$259, $$267, $$266, $$256] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$259, $$267, $$266, $$256] <- [$$255.getField("ol_amount"), $$255.getField("ol_supply_w_id"), $$255.getField("ol_i_id"), $$255.getField("ol_delivery_d")] project: [$$259, $$267, $$266, $$256] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              unnest $$255 <- scan-collection($$270) project: [$$255] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              unnest $$255 <- scan-collection($$270) project: [$$255] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- UNNEST  |PARTITIONED|
-                                                                assign [$$270] <- [$$254.getField("o_orderline")] project: [$$270] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                assign [$$270] <- [$$254.getField("o_orderline")] project: [$$270] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ASSIGN  |PARTITIONED|
-                                                                  project ([$$254]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  project ([$$254]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      data-scan []<-[$$257, $$254] <- test.orders project ({o_orderline:[{ol_delivery_d:any,ol_i_id:any,ol_supply_w_id:any,ol_amount:any}]}) filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) range-filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      data-scan []<-[$$257, $$254] <- test.orders project ({o_orderline:[{ol_delivery_d:any,ol_i_id:any,ol_supply_w_id:any,ol_amount:any}]}) filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) range-filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$268]  |PARTITIONED|
-                            assign [$$268] <- [get-item($$213, 0)] project: [$$268] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$268] <- [get-item($$213, 0)] project: [$$268] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |UNPARTITIONED|
-                              aggregate [$$213] <- [listify($$278)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              aggregate [$$213] <- [listify($$278)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- AGGREGATE  |UNPARTITIONED|
-                                aggregate [$$278] <- [agg-global-sql-max($$281)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$278] <- [agg-global-sql-max($$281)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |UNPARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                                    aggregate [$$281] <- [agg-local-sql-max($$210)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$281] <- [agg-local-sql-max($$210)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |PARTITIONED|
-                                      assign [$$210] <- [{"supplier_no": $$247, "total_rev": $$265}.getField("total_revenue")] project: [$$210] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$210] <- [{"supplier_no": $$247, "total_rev": $$265}.getField("total_revenue")] project: [$$210] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                           group by ([$$247 := $$283]) decor ([]) {
-                                                    aggregate [$$265] <- [agg-global-sql-sum($$282)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    aggregate [$$265] <- [agg-global-sql-sum($$282)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- AGGREGATE  |LOCAL|
-                                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- SORT_GROUP_BY[$$283]  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- HASH_PARTITION_EXCHANGE [$$283]  |PARTITIONED|
                                               group by ([$$283 := $$249]) decor ([]) {
-                                                        aggregate [$$282] <- [agg-local-sql-sum($$259)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        aggregate [$$282] <- [agg-local-sql-sum($$259)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- AGGREGATE  |LOCAL|
-                                                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- SORT_GROUP_BY[$$249]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  assign [$$249] <- [numeric-mod(numeric-multiply($$250, $$251), 10000)] project: [$$259, $$249] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$249] <- [numeric-mod(numeric-multiply($$250, $$251), 10000)] project: [$$259, $$249] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    project ([$$250, $$251, $$259]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    project ([$$250, $$251, $$259]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        join (and(eq($$266, $$251), eq($$267, $$250))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        join (and(eq($$266, $$251), eq($$267, $$250))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HYBRID_HASH_JOIN [$$251, $$250][$$266, $$267]  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- REPLICATE  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- HASH_PARTITION_EXCHANGE [$$251, $$250]  |PARTITIONED|
-                                                                assign [$$251, $$250] <- [$$253.getField("s_i_id"), $$253.getField("s_w_id")] project: [$$250, $$251] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                assign [$$251, $$250] <- [$$253.getField("s_i_id"), $$253.getField("s_w_id")] project: [$$250, $$251] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ASSIGN  |PARTITIONED|
-                                                                  project ([$$253]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  project ([$$253]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      data-scan []<-[$$258, $$253] <- test.stock project ({s_w_id:any,s_i_id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      data-scan []<-[$$258, $$253] <- test.stock project ({s_w_id:any,s_i_id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$266, $$267]  |PARTITIONED|
-                                                            select (and(lt($$256, "2018-04-01 00:00:00.000000"), ge($$256, "2018-01-01 00:00:00.000000"))) project: [$$259, $$266, $$267] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            select (and(lt($$256, "2018-04-01 00:00:00.000000"), ge($$256, "2018-01-01 00:00:00.000000"))) project: [$$259, $$266, $$267] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- REPLICATE  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    assign [$$259, $$267, $$266, $$256] <- [$$255.getField("ol_amount"), $$255.getField("ol_supply_w_id"), $$255.getField("ol_i_id"), $$255.getField("ol_delivery_d")] project: [$$259, $$267, $$266, $$256] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    assign [$$259, $$267, $$266, $$256] <- [$$255.getField("ol_amount"), $$255.getField("ol_supply_w_id"), $$255.getField("ol_i_id"), $$255.getField("ol_delivery_d")] project: [$$259, $$267, $$266, $$256] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ASSIGN  |PARTITIONED|
-                                                                      unnest $$255 <- scan-collection($$270) project: [$$255] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      unnest $$255 <- scan-collection($$270) project: [$$255] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- UNNEST  |PARTITIONED|
-                                                                        assign [$$270] <- [$$254.getField("o_orderline")] project: [$$270] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        assign [$$270] <- [$$254.getField("o_orderline")] project: [$$270] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ASSIGN  |PARTITIONED|
-                                                                          project ([$$254]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          project ([$$254]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- STREAM_PROJECT  |PARTITIONED|
-                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              data-scan []<-[$$257, $$254] <- test.orders project ({o_orderline:[{ol_delivery_d:any,ol_i_id:any,ol_supply_w_id:any,ol_amount:any}]}) filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) range-filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              data-scan []<-[$$257, $$254] <- test.orders project ({o_orderline:[{ol_delivery_d:any,ol_i_id:any,ol_supply_w_id:any,ol_amount:any}]}) filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) range-filter on: and(ge(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-01-01 00:00:00.000000"), lt(scan-collection($$254.getField("o_orderline")).getField("ol_delivery_d"), "2018-04-01 00:00:00.000000")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$230]  |PARTITIONED|
-                    assign [$$274, $$273, $$272, $$230] <- [$$su.getField("su_phone"), $$su.getField("su_address"), $$su.getField("su_name"), $$su.getField("su_suppkey")] project: [$$230, $$272, $$273, $$274] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$274, $$273, $$272, $$230] <- [$$su.getField("su_phone"), $$su.getField("su_address"), $$su.getField("su_name"), $$su.getField("su_suppkey")] project: [$$230, $$272, $$273, $$274] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$su]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$su]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$234, $$su] <- test.supplier project ({su_phone:any,su_suppkey:any,su_name:any,su_address:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$234, $$su] <- test.supplier project ({su_phone:any,su_suppkey:any,su_name:any,su_address:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.020.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.020.plan
index dba3a54..2befda7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.020.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.020.plan
@@ -1,62 +1,62 @@
-distribute result [$$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$54] <- [{"$1": $$59}] project: [$$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$54] <- [{"$1": $$59}] project: [$$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$59] <- [agg-sql-sum($$62)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$59] <- [agg-sql-sum($$62)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$62] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$62] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (eq($$57, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              join (eq($$57, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HYBRID_HASH_JOIN [$$57][$$58]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$57]  |PARTITIONED|
-                  select (gt($$o1.getField("o_ol_cnt"), 4)) project: [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (gt($$o1.getField("o_ol_cnt"), 4)) project: [$$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    assign [$$o1, $$57] <- [$$o2, $$58] project: [$$o1, $$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$o1, $$57] <- [$$o2, $$58] project: [$$o1, $$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- REPLICATE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$58] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$58] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan []<-[$$56, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  data-scan []<-[$$56, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                  select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$58] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$58] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          assign [$$58] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$58] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$56, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$56, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.021.plan
index c168866..0289366 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.021.plan
@@ -1,77 +1,77 @@
-distribute result [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$68] <- [{"$1": $$71}] project: [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$68] <- [{"$1": $$71}] project: [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$71] <- [agg-sql-sum($$78)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$71] <- [agg-sql-sum($$78)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$78] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$78] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (eq($$72, $$73)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              join (eq($$72, $$73)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HYBRID_HASH_JOIN [$$72][$$73]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$72]  |PARTITIONED|
-                  select (eq($$o1.getField("o_orderline").getField("ol_dist_info"), "x")) project: [$$72] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (eq($$o1.getField("o_orderline").getField("ol_dist_info"), "x")) project: [$$72] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    assign [$$72] <- [$$o1.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$72] <- [$$o1.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$o1] <- [$$o2] project: [$$o1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$o1] <- [$$o2] project: [$$o1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- REPLICATE  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan []<-[$$70, $$o2] <- test.orders project ({o_carrier_id:any,o_orderline:<[{ol_dist_info:any}],{ol_dist_info:any}>}) filter on: or(eq($$o2.getField("o_orderline").getField("ol_dist_info"), "x"), eq(scan-collection($$o2.getField("o_orderline")).getField("ol_dist_info"), "x")) range-filter on: or(eq($$o2.getField("o_orderline").getField("ol_dist_info"), "x"), eq(scan-collection($$o2.getField("o_orderline")).getField("ol_dist_info"), "x")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  data-scan []<-[$$70, $$o2] <- test.orders project ({o_carrier_id:any,o_orderline:<[{ol_dist_info:any}],{ol_dist_info:any}>}) filter on: or(eq($$o2.getField("o_orderline").getField("ol_dist_info"), "x"), eq(scan-collection($$o2.getField("o_orderline")).getField("ol_dist_info"), "x")) range-filter on: or(eq($$o2.getField("o_orderline").getField("ol_dist_info"), "x"), eq(scan-collection($$o2.getField("o_orderline")).getField("ol_dist_info"), "x")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                  select ($$57) project: [$$73] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select ($$57) project: [$$73] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$73, $$57]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$73, $$57]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
                       subplan {
-                                aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  select (eq($$76, "x")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  select (eq($$76, "x")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_SELECT  |LOCAL|
-                                    assign [$$76] <- [$$ol.getField("ol_dist_info")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$76] <- [$$ol.getField("ol_dist_info")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |LOCAL|
-                                      unnest $$ol <- scan-collection($$75) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      unnest $$ol <- scan-collection($$75) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- UNNEST  |LOCAL|
-                                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SUBPLAN  |PARTITIONED|
-                        assign [$$73, $$75] <- [$$o2.getField("o_carrier_id"), $$o2.getField("o_orderline")] project: [$$73, $$75] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$73, $$75] <- [$$o2.getField("o_carrier_id"), $$o2.getField("o_orderline")] project: [$$73, $$75] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- REPLICATE  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$70, $$o2] <- test.orders project ({o_carrier_id:any,o_orderline:<[{ol_dist_info:any}],{ol_dist_info:any}>}) filter on: or(eq($$o2.getField("o_orderline").getField("ol_dist_info"), "x"), eq(scan-collection($$o2.getField("o_orderline")).getField("ol_dist_info"), "x")) range-filter on: or(eq($$o2.getField("o_orderline").getField("ol_dist_info"), "x"), eq(scan-collection($$o2.getField("o_orderline")).getField("ol_dist_info"), "x")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    data-scan []<-[$$70, $$o2] <- test.orders project ({o_carrier_id:any,o_orderline:<[{ol_dist_info:any}],{ol_dist_info:any}>}) filter on: or(eq($$o2.getField("o_orderline").getField("ol_dist_info"), "x"), eq(scan-collection($$o2.getField("o_orderline")).getField("ol_dist_info"), "x")) range-filter on: or(eq($$o2.getField("o_orderline").getField("ol_dist_info"), "x"), eq(scan-collection($$o2.getField("o_orderline")).getField("ol_dist_info"), "x")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.022.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.022.plan
index 11485c0..5016cae 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.022.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.022.plan
@@ -1,60 +1,60 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$52] <- [{"$1": $$57}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"$1": $$57}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$57] <- [agg-sql-sum($$59)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$57] <- [agg-sql-sum($$59)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$59] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$59] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (eq($$55, $$56)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              join (eq($$55, $$56)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HYBRID_HASH_JOIN [$$55][$$56]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                  assign [$$o1, $$55] <- [$$o2, $$56] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$o1, $$55] <- [$$o2, $$56] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          assign [$$56] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$56] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$54, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$54, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                  select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          assign [$$56] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$56] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$54, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$54, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.023.plan
index 28afa1c..7ce25eb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.023.plan
@@ -1,60 +1,60 @@
-distribute result [$$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$54] <- [{"$1": $$59}] project: [$$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$54] <- [{"$1": $$59}] project: [$$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$59] <- [agg-sql-sum($$62)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$59] <- [agg-sql-sum($$62)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$62] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$62] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (eq($$57, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              join (eq($$57, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HYBRID_HASH_JOIN [$$57][$$58]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$57] <- [$$58] project: [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$57] <- [$$58] project: [$$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                          select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$58] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$58] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            assign [$$58] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$58] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan []<-[$$56, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) filter on: eq($$o2.getField("o_ol_cnt"), 1) range-filter on: eq($$o2.getField("o_ol_cnt"), 1) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  data-scan []<-[$$56, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) filter on: eq($$o2.getField("o_ol_cnt"), 1) range-filter on: eq($$o2.getField("o_ol_cnt"), 1) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- REPLICATE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                      select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$58] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$58] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        assign [$$58] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$58] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$56, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) filter on: eq($$o2.getField("o_ol_cnt"), 1) range-filter on: eq($$o2.getField("o_ol_cnt"), 1) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$56, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt:any}) filter on: eq($$o2.getField("o_ol_cnt"), 1) range-filter on: eq($$o2.getField("o_ol_cnt"), 1) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.030.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.030.plan
index 5c6765e..90c1038 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.030.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.030.plan
@@ -1,58 +1,58 @@
-distribute result [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$34] <- [{"o1": $$o1}] project: [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$34] <- [{"o1": $$o1}] project: [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$o1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$o1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          join (eq($$37, $$38)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          join (eq($$37, $$38)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HYBRID_HASH_JOIN [$$37][$$38]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$37]  |PARTITIONED|
-              select (gt($$o1.getField("o_ol_cnt"), 4)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (gt($$o1.getField("o_ol_cnt"), 4)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$o1, $$37] <- [$$o2, $$38] project: [$$o1, $$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$o1, $$37] <- [$$o2, $$38] project: [$$o1, $$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- REPLICATE  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        assign [$$38] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$38] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$36, $$o2] <- test.orders filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$36, $$o2] <- test.orders filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-              select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- REPLICATE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      assign [$$38] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$38] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$36, $$o2] <- test.orders filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$36, $$o2] <- test.orders filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.031.plan
index 9c1ea1e..3751b3b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.031.plan
@@ -1,58 +1,58 @@
-distribute result [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$36] <- [{"o1_id": $$43, "o2_id": $$44}] project: [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$36] <- [{"o1_id": $$43, "o2_id": $$44}] project: [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$43, $$44]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$43, $$44]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          join (eq($$39, $$40)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          join (eq($$39, $$40)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HYBRID_HASH_JOIN [$$39][$$40]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$39]  |PARTITIONED|
-              select (gt($$o1.getField("o_ol_cnt"), 4)) project: [$$43, $$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (gt($$o1.getField("o_ol_cnt"), 4)) project: [$$43, $$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$o1, $$43, $$39] <- [$$o2, $$44, $$40] project: [$$o1, $$43, $$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$o1, $$43, $$39] <- [$$o2, $$44, $$40] project: [$$o1, $$43, $$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- REPLICATE  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        assign [$$44, $$40] <- [$$o2.getField("o_id"), $$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$44, $$40] <- [$$o2.getField("o_id"), $$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$38, $$o2] <- test.orders project ({o_carrier_id:any,o_id:any,o_ol_cnt:any}) filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$38, $$o2] <- test.orders project ({o_carrier_id:any,o_id:any,o_ol_cnt:any}) filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$40]  |PARTITIONED|
-              select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$44, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (eq($$o2.getField("o_ol_cnt"), 1)) project: [$$44, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- REPLICATE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      assign [$$44, $$40] <- [$$o2.getField("o_id"), $$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$44, $$40] <- [$$o2.getField("o_id"), $$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$38, $$o2] <- test.orders project ({o_carrier_id:any,o_id:any,o_ol_cnt:any}) filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$38, $$o2] <- test.orders project ({o_carrier_id:any,o_id:any,o_ol_cnt:any}) filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt"), 4), eq($$o2.getField("o_ol_cnt"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.032.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.032.plan
index e38a990..b85e46f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.032.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.032.plan
@@ -1,58 +1,58 @@
-distribute result [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$36] <- [{"o1_id": $$43, "o2_id": $$44}] project: [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$36] <- [{"o1_id": $$43, "o2_id": $$44}] project: [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$43, $$44]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$43, $$44]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          join (eq($$39, $$40)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          join (eq($$39, $$40)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HYBRID_HASH_JOIN [$$39][$$40]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$39]  |PARTITIONED|
-              select (gt($$o1.getField("o_ol_cnt_1"), 4)) project: [$$43, $$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (gt($$o1.getField("o_ol_cnt_1"), 4)) project: [$$43, $$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$o1, $$43, $$39] <- [$$o2, $$44, $$40] project: [$$o1, $$43, $$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$o1, $$43, $$39] <- [$$o2, $$44, $$40] project: [$$o1, $$43, $$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- REPLICATE  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        assign [$$44, $$40] <- [$$o2.getField("o_id"), $$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$44, $$40] <- [$$o2.getField("o_id"), $$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$38, $$o2] <- test.orders project ({o_carrier_id:any,o_id:any,o_ol_cnt_2:any,o_ol_cnt_1:any}) filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$38, $$o2] <- test.orders project ({o_carrier_id:any,o_id:any,o_ol_cnt_2:any,o_ol_cnt_1:any}) filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$40]  |PARTITIONED|
-              select (eq($$o2.getField("o_ol_cnt_2"), 1)) project: [$$44, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (eq($$o2.getField("o_ol_cnt_2"), 1)) project: [$$44, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- REPLICATE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      assign [$$44, $$40] <- [$$o2.getField("o_id"), $$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$44, $$40] <- [$$o2.getField("o_id"), $$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$38, $$o2] <- test.orders project ({o_carrier_id:any,o_id:any,o_ol_cnt_2:any,o_ol_cnt_1:any}) filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$38, $$o2] <- test.orders project ({o_carrier_id:any,o_id:any,o_ol_cnt_2:any,o_ol_cnt_1:any}) filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.033.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.033.plan
index 871b3af..fdfcbe9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.033.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.033.plan
@@ -1,58 +1,58 @@
-distribute result [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$34] <- [{"o1": $$o1, "o2": $$o2}] project: [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$34] <- [{"o1": $$o1, "o2": $$o2}] project: [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$o1, $$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$o1, $$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          join (eq($$37, $$38)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          join (eq($$37, $$38)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HYBRID_HASH_JOIN [$$37][$$38]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$37]  |PARTITIONED|
-              select (gt($$o1.getField("o_ol_cnt_1"), 4)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (gt($$o1.getField("o_ol_cnt_1"), 4)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$o1, $$37] <- [$$o2, $$38] project: [$$o1, $$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$o1, $$37] <- [$$o2, $$38] project: [$$o1, $$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- REPLICATE  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        assign [$$38] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$38] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$36, $$o2] <- test.orders filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$36, $$o2] <- test.orders filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-              select (eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- REPLICATE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      assign [$$38] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$38] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$36, $$o2] <- test.orders filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$36, $$o2] <- test.orders filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.034.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.034.plan
index 41aefee..49aea98 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.034.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.034.plan
@@ -1,62 +1,62 @@
-distribute result [$$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$39] <- [{"o1_dist_info": $$46, "o2_dist_info": $$47}] project: [$$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$39] <- [{"o1_dist_info": $$46, "o2_dist_info": $$47}] project: [$$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$46, $$47]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$46, $$47]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          join (eq($$42, $$43)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          join (eq($$42, $$43)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HYBRID_HASH_JOIN [$$42][$$43]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$42]  |PARTITIONED|
-              assign [$$46] <- [$$o1.getField("o_orderline").getField("ol_dist_info")] project: [$$46, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$46] <- [$$o1.getField("o_orderline").getField("ol_dist_info")] project: [$$46, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                select (gt($$o1.getField("o_ol_cnt_1"), 4)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (gt($$o1.getField("o_ol_cnt_1"), 4)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$o1, $$42] <- [$$o2, $$43] project: [$$o1, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$o1, $$42] <- [$$o2, $$43] project: [$$o1, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          assign [$$43] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$43] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$41, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt_2:any,o_ol_cnt_1:any,o_orderline:<[{ol_dist_info:any}],{ol_dist_info:any}>}) filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$41, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt_2:any,o_ol_cnt_1:any,o_orderline:<[{ol_dist_info:any}],{ol_dist_info:any}>}) filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$43]  |PARTITIONED|
-              assign [$$47] <- [get-item($$o2.getField("o_orderline"), 0).getField("ol_dist_info")] project: [$$47, $$43] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$47] <- [get-item($$o2.getField("o_orderline"), 0).getField("ol_dist_info")] project: [$$47, $$43] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                select (eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- REPLICATE  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        assign [$$43] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$43] <- [$$o2.getField("o_carrier_id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$o2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$o2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$41, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt_2:any,o_ol_cnt_1:any,o_orderline:<[{ol_dist_info:any}],{ol_dist_info:any}>}) filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$41, $$o2] <- test.orders project ({o_carrier_id:any,o_ol_cnt_2:any,o_ol_cnt_1:any,o_orderline:<[{ol_dist_info:any}],{ol_dist_info:any}>}) filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) range-filter on: or(gt($$o2.getField("o_ol_cnt_1"), 4), eq($$o2.getField("o_ol_cnt_2"), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.plan
index b44bf46..86f2bd7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.plan
@@ -1,38 +1,38 @@
-distribute result [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$50] <- [{"deptId": $#1, "star_cost": $$53}] project: [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$50] <- [{"deptId": $#1, "star_cost": $$53}] project: [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$#1 := $$58]) decor ([]) {
-                  aggregate [$$53] <- [agg-global-sql-sum($$57)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$53] <- [agg-global-sql-sum($$57)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$58]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
             group by ([$$58 := $$51]) decor ([]) {
-                      aggregate [$$57] <- [agg-local-sql-sum($$48)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$57] <- [agg-local-sql-sum($$48)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$51]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$51, $$48] <- [substring($$e.getField("dept").getField("department_id"), 0), $$e.getField("salary")] project: [$$48, $$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$51, $$48] <- [substring($$e.getField("dept").getField("department_id"), 0), $$e.getField("salary")] project: [$$48, $$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$e]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$e]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$52, $$e] <- gby.Employee [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$52, $$e] <- gby.Employee [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.plan
index d8a5148..89c25ed 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.plan
@@ -1,38 +1,38 @@
-distribute result [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$49] <- [{"deptId": $#1, "star_cost": $$52}] project: [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$49] <- [{"deptId": $#1, "star_cost": $$52}] project: [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$#1 := $$56]) decor ([]) {
-                  aggregate [$$52] <- [agg-global-sql-sum($$55)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$52] <- [agg-global-sql-sum($$55)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$56]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
             group by ([$$56 := $$50]) decor ([]) {
-                      aggregate [$$55] <- [agg-local-sql-sum($$47)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$55] <- [agg-local-sql-sum($$47)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$50]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$50, $$47] <- [substring($$e.getField(1), 0), $$e.getField(2)] project: [$$47, $$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$50, $$47] <- [substring($$e.getField(1), 0), $$e.getField(2)] project: [$$47, $$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$e]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$e]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$51, $$e] <- gby.Employee [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$51, $$e] <- gby.Employee [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-01/explain_object_constructor-01.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-01/explain_object_constructor-01.1.plan
index 2261f13..45c86e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-01/explain_object_constructor-01.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-01/explain_object_constructor-01.1.plan
@@ -1,8 +1,8 @@
-distribute result [$$2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$2] <- [{ "a": "1", "b": 1 }] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$2] <- [{ "a": "1", "b": 1 }] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-02/explain_object_constructor-02.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-02/explain_object_constructor-02.1.plan
index 1c7aaf6..3ec4bc1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-02/explain_object_constructor-02.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-02/explain_object_constructor-02.1.plan
@@ -1,8 +1,8 @@
-distribute result [$$2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$2] <- [{ "a": "1" }] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$2] <- [{ "a": "1" }] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-03/explain_object_constructor-03.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-03/explain_object_constructor-03.1.plan
index 044388f..1983b65 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-03/explain_object_constructor-03.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_object_constructor-03/explain_object_constructor-03.1.plan
@@ -1,8 +1,8 @@
-distribute result [$$2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$2] <- [{  }] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$2] <- [{  }] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_same_datasource_function_different_arguments/test.030.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_same_datasource_function_different_arguments/test.030.plan
index 7b24434..e245327 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_same_datasource_function_different_arguments/test.030.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_same_datasource_function_different_arguments/test.030.plan
@@ -1,34 +1,34 @@
-distribute result [$$11] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$11] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    union ($$16, $$17, $$11) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    union ($$16, $$17, $$11) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- UNION_ALL  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        assign [$$16] <- [cast({"intIndex": $$13})] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$16] <- [cast({"intIndex": $$13})] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |UNPARTITIONED|
-          aggregate [$$13] <- [listify($$12)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$13] <- [listify($$12)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |UNPARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$12] <- asterix.dump-index. [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$12] <- asterix.dump-index. [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        assign [$$17] <- [cast({"stringIndex": $$15})] project: [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$17] <- [cast({"stringIndex": $$15})] project: [$$17] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |UNPARTITIONED|
-          aggregate [$$15] <- [listify($$14)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$15] <- [listify($$14)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |UNPARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$14] <- asterix.dump-index. [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$14] <- asterix.dump-index. [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_simple/explain_simple.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_simple/explain_simple.1.plan
index 0e8ada1..9a5b37b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_simple/explain_simple.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_simple/explain_simple.1.plan
@@ -1,8 +1,8 @@
-distribute result [$$2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$2] <- [2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$2] <- [2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.02.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.02.plan
index 6f01ee7..cf3e016 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.02.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.02.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$14] <- [$$d.getField("integer_type")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$d.getField("integer_type")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$d] <- test.DeltalakeDataset1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$d] <- test.DeltalakeDataset1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.04.plan
index 6f01ee7..cf3e016 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.04.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$14] <- [$$d.getField("integer_type")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$d.getField("integer_type")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$d] <- test.DeltalakeDataset1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$d] <- test.DeltalakeDataset1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.06.plan
index 5b67dfe..e5bdcb7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.06.plan
@@ -1,44 +1,44 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"integer_type": $$34, "string_type": $$37, "timestamp_type": $$38}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"integer_type": $$34, "string_type": $$37, "timestamp_type": $$38}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$34, $$37, $$38]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$34, $$37, $$38]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$36(ASC) ]  |PARTITIONED|
-          order (ASC, $$36) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$36) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$36(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$34, $$37, $$38, $$36]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$34, $$37, $$38, $$36]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$34, $$35)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$34, $$35)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$34][$$35]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                      assign [$$34] <- [$$d1.getField("integer_type")] project: [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$34] <- [$$d1.getField("integer_type")] project: [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$d1] <- test.DeltalakeDataset1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$d1] <- test.DeltalakeDataset1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$35]  |PARTITIONED|
-                      assign [$$38, $$37, $$36, $$35] <- [$$d2.getField("timestamp_type"), $$d2.getField("string_type"), $$d2.getField("id"), $$d2.getField("integer_type")] project: [$$37, $$38, $$36, $$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$38, $$37, $$36, $$35] <- [$$d2.getField("timestamp_type"), $$d2.getField("string_type"), $$d2.getField("id"), $$d2.getField("integer_type")] project: [$$37, $$38, $$36, $$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$d2] <- test.DeltalakeDataset2 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$d2] <- test.DeltalakeDataset2 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.08.plan
index 226a67c..5ddf34c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.08.plan
@@ -1,44 +1,44 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"integer_type": $$34, "string_type": $$37, "timestamp_type": $$38}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"integer_type": $$34, "string_type": $$37, "timestamp_type": $$38}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$34, $$37, $$38]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$34, $$37, $$38]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$36(ASC) ]  |PARTITIONED|
-          order (ASC, $$36) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$36) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$36(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$34, $$37, $$38, $$36]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$34, $$37, $$38, $$36]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$34, $$35)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$34, $$35)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$34][$$35]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                      assign [$$34] <- [$$d1.getField("integer_type")] project: [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$34] <- [$$d1.getField("integer_type")] project: [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$d1] <- test.DeltalakeDataset1 project ({integer_type:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$d1] <- test.DeltalakeDataset1 project ({integer_type:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$35]  |PARTITIONED|
-                      assign [$$38, $$37, $$36, $$35] <- [$$d2.getField("timestamp_type"), $$d2.getField("string_type"), $$d2.getField("id"), $$d2.getField("integer_type")] project: [$$37, $$38, $$36, $$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$38, $$37, $$36, $$35] <- [$$d2.getField("timestamp_type"), $$d2.getField("string_type"), $$d2.getField("id"), $$d2.getField("integer_type")] project: [$$37, $$38, $$36, $$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$d2] <- test.DeltalakeDataset2 project ({string_type:any,timestamp_type:any,id:any,integer_type:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$d2] <- test.DeltalakeDataset2 project ({string_type:any,timestamp_type:any,id:any,integer_type:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.10.adm
index ba1aa87..0aa49d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.10.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/deltalake-field-access-pushdown/deltalake-field-access-pushdown.10.adm
@@ -1,40 +1,40 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"integer_type": $$34, "date_type": $$37, "decimal_type": $$38}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"integer_type": $$34, "date_type": $$37, "decimal_type": $$38}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$34, $$37, $$38]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$34, $$37, $$38]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$35(ASC) ]  |PARTITIONED|
-          order (ASC, $$35) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$35) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$35(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (eq($$34, $$35)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              join (eq($$34, $$35)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HYBRID_HASH_JOIN [$$34][$$35]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                  assign [$$37, $$34] <- [$$d1.getField("date_type"), $$d1.getField("integer_type")] project: [$$34, $$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$37, $$34] <- [$$d1.getField("date_type"), $$d1.getField("integer_type")] project: [$$34, $$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$d1] <- test.DeltalakeDataset1 project ({date_type:any,integer_type:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$d1] <- test.DeltalakeDataset1 project ({date_type:any,integer_type:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$35]  |PARTITIONED|
-                  assign [$$38, $$35] <- [$$d2.getField("decimal_type"), $$d2.getField("integer_type")] project: [$$38, $$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$38, $$35] <- [$$d2.getField("decimal_type"), $$d2.getField("integer_type")] project: [$$38, $$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$d2] <- test.DeltalakeDataset2 project ({decimal_type:any,integer_type:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$d2] <- test.DeltalakeDataset2 project ({decimal_type:any,integer_type:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-flat/embed-flat.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-flat/embed-flat.031.plan
index ad09779..b8803db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-flat/embed-flat.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-flat/embed-flat.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$n] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$n] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$n]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$n]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$19(ASC) ]  |PARTITIONED|
-        order (ASC, $$19) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$19) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$19(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(lowercase($$n.getField("name").getField("last")), "smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(lowercase($$n.getField("name").getField("last")), "smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-flat/embed-flat.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-flat/embed-flat.041.plan
index f6c3137..cedfcec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-flat/embed-flat.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-flat/embed-flat.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$n] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$n] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$n]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$n]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$19(ASC) ]  |PARTITIONED|
-        order (ASC, $$19) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$19) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$19(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(lowercase($$n.getField("name").getField("first")), "john")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(lowercase($$n.getField("name").getField("first")), "john")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.011.plan
index b560a5b..83c24b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.011.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$17(ASC) ]  |PARTITIONED|
-        order (ASC, $$17) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$17) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$17(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.021.plan
index 2bfad06..e4a5101 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.021.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.031.plan
index afb74f1..30bf3f8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.041.plan
index 6f2ecf3..4af85bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.111.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.111.plan
index ff27bfe..c2d9768 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.111.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.111.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$d] <- test.LastName embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$d] <- test.LastName embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.121.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.121.plan
index fc48056..3609b5d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.121.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.121.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-        order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.131.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.131.plan
index afef4ab..5e5d0b0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.131.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/embed-one-value/one-field.131.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.011.plan
index 8dcaa95..fb72471 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.011.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$17(ASC) ]  |PARTITIONED|
-        order (ASC, $$17) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$17) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$17(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.021.plan
index a99cc0c..3cafbad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.021.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.031.plan
index a7c5727..520adef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.041.plan
index a29116a..97483d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.051.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.051.plan
index 0a302b3..75fc425 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.051.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.051.plan
@@ -1,36 +1,36 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$20, $$17)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$20, $$17)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$17][$$20]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$17, $$22] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$17, $$22] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$20 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$20 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.061.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.061.plan
index 2af9f08..0e2668c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.061.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.061.plan
@@ -1,36 +1,36 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$24(ASC) ]  |PARTITIONED|
-        order (ASC, $$24) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$24) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$24(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$24]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$24]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$22, $$21)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$22, $$21)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$21][$$22]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$21, $$24] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$21, $$24] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$22 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$22 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.071.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.071.plan
index b10a200..1b6025b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.071.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.071.plan
@@ -1,40 +1,40 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-        order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$27) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$27]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$27]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$24, $$17)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$24, $$17)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$17][$$24]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$17] <- [lowercase($$d.getField("department"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$17] <- [lowercase($$d.getField("department"))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      select (eq($$d.getField("name").getField("last"), "Smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$d.getField("name").getField("last"), "Smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        assign [$$27] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$27] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$24 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$24 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.073.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.073.plan
index f8b544d..ac4d2c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.073.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.073.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-        order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$27) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(or(eq($$30, "hr"), eq($$30, "accounting")), eq($$d.getField("name").getField("last"), "Smith"))) project: [$$d, $$27] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(or(eq($$30, "hr"), eq($$30, "accounting")), eq($$d.getField("name").getField("last"), "Smith"))) project: [$$d, $$27] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$30, $$27] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$30, $$27] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.075.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.075.plan
index 47e4cee..139329f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.075.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.075.plan
@@ -1,40 +1,40 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$29(ASC) ]  |PARTITIONED|
-        order (ASC, $$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$29(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$29]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$29]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$26, $$25)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$26, $$25)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$25][$$26]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$25] <- [lowercase($$d.getField("department"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$25] <- [lowercase($$d.getField("department"))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      select (eq($$d.getField("name").getField("last"), "Smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$d.getField("name").getField("last"), "Smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        assign [$$29] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$29] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$26 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$26 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.077.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.077.plan
index 2015476..c2eefa0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.077.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.077.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$31, "hr"), eq($$31, "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$31, "hr"), eq($$31, "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$31, $$28] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$31, $$28] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.111.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.111.plan
index 8a6ad1c..740e547 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.111.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.111.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$d] <- test.LastName [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$d] <- test.LastName [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.121.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.121.plan
index b48def6..3275b9e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.121.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.121.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-        order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.131.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.131.plan
index 929d06d..ac0df78 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.131.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.131.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.211.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.211.plan
index fd9f409..ab04d0c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.211.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.211.plan
@@ -1,72 +1,72 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$45(ASC) ]  |PARTITIONED|
-        order (ASC, $$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$45(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$44, $$34)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$44, $$34)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$34][$$44]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$d, $$45, $$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$d, $$45, $$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$43, $$39)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$43, $$39)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$39][$$43]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$39, $$34] <- [lowercase($$48), lowercase($$d.getField("department"))] project: [$$d, $$45, $$34, $$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$39, $$34] <- [lowercase($$48), lowercase($$d.getField("department"))] project: [$$d, $$45, $$34, $$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              project ([$$d, $$45, $$48]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$d, $$45, $$48]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  join (eq($$45, $$46)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  join (eq($$45, $$46)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HYBRID_HASH_JOIN [$$45][$$46]  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- HASH_PARTITION_EXCHANGE [$$45]  |PARTITIONED|
-                                      assign [$$45] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$45] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- HASH_PARTITION_EXCHANGE [$$46]  |PARTITIONED|
-                                      assign [$$48, $$46] <- [$$l.getField("name").getField("last"), $$l.getField("id")] project: [$$48, $$46] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$48, $$46] <- [$$l.getField("name").getField("last"), $$l.getField("id")] project: [$$48, $$46] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$l] <- test.LastName prefix-filter on: or(eq(lowercase($$l.getField("name").getField("last")), "miller"), eq(lowercase($$l.getField("name").getField("last")), "smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$l] <- test.LastName prefix-filter on: or(eq(lowercase($$l.getField("name").getField("last")), "miller"), eq(lowercase($$l.getField("name").getField("last")), "smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                            unnest $$43 <- scan-collection(array: [ "miller", "smith" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            unnest $$43 <- scan-collection(array: [ "miller", "smith" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- UNNEST  |UNPARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$44 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$44 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.221.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.221.plan
index 1c924a2..c6a23a6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.221.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.221.plan
@@ -1,58 +1,58 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$41(ASC) ]  |PARTITIONED|
-        order (ASC, $$41) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$41) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$41(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$41]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$41]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$40, $$32)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$40, $$32)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$32][$$40]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$d, $$41, $$32]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$d, $$41, $$32]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$41, $$42)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$41, $$42)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$41][$$42]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$41]  |PARTITIONED|
-                            assign [$$32, $$41] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$32, $$41] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$42]  |PARTITIONED|
-                            select (eq(lowercase($$l.getField("name").getField("last")), "smith")) project: [$$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq(lowercase($$l.getField("name").getField("last")), "smith")) project: [$$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |PARTITIONED|
-                              assign [$$42] <- [$$l.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$42] <- [$$l.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan []<-[$$l] <- test.LastName prefix-filter on: eq(lowercase($$l.getField("name").getField("last")), "smith") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  data-scan []<-[$$l] <- test.LastName prefix-filter on: eq(lowercase($$l.getField("name").getField("last")), "smith") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$40 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$40 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.231.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.231.plan
index ad9c368..cb81343 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.231.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.231.plan
@@ -1,44 +1,44 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$42(ASC) ]  |PARTITIONED|
-        order (ASC, $$42) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$42) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$42(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(or(eq($$32, "hr"), eq($$32, "accounting")), eq($$41, "smith"))) project: [$$d, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(or(eq($$32, "hr"), eq($$32, "accounting")), eq($$41, "smith"))) project: [$$d, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$d, $$32, $$42, $$41]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$d, $$32, $$42, $$41]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$42, $$43)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$42, $$43)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$42][$$43]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$42]  |PARTITIONED|
-                      assign [$$32, $$42] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$32, $$42] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$43]  |PARTITIONED|
-                      assign [$$41, $$43] <- [lowercase($$l.getField("name").getField("last")), $$l.getField("id")] project: [$$41, $$43] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$41, $$43] <- [lowercase($$l.getField("name").getField("last")), $$l.getField("id")] project: [$$41, $$43] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$l] <- test.LastName [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$l] <- test.LastName [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/views/result.002.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/views/result.002.plan
index eaa9ad6..95fdd54 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/views/result.002.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/views/result.002.plan
@@ -1,18 +1,18 @@
-distribute result [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$62] <- [{"customer_id": $$95, "year": $$96, "month": $$97, "day": $$98, "company": $$99}] project: [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$62] <- [{"customer_id": $$95, "year": $$96, "month": $$97, "day": $$98, "company": $$99}] project: [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(eq($$95, 1), eq($$96, 2001), eq($$97, 1), eq($$98, 1), eq($$99, "ford"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(eq($$95, 1), eq($$96, 2001), eq($$97, 1), eq($$98, 1), eq($$99, "ford"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$99, $$98, $$97, $$96, $$95] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year")), int64-default-null($$m.getField("customer_id"))] project: [$$99, $$98, $$97, $$96, $$95] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$99, $$98, $$97, $$96, $$95] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year")), int64-default-null($$m.getField("customer_id"))] project: [$$99, $$98, $$97, $$96, $$95] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$m] <- test.maintenance prefix-filter on: and(eq(int64-default-null($$m.getField("customer_id")), 1), eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$m] <- test.maintenance prefix-filter on: and(eq(int64-default-null($$m.getField("customer_id")), 1), eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/views/result.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/views/result.004.plan
index 70fcea8..bfc4530 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/views/result.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/views/result.004.plan
@@ -1,18 +1,18 @@
-distribute result [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    select (and(eq($$62.getField("customerId"), 1), eq($$94, 2001), eq($$95, 1), eq($$96, 1), eq($$97, "ford"))) project: [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    select (and(eq($$62.getField("customerId"), 1), eq($$94, 2001), eq($$95, 1), eq($$96, 1), eq($$97, "ford"))) project: [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_SELECT  |PARTITIONED|
-      assign [$$62] <- [{"customer_id": int64-default-null($$m.getField("customer_id")), "year": $$94, "month": $$95, "day": $$96, "company": $$97}] project: [$$97, $$96, $$95, $$94, $$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$62] <- [{"customer_id": int64-default-null($$m.getField("customer_id")), "year": $$94, "month": $$95, "day": $$96, "company": $$97}] project: [$$97, $$96, $$95, $$94, $$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$97, $$96, $$95, $$94] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$97, $$96, $$95, $$94] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year"))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$m] <- test.maintenance2 prefix-filter on: and(eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$m] <- test.maintenance2 prefix-filter on: and(eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.011.plan
index 855cae6..596938c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.011.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$17(ASC) ]  |PARTITIONED|
-        order (ASC, $$17) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$17) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$17(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$17] <- [$$d.getField(0)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$17] <- [$$d.getField(0)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.021.plan
index 0a61174..fcc5ed8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.021.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-        order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField(2), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField(2), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$21] <- [$$d.getField(0)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$21] <- [$$d.getField(0)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.031.plan
index c5a7c10..20f2a2c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-        order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField(2), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField(2), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$21] <- [$$d.getField(0)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$21] <- [$$d.getField(0)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.041.plan
index 9e6cdd8..75bcbba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/csv/embed-one-value/one-field.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$20] <- [$$d.getField(0)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$20] <- [$$d.getField(0)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-flat/embed-flat.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-flat/embed-flat.031.plan
index ad09779..b8803db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-flat/embed-flat.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-flat/embed-flat.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$n] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$n] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$n]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$n]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$19(ASC) ]  |PARTITIONED|
-        order (ASC, $$19) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$19) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$19(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(lowercase($$n.getField("name").getField("last")), "smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(lowercase($$n.getField("name").getField("last")), "smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-flat/embed-flat.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-flat/embed-flat.041.plan
index f6c3137..cedfcec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-flat/embed-flat.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-flat/embed-flat.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$n] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$n] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$n]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$n]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$19(ASC) ]  |PARTITIONED|
-        order (ASC, $$19) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$19) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$19(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(lowercase($$n.getField("name").getField("first")), "john")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(lowercase($$n.getField("name").getField("first")), "john")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.011.plan
index b560a5b..83c24b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.011.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$17(ASC) ]  |PARTITIONED|
-        order (ASC, $$17) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$17) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$17(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.021.plan
index 2bfad06..e4a5101 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.021.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.031.plan
index afb74f1..30bf3f8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.041.plan
index 6f2ecf3..4af85bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.111.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.111.plan
index ff27bfe..c2d9768 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.111.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.111.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$d] <- test.LastName embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$d] <- test.LastName embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.121.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.121.plan
index fc48056..3609b5d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.121.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.121.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-        order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.131.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.131.plan
index afef4ab..5e5d0b0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.131.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/embed-one-value/one-field.131.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/not-in/not-in.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/not-in/not-in.011.plan
index a035869..737dea4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/not-in/not-in.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/not-in/not-in.011.plan
@@ -1,35 +1,35 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$19) project: [$$d, $$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$19) project: [$$d, $$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$d, $$22, $$19]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$d, $$22, $$19]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$19] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$19] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (not(if-missing-or-null(neq(lowercase($$21), "engineering"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (not(if-missing-or-null(neq(lowercase($$21), "engineering"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$22, $$21] <- [$$d.getField("id"), $$d.getField("department")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$22, $$21] <- [$$d.getField("id"), $$d.getField("department")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/not-in/not-in.111.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/not-in/not-in.111.plan
index f0a3dbe..cabb210 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/not-in/not-in.111.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/not-in/not-in.111.plan
@@ -1,61 +1,61 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$19) project: [$$d, $$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$19) project: [$$d, $$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$19, $$22, $$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$19, $$22, $$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   group by ([$$25 := $$23]) decor ([$$22; $$d]) {
-                            aggregate [$$19] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$19] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              select (not(is-missing($$24))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (not(is-missing($$24))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- PRE_CLUSTERED_GROUP_BY[$$23]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      order (ASC, $$23) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      order (ASC, $$23) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STABLE_SORT [$$23(ASC)]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$23]  |PARTITIONED|
-                          project ([$$d, $$22, $$24, $$23]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$d, $$22, $$24, $$23]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              left outer join (not(if-missing-or-null(neq(lowercase($$21), $#1), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              left outer join (not(if-missing-or-null(neq(lowercase($$21), $#1), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_LOOP  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  running-aggregate [$$23] <- [create-query-uid()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  running-aggregate [$$23] <- [create-query-uid()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- RUNNING_AGGREGATE  |PARTITIONED|
-                                    assign [$$22, $$21] <- [$$d.getField("id"), $$d.getField("department")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$22, $$21] <- [$$d.getField("id"), $$d.getField("department")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                  assign [$$24] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$24] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |UNPARTITIONED|
-                                    unnest $#1 <- scan-collection(array: [ "engineering", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $#1 <- scan-collection(array: [ "engineering", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |UNPARTITIONED|
-                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.011.plan
index 8dcaa95..fb72471 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.011.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$17(ASC) ]  |PARTITIONED|
-        order (ASC, $$17) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$17) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$17(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.021.plan
index a99cc0c..3cafbad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.021.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.031.plan
index a7c5727..520adef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.041.plan
index a29116a..97483d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.051.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.051.plan
index 0a302b3..75fc425 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.051.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.051.plan
@@ -1,36 +1,36 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$20, $$17)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$20, $$17)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$17][$$20]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$17, $$22] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$17, $$22] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$20 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$20 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.061.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.061.plan
index 2af9f08..0e2668c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.061.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.061.plan
@@ -1,36 +1,36 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$24(ASC) ]  |PARTITIONED|
-        order (ASC, $$24) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$24) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$24(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$24]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$24]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$22, $$21)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$22, $$21)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$21][$$22]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$21, $$24] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$21, $$24] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$22 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$22 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.071.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.071.plan
index b10a200..1b6025b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.071.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.071.plan
@@ -1,40 +1,40 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-        order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$27) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$27]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$27]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$24, $$17)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$24, $$17)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$17][$$24]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$17] <- [lowercase($$d.getField("department"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$17] <- [lowercase($$d.getField("department"))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      select (eq($$d.getField("name").getField("last"), "Smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$d.getField("name").getField("last"), "Smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        assign [$$27] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$27] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$24 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$24 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.073.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.073.plan
index f8b544d..ac4d2c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.073.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.073.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-        order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$27) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(or(eq($$30, "hr"), eq($$30, "accounting")), eq($$d.getField("name").getField("last"), "Smith"))) project: [$$d, $$27] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(or(eq($$30, "hr"), eq($$30, "accounting")), eq($$d.getField("name").getField("last"), "Smith"))) project: [$$d, $$27] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$30, $$27] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$30, $$27] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.075.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.075.plan
index 47e4cee..139329f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.075.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.075.plan
@@ -1,40 +1,40 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$29(ASC) ]  |PARTITIONED|
-        order (ASC, $$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$29(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$29]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$29]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$26, $$25)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$26, $$25)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$25][$$26]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$25] <- [lowercase($$d.getField("department"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$25] <- [lowercase($$d.getField("department"))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      select (eq($$d.getField("name").getField("last"), "Smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$d.getField("name").getField("last"), "Smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        assign [$$29] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$29] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$26 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$26 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.077.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.077.plan
index 2015476..c2eefa0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.077.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.077.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$31, "hr"), eq($$31, "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$31, "hr"), eq($$31, "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$31, $$28] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$31, $$28] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.111.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.111.plan
index 8a6ad1c..740e547 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.111.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.111.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$d] <- test.LastName [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$d] <- test.LastName [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.121.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.121.plan
index b48def6..3275b9e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.121.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.121.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-        order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.131.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.131.plan
index 929d06d..ac0df78 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.131.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.131.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.211.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.211.plan
index fd9f409..ab04d0c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.211.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.211.plan
@@ -1,72 +1,72 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$45(ASC) ]  |PARTITIONED|
-        order (ASC, $$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$45(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$44, $$34)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$44, $$34)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$34][$$44]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$d, $$45, $$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$d, $$45, $$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$43, $$39)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$43, $$39)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$39][$$43]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$39, $$34] <- [lowercase($$48), lowercase($$d.getField("department"))] project: [$$d, $$45, $$34, $$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$39, $$34] <- [lowercase($$48), lowercase($$d.getField("department"))] project: [$$d, $$45, $$34, $$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              project ([$$d, $$45, $$48]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$d, $$45, $$48]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  join (eq($$45, $$46)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  join (eq($$45, $$46)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HYBRID_HASH_JOIN [$$45][$$46]  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- HASH_PARTITION_EXCHANGE [$$45]  |PARTITIONED|
-                                      assign [$$45] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$45] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- HASH_PARTITION_EXCHANGE [$$46]  |PARTITIONED|
-                                      assign [$$48, $$46] <- [$$l.getField("name").getField("last"), $$l.getField("id")] project: [$$48, $$46] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$48, $$46] <- [$$l.getField("name").getField("last"), $$l.getField("id")] project: [$$48, $$46] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$l] <- test.LastName prefix-filter on: or(eq(lowercase($$l.getField("name").getField("last")), "miller"), eq(lowercase($$l.getField("name").getField("last")), "smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$l] <- test.LastName prefix-filter on: or(eq(lowercase($$l.getField("name").getField("last")), "miller"), eq(lowercase($$l.getField("name").getField("last")), "smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                            unnest $$43 <- scan-collection(array: [ "miller", "smith" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            unnest $$43 <- scan-collection(array: [ "miller", "smith" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- UNNEST  |UNPARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$44 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$44 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.221.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.221.plan
index 1c924a2..c6a23a6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.221.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.221.plan
@@ -1,58 +1,58 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$41(ASC) ]  |PARTITIONED|
-        order (ASC, $$41) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$41) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$41(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$d, $$41]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$d, $$41]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$40, $$32)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$40, $$32)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$32][$$40]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$d, $$41, $$32]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$d, $$41, $$32]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$41, $$42)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$41, $$42)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$41][$$42]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$41]  |PARTITIONED|
-                            assign [$$32, $$41] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$32, $$41] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$d] <- test.Department prefix-filter on: or(eq(lowercase($$d.getField("department")), "hr"), eq(lowercase($$d.getField("department")), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$42]  |PARTITIONED|
-                            select (eq(lowercase($$l.getField("name").getField("last")), "smith")) project: [$$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq(lowercase($$l.getField("name").getField("last")), "smith")) project: [$$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |PARTITIONED|
-                              assign [$$42] <- [$$l.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$42] <- [$$l.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan []<-[$$l] <- test.LastName prefix-filter on: eq(lowercase($$l.getField("name").getField("last")), "smith") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  data-scan []<-[$$l] <- test.LastName prefix-filter on: eq(lowercase($$l.getField("name").getField("last")), "smith") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    unnest $$40 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$40 <- scan-collection(array: [ "hr", "accounting" ]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |UNPARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.231.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.231.plan
index ad9c368..cb81343 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.231.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.231.plan
@@ -1,44 +1,44 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$42(ASC) ]  |PARTITIONED|
-        order (ASC, $$42) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$42) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$42(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(or(eq($$32, "hr"), eq($$32, "accounting")), eq($$41, "smith"))) project: [$$d, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(or(eq($$32, "hr"), eq($$32, "accounting")), eq($$41, "smith"))) project: [$$d, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$d, $$32, $$42, $$41]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$d, $$32, $$42, $$41]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$42, $$43)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$42, $$43)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$42][$$43]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$42]  |PARTITIONED|
-                      assign [$$32, $$42] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$32, $$42] <- [lowercase($$d.getField("department")), $$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$43]  |PARTITIONED|
-                      assign [$$41, $$43] <- [lowercase($$l.getField("name").getField("last")), $$l.getField("id")] project: [$$41, $$43] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$41, $$43] <- [lowercase($$l.getField("name").getField("last")), $$l.getField("id")] project: [$$41, $$43] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$l] <- test.LastName [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$l] <- test.LastName [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-flat/embed-flat.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-flat/embed-flat.031.plan
index ad09779..b8803db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-flat/embed-flat.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-flat/embed-flat.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$n] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$n] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$n]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$n]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$19(ASC) ]  |PARTITIONED|
-        order (ASC, $$19) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$19) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$19(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(lowercase($$n.getField("name").getField("last")), "smith")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(lowercase($$n.getField("name").getField("last")), "smith")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-flat/embed-flat.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-flat/embed-flat.041.plan
index f6c3137..cedfcec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-flat/embed-flat.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-flat/embed-flat.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$n] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$n] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$n]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$n]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$19(ASC) ]  |PARTITIONED|
-        order (ASC, $$19) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$19) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$19(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(lowercase($$n.getField("name").getField("first")), "john")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(lowercase($$n.getField("name").getField("first")), "john")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$19] <- [$$n.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$n] <- test.Name embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.011.plan
index b560a5b..83c24b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.011.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$17(ASC) ]  |PARTITIONED|
-        order (ASC, $$17) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$17) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$17(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.021.plan
index 2bfad06..e4a5101 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.021.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.031.plan
index afb74f1..30bf3f8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.041.plan
index 6f2ecf3..4af85bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.111.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.111.plan
index ff27bfe..c2d9768 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.111.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.111.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$d] <- test.LastName embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$d] <- test.LastName embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.121.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.121.plan
index fc48056..3609b5d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.121.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.121.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-        order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.131.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.131.plan
index afef4ab..5e5d0b0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.131.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/embed-one-value/one-field.131.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.011.plan
index 8dcaa95..fb72471 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.011.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$17(ASC) ]  |PARTITIONED|
-        order (ASC, $$17) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$17) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$17(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("department"), "accounting")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$17] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.021.plan
index a99cc0c..3cafbad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.021.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq($$d.getField("department"), "accounting") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.031.plan
index a7c5727..520adef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.031.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$22(ASC) ]  |PARTITIONED|
-        order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or(eq($$d.getField("department"), "accounting"), eq($$d.getField("name").getField("last"), "Smith"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.041.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.041.plan
index a29116a..97483d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.041.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.041.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq(uppercase($$d.getField("department")), "HR")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$20] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.Department prefix-filter on: eq(uppercase($$d.getField("department")), "HR") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.111.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.111.plan
index 8a6ad1c..740e547 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.111.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.111.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$d] <- test.LastName [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$d] <- test.LastName [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.121.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.121.plan
index b48def6..3275b9e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.121.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.121.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-        order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (eq($$d.getField("name").getField("last"), "Jones")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$18] <- [$$d.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq($$d.getField("name").getField("last"), "Jones") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.131.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.131.plan
index 929d06d..ac0df78 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.131.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/one-field/one-field.131.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (and(eq(lowercase($$25.getField("first")), "john"), eq(string-concat(ordered-list-constructor("john ", lowercase($$25.getField("last")))), "john smith"))) project: [$$d, $$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$28, $$25] <- [$$d.getField("id"), $$d.getField("name")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$d] <- test.LastName prefix-filter on: eq(string-concat(ordered-list-constructor("john ", lowercase($$d.getField("name").getField("last")))), "john smith") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/views/result.002.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/views/result.002.adm
index 4b4dc7c..8e88dfd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/views/result.002.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/views/result.002.adm
@@ -1,18 +1,18 @@
-distribute result [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$62] <- [{"customer_id": $$95, "year": $$96, "month": $$97, "day": $$98, "company": $$99}] project: [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$62] <- [{"customer_id": $$95, "year": $$96, "month": $$97, "day": $$98, "company": $$99}] project: [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(eq($$95, 1), eq($$96, 2001), eq($$97, 1), eq($$98, 1), eq($$99, "ford"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(eq($$95, 1), eq($$96, 2001), eq($$97, 1), eq($$98, 1), eq($$99, "ford"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$99, $$98, $$97, $$96, $$95] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year")), int64-default-null($$m.getField("customer_id"))] project: [$$99, $$98, $$97, $$96, $$95] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$99, $$98, $$97, $$96, $$95] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year")), int64-default-null($$m.getField("customer_id"))] project: [$$99, $$98, $$97, $$96, $$95] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$m] <- test.maintenance project ({month:any,year:any,company:any,customer_id:any,day:any}) prefix-filter on: and(eq(int64-default-null($$m.getField("customer_id")), 1), eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$m] <- test.maintenance project ({month:any,year:any,company:any,customer_id:any,day:any}) prefix-filter on: and(eq(int64-default-null($$m.getField("customer_id")), 1), eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/views/result.004.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/views/result.004.adm
index 2545d66..eac8c5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/views/result.004.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/parquet/views/result.004.adm
@@ -1,18 +1,18 @@
-distribute result [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    select (and(eq($$62.getField("customerId"), 1), eq($$94, 2001), eq($$95, 1), eq($$96, 1), eq($$97, "ford"))) project: [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    select (and(eq($$62.getField("customerId"), 1), eq($$94, 2001), eq($$95, 1), eq($$96, 1), eq($$97, "ford"))) project: [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_SELECT  |PARTITIONED|
-      assign [$$62] <- [{"customer_id": int64-default-null($$m.getField("customer_id")), "year": $$94, "month": $$95, "day": $$96, "company": $$97}] project: [$$97, $$96, $$95, $$94, $$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$62] <- [{"customer_id": int64-default-null($$m.getField("customer_id")), "year": $$94, "month": $$95, "day": $$96, "company": $$97}] project: [$$97, $$96, $$95, $$94, $$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$97, $$96, $$95, $$94] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$97, $$96, $$95, $$94] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year"))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$m] <- test.maintenance2 project ({month:any,year:any,company:any,customer_id:any,day:any}) prefix-filter on: and(eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$m] <- test.maintenance2 project ({month:any,year:any,company:any,customer_id:any,day:any}) prefix-filter on: and(eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/views/result.002.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/views/result.002.plan
index eaa9ad6..95fdd54 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/views/result.002.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/views/result.002.plan
@@ -1,18 +1,18 @@
-distribute result [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$62] <- [{"customer_id": $$95, "year": $$96, "month": $$97, "day": $$98, "company": $$99}] project: [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$62] <- [{"customer_id": $$95, "year": $$96, "month": $$97, "day": $$98, "company": $$99}] project: [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(eq($$95, 1), eq($$96, 2001), eq($$97, 1), eq($$98, 1), eq($$99, "ford"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(eq($$95, 1), eq($$96, 2001), eq($$97, 1), eq($$98, 1), eq($$99, "ford"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$99, $$98, $$97, $$96, $$95] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year")), int64-default-null($$m.getField("customer_id"))] project: [$$99, $$98, $$97, $$96, $$95] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$99, $$98, $$97, $$96, $$95] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year")), int64-default-null($$m.getField("customer_id"))] project: [$$99, $$98, $$97, $$96, $$95] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$m] <- test.maintenance prefix-filter on: and(eq(int64-default-null($$m.getField("customer_id")), 1), eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$m] <- test.maintenance prefix-filter on: and(eq(int64-default-null($$m.getField("customer_id")), 1), eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/views/result.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/views/result.004.plan
index 70fcea8..bfc4530 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/views/result.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/views/result.004.plan
@@ -1,18 +1,18 @@
-distribute result [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    select (and(eq($$62.getField("customerId"), 1), eq($$94, 2001), eq($$95, 1), eq($$96, 1), eq($$97, "ford"))) project: [$$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    select (and(eq($$62.getField("customerId"), 1), eq($$94, 2001), eq($$95, 1), eq($$96, 1), eq($$97, "ford"))) project: [$$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_SELECT  |PARTITIONED|
-      assign [$$62] <- [{"customer_id": int64-default-null($$m.getField("customer_id")), "year": $$94, "month": $$95, "day": $$96, "company": $$97}] project: [$$97, $$96, $$95, $$94, $$62] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$62] <- [{"customer_id": int64-default-null($$m.getField("customer_id")), "year": $$94, "month": $$95, "day": $$96, "company": $$97}] project: [$$97, $$96, $$95, $$94, $$62] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$97, $$96, $$95, $$94] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$97, $$96, $$95, $$94] <- [string-default-null($$m.getField("company")), int64-default-null($$m.getField("day")), int64-default-null($$m.getField("month")), int64-default-null($$m.getField("year"))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$m] <- test.maintenance2 prefix-filter on: and(eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$m] <- test.maintenance2 prefix-filter on: and(eq(int64-default-null($$m.getField("year")), 2001), eq(int64-default-null($$m.getField("month")), 1), eq(int64-default-null($$m.getField("day")), 1), eq(string-default-null($$m.getField("company")), "ford")) embed-filter-value: true [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/json/json/external_dataset.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/json/json/external_dataset.011.plan
index 3b3f2c1..486ffad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/json/json/external_dataset.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/json/json/external_dataset.011.plan
@@ -1,42 +1,42 @@
-distribute result [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$50] <- [{"cnt": $$53}] project: [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$50] <- [{"cnt": $$53}] project: [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$53] <- [agg-sql-sum($$55)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$53] <- [agg-sql-sum($$55)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$55] <- [agg-sql-count($$51)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$55] <- [agg-sql-count($$51)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            project ([$$51]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$51]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$51, $$52)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$51, $$52)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$51][$$52]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$51]  |PARTITIONED|
-                    assign [$$51] <- [$$a.getField("quarter")] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$51] <- [$$a.getField("quarter")] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$a] <- test.test6 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$a] <- test.test6 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
-                    assign [$$52] <- [$$b.getField("quarter")] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$52] <- [$$b.getField("quarter")] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$b] <- test.test6 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$b] <- test.test6 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/json/json/external_dataset.013.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/json/json/external_dataset.013.plan
index 0192431..12780ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/json/json/external_dataset.013.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/json/json/external_dataset.013.plan
@@ -1,54 +1,54 @@
-distribute result [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$50] <- [{"cnt": $$53}] project: [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$50] <- [{"cnt": $$53}] project: [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$53] <- [agg-sql-sum($$55)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$53] <- [agg-sql-sum($$55)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$55] <- [agg-sql-count($$51)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$55] <- [agg-sql-count($$51)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            project ([$$51]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$51]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$51, $$52)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$51, $$52)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$51][$$52]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$51] <- [$$52] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$51] <- [$$52] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- REPLICATE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
-                            assign [$$52] <- [$$b.getField("quarter")] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$52] <- [$$b.getField("quarter")] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$b] <- test.test6 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$b] <- test.test6 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- REPLICATE  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
-                        assign [$$52] <- [$$b.getField("quarter")] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$52] <- [$$b.getField("quarter")] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$b] <- test.test6 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$b] <- test.test6 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/ASTERIXDB-3540/ASTERIXDB-3540.02.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/ASTERIXDB-3540/ASTERIXDB-3540.02.plan
index c985a25..0ea7a73 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/ASTERIXDB-3540/ASTERIXDB-3540.02.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/ASTERIXDB-3540/ASTERIXDB-3540.02.plan
@@ -1 +1 @@
-"distribute result [$$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]\n-- DISTRIBUTE_RESULT  |PARTITIONED|\n  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]\n  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|\n    assign [$$25] <- [{\"g\": $$26.getField(\"g\"), \"$1\": $$26.getField(\"p\").getField(\"$$ParquetDataset.getField(\"x\").getField(\"y\").getField(\"age_field\")\")}] project: [$$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]\n    -- ASSIGN  |PARTITIONED|\n      assign [$$26] <- [$$ParquetDataset.getField(\"t\").getField(\"r\")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]\n      -- ASSIGN  |PARTITIONED|\n        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]\n        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|\n          data-scan []<-[$$ParquetDataset] <- test.ParquetDataset project ({t:{r:{p:any,g:any}},x:{y:{age_field:any}}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]\n          -- DATASOURCE_SCAN  |PARTITIONED|\n            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]\n            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|\n              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]\n              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|\n"
\ No newline at end of file
+"distribute result [$$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]\n-- DISTRIBUTE_RESULT  |PARTITIONED|\n  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]\n  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|\n    assign [$$25] <- [{\"g\": $$26.getField(\"g\"), \"$1\": $$26.getField(\"p\").getField(\"$$ParquetDataset.getField(\"x\").getField(\"y\").getField(\"age_field\")\")}] project: [$$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]\n    -- ASSIGN  |PARTITIONED|\n      assign [$$26] <- [$$ParquetDataset.getField(\"t\").getField(\"r\")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]\n      -- ASSIGN  |PARTITIONED|\n        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]\n        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|\n          data-scan []<-[$$ParquetDataset] <- test.ParquetDataset project ({t:{r:{p:any,g:any}},x:{y:{age_field:any}}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]\n          -- DATASOURCE_SCAN  |PARTITIONED|\n            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]\n            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|\n              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]\n              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|\n"
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.03.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.03.plan
index 027926b..9d4def9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.03.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.03.plan
@@ -1,24 +1,24 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"display_url": $$21}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"display_url": $$21}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$21]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$21]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-          order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$21, $$20] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url"), $$p.getField("id")] project: [$$21, $$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$21, $$20] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url"), $$p.getField("id")] project: [$$21, $$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.05.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.05.plan
index 2161117..8e43446 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.05.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.05.plan
@@ -1,24 +1,24 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"display_url": $$21}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"display_url": $$21}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$21]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$21]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-          order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$20) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$21, $$20] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url"), $$p.getField("id")] project: [$$21, $$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$21, $$20] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url"), $$p.getField("id")] project: [$$21, $$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$p] <- test.ParquetDataset project ({entities:{urls:[{display_url:any}]},id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$p] <- test.ParquetDataset project ({entities:{urls:[{display_url:any}]},id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.07.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.07.plan
index 2812ab8..f0c3246 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.07.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.07.plan
@@ -1,28 +1,28 @@
-distribute result [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$22] <- [{"display_url": $$26}] project: [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$22] <- [{"display_url": $$26}] project: [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$25(ASC) ]  |PARTITIONED|
-          order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$26] <- [array-star($$24).getField("display_url")] project: [$$26, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$26] <- [array-star($$24).getField("display_url")] project: [$$26, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                select (not(is-missing($$24))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (not(is-missing($$24))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$24, $$25] <- [$$p.getField("entities").getField("urls"), $$p.getField("id")] project: [$$24, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$24, $$25] <- [$$p.getField("entities").getField("urls"), $$p.getField("id")] project: [$$24, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.09.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.09.plan
index 940db43..687ec09 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.09.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.09.plan
@@ -1,28 +1,28 @@
-distribute result [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$22] <- [{"display_url": $$26}] project: [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$22] <- [{"display_url": $$26}] project: [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$25(ASC) ]  |PARTITIONED|
-          order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$26] <- [array-star($$24).getField("display_url")] project: [$$26, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$26] <- [array-star($$24).getField("display_url")] project: [$$26, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                select (not(is-missing($$24))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (not(is-missing($$24))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$24, $$25] <- [$$p.getField("entities").getField("urls"), $$p.getField("id")] project: [$$24, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$24, $$25] <- [$$p.getField("entities").getField("urls"), $$p.getField("id")] project: [$$24, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$p] <- test.ParquetDataset project ({entities:{urls:[{display_url:any}]},id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$p] <- test.ParquetDataset project ({entities:{urls:[{display_url:any}]},id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.11.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.11.plan
index 58a0b66..b479180 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.11.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.11.plan
@@ -1,26 +1,26 @@
-distribute result [$$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] project: [$$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] project: [$$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$urls]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$urls]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$31(ASC) ]  |PARTITIONED|
-          order (ASC, $$31) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$31) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$31(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest $$urls <- scan-collection($$30) project: [$$urls, $$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$urls <- scan-collection($$30) project: [$$urls, $$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$30, $$31] <- [$$p.getField("entities").getField("urls"), $$p.getField("id")] project: [$$30, $$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$30, $$31] <- [$$p.getField("entities").getField("urls"), $$p.getField("id")] project: [$$30, $$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.13.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.13.plan
index ddefb06..71e10c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.13.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.13.plan
@@ -1,26 +1,26 @@
-distribute result [$$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] project: [$$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] project: [$$28] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$urls]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$urls]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$31(ASC) ]  |PARTITIONED|
-          order (ASC, $$31) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$31) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$31(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest $$urls <- scan-collection($$30) project: [$$urls, $$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$urls <- scan-collection($$30) project: [$$urls, $$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$30, $$31] <- [$$p.getField("entities").getField("urls"), $$p.getField("id")] project: [$$30, $$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$30, $$31] <- [$$p.getField("entities").getField("urls"), $$p.getField("id")] project: [$$30, $$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset project ({entities:{urls:[{display_url:any}]},id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset project ({entities:{urls:[{display_url:any}]},id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.15.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.15.plan
index 6d1bbd7..6630e31 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.15.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.15.plan
@@ -1,37 +1,37 @@
-distribute result [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$49] <- [agg-sql-sum($$55)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$49] <- [agg-sql-sum($$55)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$55] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$55] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          select ($$42) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          select ($$42) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_SELECT  |PARTITIONED|
-            project ([$$42]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$42]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
               subplan {
-                        aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          select (not(if-missing-or-null(eq($$51, "string"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (not(if-missing-or-null(eq($$51, "string"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |LOCAL|
-                            assign [$$51] <- [$$ht.getField("display_url")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$51] <- [$$ht.getField("display_url")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |LOCAL|
-                              unnest $$ht <- scan-collection($$50) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$ht <- scan-collection($$50) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SUBPLAN  |PARTITIONED|
-                assign [$$50] <- [$$p.getField("entities").getField("urls")] project: [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$50] <- [$$p.getField("entities").getField("urls")] project: [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.17.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.17.plan
index 1457164..9b556b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.17.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.17.plan
@@ -1,37 +1,37 @@
-distribute result [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$49] <- [agg-sql-sum($$55)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$49] <- [agg-sql-sum($$55)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$55] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$55] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          select ($$42) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          select ($$42) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_SELECT  |PARTITIONED|
-            project ([$$42]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$42]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
               subplan {
-                        aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          select (not(if-missing-or-null(eq($$51, "string"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (not(if-missing-or-null(eq($$51, "string"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |LOCAL|
-                            assign [$$51] <- [$$ht.getField("display_url")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$51] <- [$$ht.getField("display_url")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |LOCAL|
-                              unnest $$ht <- scan-collection($$50) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$ht <- scan-collection($$50) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SUBPLAN  |PARTITIONED|
-                assign [$$50] <- [$$p.getField("entities").getField("urls")] project: [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$50] <- [$$p.getField("entities").getField("urls")] project: [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.19.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.19.plan
index afd8c11..cf84f47 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.19.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.19.plan
@@ -1,24 +1,24 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [get-item(get-item(get-item($$22, 0), 0), 0)] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [get-item(get-item(get-item($$22, 0), 0), 0)] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-          order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$22, $$21] <- [$$p.getField("place").getField("bounding_box").getField("coordinates"), $$p.getField("id")] project: [$$22, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22, $$21] <- [$$p.getField("place").getField("bounding_box").getField("coordinates"), $$p.getField("id")] project: [$$22, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.21.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.21.plan
index 3d6e07a..c86bfd3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.21.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/array-access-pushdown/array-access-pushdown.21.plan
@@ -1,24 +1,24 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [get-item(get-item(get-item($$22, 0), 0), 0)] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [get-item(get-item(get-item($$22, 0), 0), 0)] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-          order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$22, $$21] <- [$$p.getField("place").getField("bounding_box").getField("coordinates"), $$p.getField("id")] project: [$$22, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$22, $$21] <- [$$p.getField("place").getField("bounding_box").getField("coordinates"), $$p.getField("id")] project: [$$22, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$p] <- test.ParquetDataset project ({place:{bounding_box:{coordinates:[[[any]]]}},id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$p] <- test.ParquetDataset project ({place:{bounding_box:{coordinates:[[[any]]]}},id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.03.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.03.plan
index 5ddd589..54892f7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.03.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.03.plan
@@ -1,22 +1,22 @@
-distribute result [$$p] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$p] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$13(ASC) ]  |PARTITIONED|
-        order (ASC, $$13) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- STABLE_SORT [$$13(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+      -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+        -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$13] <- [$$p.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$p.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.05.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.05.plan
index 5ddd589..54892f7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.05.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.05.plan
@@ -1,22 +1,22 @@
-distribute result [$$p] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$p] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$p]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$13(ASC) ]  |PARTITIONED|
-        order (ASC, $$13) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- STABLE_SORT [$$13(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+      -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
+        order (ASC, $$14) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+        -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$13] <- [$$p.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$14] <- [$$p.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.07.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.07.plan
index 69eb459..2bdb372 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.07.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.07.plan
@@ -1,42 +1,42 @@
-distribute result [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [{"p1": $$p1, "id": $$32}] project: [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$30] <- [{"p1": $$p1, "id": $$32}] project: [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$32(ASC) ]  |PARTITIONED|
-        order (ASC, $$32) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$32) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$p1, $$32]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$p1, $$32]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$33, $$32)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$33, $$32)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$33][$$32]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$33]  |PARTITIONED|
-                    assign [$$33] <- [$$p1.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$33] <- [$$p1.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$p1] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$p1] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$32]  |PARTITIONED|
-                    assign [$$32] <- [$$p2.getField("id")] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$32] <- [$$p2.getField("id")] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$p2] <- test.ParquetDataset2 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$p2] <- test.ParquetDataset2 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.09.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.09.plan
index fddff2f..9c3fa17 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.09.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.09.plan
@@ -1,42 +1,42 @@
-distribute result [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [{"p1": $$p1, "id": $$32}] project: [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$30] <- [{"p1": $$p1, "id": $$32}] project: [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$32(ASC) ]  |PARTITIONED|
-        order (ASC, $$32) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$32) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$p1, $$32]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$p1, $$32]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$33, $$32)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$33, $$32)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$33][$$32]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$33]  |PARTITIONED|
-                    assign [$$33] <- [$$p1.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$33] <- [$$p1.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$p1] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$p1] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$32]  |PARTITIONED|
-                    assign [$$32] <- [$$p2.getField("id")] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$32] <- [$$p2.getField("id")] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$p2] <- test.ParquetDataset2 project ({id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$p2] <- test.ParquetDataset2 project ({id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.11.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.11.plan
index 5d5f42b..6182cbd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.11.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.11.plan
@@ -1,44 +1,44 @@
-distribute result [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"age": $$36, "name": $$37}] project: [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$31] <- [{"age": $$36, "name": $$37}] project: [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$36, $$37]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$36, $$37]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$34(ASC) ]  |PARTITIONED|
-          order (ASC, $$34) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$34) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$36, $$37, $$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$36, $$37, $$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$33, $$34)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$33, $$34)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$33][$$34]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$33]  |PARTITIONED|
-                      assign [$$36, $$33] <- [$$p1.getField("age"), $$p1.getField("id")] project: [$$36, $$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$36, $$33] <- [$$p1.getField("age"), $$p1.getField("id")] project: [$$36, $$33] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$p1] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$p1] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                      assign [$$37, $$34] <- [$$p2.getField("name"), $$p2.getField("id")] project: [$$37, $$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$37, $$34] <- [$$p2.getField("name"), $$p2.getField("id")] project: [$$37, $$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$p2] <- test.ParquetDataset3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$p2] <- test.ParquetDataset3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.13.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.13.plan
index ec52c3d..b7c8712 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.13.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.13.plan
@@ -1,44 +1,44 @@
-distribute result [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"age": $$36, "name": $$37}] project: [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$31] <- [{"age": $$36, "name": $$37}] project: [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$36, $$37]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$36, $$37]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$34(ASC) ]  |PARTITIONED|
-          order (ASC, $$34) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$34) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$36, $$37, $$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$36, $$37, $$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$33, $$34)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$33, $$34)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$33][$$34]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$33]  |PARTITIONED|
-                      assign [$$36, $$33] <- [$$p1.getField("age"), $$p1.getField("id")] project: [$$36, $$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$36, $$33] <- [$$p1.getField("age"), $$p1.getField("id")] project: [$$36, $$33] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$p1] <- test.ParquetDataset project ({id:any,age:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$p1] <- test.ParquetDataset project ({id:any,age:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                      assign [$$37, $$34] <- [$$p2.getField("name"), $$p2.getField("id")] project: [$$37, $$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$37, $$34] <- [$$p2.getField("name"), $$p2.getField("id")] project: [$$37, $$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$p2] <- test.ParquetDataset3 project ({name:any,id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$p2] <- test.ParquetDataset3 project ({name:any,id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.15.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.15.plan
index b67932b..693e271 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.15.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.15.plan
@@ -1,26 +1,26 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"id": $$22, "name": $$23}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"id": $$22, "name": $$23}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$22, $$23]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$22, $$23]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-          order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$23, $$22] <- [$$20.getField("name"), $$20.getField("id")] project: [$$22, $$23, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$23, $$22] <- [$$20.getField("name"), $$20.getField("id")] project: [$$22, $$23, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$20, $$21] <- [$$p.getField("user"), $$p.getField("id")] project: [$$20, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$20, $$21] <- [$$p.getField("user"), $$p.getField("id")] project: [$$20, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.17.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.17.plan
index 9c357f9..8d78d7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.17.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.17.plan
@@ -1,26 +1,26 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"id": $$22, "name": $$23}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"id": $$22, "name": $$23}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$22, $$23]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$22, $$23]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-          order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$23, $$22] <- [$$20.getField("name"), $$20.getField("id")] project: [$$22, $$23, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$23, $$22] <- [$$20.getField("name"), $$20.getField("id")] project: [$$22, $$23, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$20, $$21] <- [$$p.getField("user"), $$p.getField("id")] project: [$$20, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$20, $$21] <- [$$p.getField("user"), $$p.getField("id")] project: [$$20, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset4 project ({id:any,user:{name:any,id:any}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset4 project ({id:any,user:{name:any,id:any}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.19.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.19.plan
index 7abd8d0..9094e8b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.19.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.19.plan
@@ -1,18 +1,18 @@
-distribute result [$$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$33] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$33] <- [agg-sql-sum($$34)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$33] <- [agg-sql-sum($$34)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$34] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$34] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$p] <- test.ParquetDataset4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$p] <- test.ParquetDataset4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.21.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.21.plan
index 7a111cc..afa8c8c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.21.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.21.plan
@@ -1,18 +1,18 @@
-distribute result [$$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$33] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$33] <- [agg-sql-sum($$34)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$33] <- [agg-sql-sum($$34)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$34] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        aggregate [$$34] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- AGGREGATE  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$p] <- test.ParquetDataset4 project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$p] <- test.ParquetDataset4 project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.22.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.22.plan
index 9c357f9..8d78d7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.22.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/field-access-pushdown/field-access-pushdown.22.plan
@@ -1,26 +1,26 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"id": $$22, "name": $$23}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"id": $$22, "name": $$23}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$22, $$23]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$22, $$23]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-          order (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$23, $$22] <- [$$20.getField("name"), $$20.getField("id")] project: [$$22, $$23, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$23, $$22] <- [$$20.getField("name"), $$20.getField("id")] project: [$$22, $$23, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$20, $$21] <- [$$p.getField("user"), $$p.getField("id")] project: [$$20, $$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$20, $$21] <- [$$p.getField("user"), $$p.getField("id")] project: [$$20, $$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset4 project ({id:any,user:{name:any,id:any}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset4 project ({id:any,user:{name:any,id:any}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/heterogeneous-access-pushdown/heterogeneous-access-pushdown.03.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/heterogeneous-access-pushdown/heterogeneous-access-pushdown.03.plan
index 984665d..281235e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/heterogeneous-access-pushdown/heterogeneous-access-pushdown.03.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/heterogeneous-access-pushdown/heterogeneous-access-pushdown.03.plan
@@ -1,26 +1,26 @@
-distribute result [$$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$21] <- [switch-case(true, is-array($$23), $$25, $$26)] project: [$$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$21] <- [switch-case(true, is-array($$23), $$25, $$26)] project: [$$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$23, $$25, $$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$23, $$25, $$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$24(ASC) ]  |PARTITIONED|
-          order (ASC, $$24) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$24) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$24(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$25, $$26] <- [array-star($$23).getField("text"), $$23.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$25, $$26] <- [array-star($$23).getField("text"), $$23.getField("text")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$23, $$24] <- [$$p.getField("arrayOrObject"), $$p.getField("id")] project: [$$23, $$24] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$23, $$24] <- [$$p.getField("arrayOrObject"), $$p.getField("id")] project: [$$23, $$24] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/heterogeneous-access-pushdown/heterogeneous-access-pushdown.05.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/heterogeneous-access-pushdown/heterogeneous-access-pushdown.05.plan
index 69729f2..8138f05 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/heterogeneous-access-pushdown/heterogeneous-access-pushdown.05.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/heterogeneous-access-pushdown/heterogeneous-access-pushdown.05.plan
@@ -1,26 +1,26 @@
-distribute result [$$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$21] <- [switch-case(true, is-array($$23), $$25, $$26)] project: [$$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$21] <- [switch-case(true, is-array($$23), $$25, $$26)] project: [$$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$23, $$25, $$26]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$23, $$25, $$26]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$24(ASC) ]  |PARTITIONED|
-          order (ASC, $$24) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$24) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$24(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$25, $$26] <- [array-star($$23).getField("text"), $$23.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$25, $$26] <- [array-star($$23).getField("text"), $$23.getField("text")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$23, $$24] <- [$$p.getField("arrayOrObject"), $$p.getField("id")] project: [$$23, $$24] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$23, $$24] <- [$$p.getField("arrayOrObject"), $$p.getField("id")] project: [$$23, $$24] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$p] <- test.ParquetDataset project ({arrayOrObject:<[{text:any}],{text:any}>,id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$p] <- test.ParquetDataset project ({arrayOrObject:<[{text:any}],{text:any}>,id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/object-concat/object-concat.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/object-concat/object-concat.3.plan
index d13773f..4eb6672 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/object-concat/object-concat.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/object-concat/object-concat.3.plan
@@ -1,22 +1,22 @@
-distribute result [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$17] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$17]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$$17]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$19(ASC) ]  |PARTITIONED|
-        order (ASC, $$19) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$19) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$19(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            assign [$$17, $$19] <- [object-concat($$p.getField("coordinates"), $$p.getField("user")).getField("name"), $$p.getField("id")] project: [$$17, $$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$17, $$19] <- [object-concat($$p.getField("coordinates"), $$p.getField("user")).getField("name"), $$p.getField("id")] project: [$$17, $$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$p] <- test.ParquetDataset project ({coordinates:any,id:any,user:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$p] <- test.ParquetDataset project ({coordinates:any,id:any,user:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/object-concat/object-concat.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/object-concat/object-concat.5.plan
index 4d987be..27783e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/object-concat/object-concat.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/object-concat/object-concat.5.plan
@@ -1,24 +1,24 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [object-concat($$19, $$20)] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [object-concat($$19, $$20)] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$19, $$20]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$19, $$20]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-          order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$20, $$19, $$18] <- [$$p.getField("user"), $$p.getField("coordinates"), $$p.getField("id")] project: [$$19, $$20, $$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$20, $$19, $$18] <- [$$p.getField("user"), $$p.getField("coordinates"), $$p.getField("id")] project: [$$19, $$20, $$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$p] <- test.ParquetDataset project ({coordinates:any,id:any,user:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$p] <- test.ParquetDataset project ({coordinates:any,id:any,user:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.02.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.02.plan
index 11e717e..b7a2d5b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.02.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.02.plan
@@ -1,44 +1,44 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$51] <- [{"$1": $$54}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$54}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$54] <- [agg-global-sql-sum($$56)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$54] <- [agg-global-sql-sum($$56)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$56] <- [agg-local-sql-sum($$49)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$56] <- [agg-local-sql-sum($$49)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            assign [$$49] <- [object-length($$p1)] project: [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$49] <- [object-length($$p1)] project: [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$p1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$p1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$52, $$53)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$52, $$53)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$53][$$52]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$53]  |PARTITIONED|
-                      assign [$$53] <- [$$p1.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$53] <- [$$p1.getField("id")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$p1] <- test.ParquetDataset1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$p1] <- test.ParquetDataset1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
-                      assign [$$52] <- [$$p2.getField("id")] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$52] <- [$$p2.getField("id")] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$p2] <- test.ParquetDataset2 project ({id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$p2] <- test.ParquetDataset2 project ({id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.03.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.03.plan
index 2b41307..6ceee91 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.03.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.03.plan
@@ -1,22 +1,22 @@
-distribute result [$$p1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$p1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([$$p1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    distinct ([$$p1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        order (ASC, $$p1) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$p1) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$p1(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$p1]  |PARTITIONED|
-            select (gt($$p1.getField("id"), 10)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (gt($$p1.getField("id"), 10)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$p1] <- test.ParquetDataset1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$p1] <- test.ParquetDataset1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.04.plan
index 3993a4d..304a098 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.04.plan
@@ -1,44 +1,44 @@
-distribute result [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$69] <- [{"text": $$text, "$1": $$72}] project: [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$69] <- [{"text": $$text, "$1": $$72}] project: [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$$text := $$80]) decor ([]) {
-                  aggregate [$$72] <- [agg-global-sql-sum($$79)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$72] <- [agg-global-sql-sum($$79)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$80]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$80]  |PARTITIONED|
             group by ([$$80 := $$71]) decor ([]) {
-                      aggregate [$$79] <- [agg-local-sql-sum(array-distinct($$74))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$79] <- [agg-local-sql-sum(array-distinct($$74))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$71]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (eq(lowercase($$71), "string")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (eq(lowercase($$71), "string")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$71] <- [$$ht.getField("text")] project: [$$74, $$71] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$71] <- [$$ht.getField("text")] project: [$$74, $$71] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    unnest $$ht <- scan-collection($$74) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$ht <- scan-collection($$74) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |PARTITIONED|
-                      assign [$$74] <- [$$p1.getField("entities").getField("hashtags")] project: [$$74] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$74] <- [$$p1.getField("entities").getField("hashtags")] project: [$$74] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        select (gt($$p1.getField("id"), 10)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (gt($$p1.getField("id"), 10)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$p1] <- test.ParquetDataset1 project ({entities:{hashtags:any},id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$p1] <- test.ParquetDataset1 project ({entities:{hashtags:any},id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.05.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.05.plan
index 9b93e19..71c1ed4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.05.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.05.plan
@@ -1,44 +1,44 @@
-distribute result [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$68] <- [{"text": $$text, "$1": $$71}] project: [$$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$68] <- [{"text": $$text, "$1": $$71}] project: [$$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$$text := $$78]) decor ([]) {
-                  aggregate [$$71] <- [agg-global-sql-sum($$77)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$71] <- [agg-global-sql-sum($$77)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$78]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$78]  |PARTITIONED|
             group by ([$$78 := $$70]) decor ([]) {
-                      aggregate [$$77] <- [agg-local-sql-sum(sql-sum($$74))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$77] <- [agg-local-sql-sum(sql-sum($$74))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$70]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (eq(lowercase($$70), "string")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (eq(lowercase($$70), "string")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$74, $$70] <- [$$ht.getField("indices"), $$ht.getField("text")] project: [$$74, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$74, $$70] <- [$$ht.getField("indices"), $$ht.getField("text")] project: [$$74, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    unnest $$ht <- scan-collection($$73) project: [$$ht] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    unnest $$ht <- scan-collection($$73) project: [$$ht] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- UNNEST  |PARTITIONED|
-                      assign [$$73] <- [$$p1.getField("entities").getField("hashtags")] project: [$$73] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$73] <- [$$p1.getField("entities").getField("hashtags")] project: [$$73] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        select (gt($$p1.getField("id"), 10)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (gt($$p1.getField("id"), 10)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$p1] <- test.ParquetDataset1 project ({entities:{hashtags:[{indices:any,text:any}]},id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$p1] <- test.ParquetDataset1 project ({entities:{hashtags:[{indices:any,text:any}]},id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.06.plan
index acb9726..98037a6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.06.plan
@@ -1,22 +1,22 @@
-distribute result [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$22] <- [{"display_url": get-item($$23, 0).getField("display_url")}] project: [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$22] <- [{"display_url": get-item($$23, 0).getField("display_url")}] project: [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            assign [$$23] <- [$$p.getField("entities").getField("urls")] project: [$$23] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$23] <- [$$p.getField("entities").getField("urls")] project: [$$23] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$p] <- test.ParquetDataset1 condition (gt(sql-count($$p.getField("entities").getField("urls")), 10)) limit 10 project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                data-scan []<-[$$p] <- test.ParquetDataset1 condition (gt(sql-count($$p.getField("entities").getField("urls")), 10)) limit 10 project ({entities:{urls:[{display_url:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.07.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.07.plan
index 707548e..2d4c313 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.07.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.07.plan
@@ -1,97 +1,97 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$101] <- [{"uname": $$uname, "cnt": $$103}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$101] <- [{"uname": $$uname, "cnt": $$103}] project: [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$103(DESC) ]  |PARTITIONED|
-          limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 10) (DESC, $$103) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 10) (DESC, $$103) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 10] [$$103(DESC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   group by ([$$uname := $$114]) decor ([]) {
-                            aggregate [$$103] <- [agg-sql-sum($$113)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$103] <- [agg-sql-sum($$113)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SORT_GROUP_BY[$$114]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$114]  |PARTITIONED|
                       group by ([$$114 := $$102]) decor ([]) {
-                                aggregate [$$113] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$113] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SORT_GROUP_BY[$$102]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select ($$92) project: [$$102] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select ($$92) project: [$$102] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            project ([$$92, $$102]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$92, $$102]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                 group by ([$$112 := $$110]) decor ([$$102]) {
-                                          aggregate [$$92] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          aggregate [$$92] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- AGGREGATE  |LOCAL|
-                                            select (not(is-missing($$111))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            select (not(is-missing($$111))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_SELECT  |LOCAL|
-                                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- PRE_CLUSTERED_GROUP_BY[$$110]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    order (ASC, $$110) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    order (ASC, $$110) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STABLE_SORT [$$110(ASC)]  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HASH_PARTITION_EXCHANGE [$$110]  |PARTITIONED|
-                                        project ([$$102, $$111, $$110]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        project ([$$102, $$111, $$110]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- STREAM_PROJECT  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            left outer join (eq($$104, $$88)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            left outer join (eq($$104, $$88)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- HYBRID_HASH_JOIN [$$104][$$88]  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HASH_PARTITION_EXCHANGE [$$104]  |PARTITIONED|
-                                                running-aggregate [$$110] <- [create-query-uid()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                running-aggregate [$$110] <- [create-query-uid()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- RUNNING_AGGREGATE  |PARTITIONED|
-                                                  assign [$$104] <- [$$ht1.getField("text")] project: [$$102, $$104] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$104] <- [$$ht1.getField("text")] project: [$$102, $$104] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    unnest $$ht1 <- scan-collection($$105) project: [$$102, $$ht1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    unnest $$ht1 <- scan-collection($$105) project: [$$102, $$ht1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- UNNEST  |PARTITIONED|
-                                                      assign [$$105, $$102] <- [$$p1.getField("entities").getField("hashtags"), $$p1.getField("user").getField("name")] project: [$$105, $$102] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      assign [$$105, $$102] <- [$$p1.getField("entities").getField("hashtags"), $$p1.getField("user").getField("name")] project: [$$105, $$102] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ASSIGN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          data-scan []<-[$$p1] <- test.ParquetDataset1 project ({entities:{hashtags:[{text:any}]},user:{name:any}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          data-scan []<-[$$p1] <- test.ParquetDataset1 project ({entities:{hashtags:[{text:any}]},user:{name:any}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HASH_PARTITION_EXCHANGE [$$88]  |PARTITIONED|
-                                                assign [$$111, $$88] <- [true, $$ht2.getField("text")] project: [$$111, $$88] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                assign [$$111, $$88] <- [true, $$ht2.getField("text")] project: [$$111, $$88] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ASSIGN  |PARTITIONED|
-                                                  unnest $$ht2 <- scan-collection($$106) project: [$$ht2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  unnest $$ht2 <- scan-collection($$106) project: [$$ht2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- UNNEST  |PARTITIONED|
-                                                    assign [$$106] <- [$$p2.getField("entities").getField("hashtags")] project: [$$106] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$106] <- [$$p2.getField("entities").getField("hashtags")] project: [$$106] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan []<-[$$p2] <- test.ParquetDataset2 project ({entities:{hashtags:[{text:any}]}}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        data-scan []<-[$$p2] <- test.ParquetDataset2 project ({entities:{hashtags:[{text:any}]}}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.08.plan
index cccf9a3..2f9da11 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.08.plan
@@ -1,52 +1,52 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$66}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$65] <- [{"$1": $$66}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$66] <- [agg-sql-sum($$75)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$66] <- [agg-sql-sum($$75)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$75] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$75] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$53, $$57]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$70, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$70, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$70] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$70] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$67) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$67) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
                   subplan {
-                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              select (eq($$68, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$68, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |LOCAL|
-                                assign [$$68] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$68] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |LOCAL|
-                                  unnest $$e <- scan-collection($$67) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest $$e <- scan-collection($$67) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- UNNEST  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SUBPLAN  |PARTITIONED|
-                    assign [$$67] <- [$$p.getField("val1")] project: [$$67] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$67] <- [$$p.getField("val1")] project: [$$67] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$p] <- test.ParquetDataset1 project ({val1:[{x:any}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$p] <- test.ParquetDataset1 project ({val1:[{x:any}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.09.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.09.plan
index cf265bf..afa0968 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.09.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.09.plan
@@ -1,52 +1,52 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$66}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$65] <- [{"$1": $$66}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$66] <- [agg-sql-sum($$75)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$66] <- [agg-sql-sum($$75)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$75] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$75] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$53, $$57]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$70, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$70, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$70] <- [$$e.getField("y")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$70] <- [$$e.getField("y")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$67) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$67) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
                   subplan {
-                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              select (eq($$68, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$68, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |LOCAL|
-                                assign [$$68] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$68] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |LOCAL|
-                                  unnest $$e <- scan-collection($$67) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest $$e <- scan-collection($$67) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- UNNEST  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SUBPLAN  |PARTITIONED|
-                    assign [$$67] <- [$$p.getField("val1")] project: [$$67] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$67] <- [$$p.getField("val1")] project: [$$67] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$p] <- test.ParquetDataset1 project ({val1:[{x:any,y:any}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$p] <- test.ParquetDataset1 project ({val1:[{x:any,y:any}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.10.plan
index 3199625..188c138 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.10.plan
@@ -1,54 +1,54 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$66}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$65] <- [{"$1": $$66}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$66] <- [agg-sql-sum($$75)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$66] <- [agg-sql-sum($$75)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$75] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$75] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$53, $$57]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$70, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$70, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$70] <- [$$e.getField("y")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$70] <- [$$e.getField("y")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$69) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$69) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SUBPLAN  |PARTITIONED|
-                  project ([$$69, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$69, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
                     subplan {
-                              aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- AGGREGATE  |LOCAL|
-                                select (eq($$68, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                select (eq($$68, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_SELECT  |LOCAL|
-                                  assign [$$68] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$68] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$e <- scan-collection($$67) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$e <- scan-collection($$67) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                           } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                           } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- SUBPLAN  |PARTITIONED|
-                      assign [$$69, $$67] <- [$$p.getField("val2"), $$p.getField("val1")] project: [$$69, $$67] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$69, $$67] <- [$$p.getField("val2"), $$p.getField("val1")] project: [$$69, $$67] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$p] <- test.ParquetDataset1 project ({val2:[{y:any}],val1:[{x:any}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$p] <- test.ParquetDataset1 project ({val2:[{y:any}],val1:[{x:any}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.11.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.11.plan
index 85643e8..21c7ca0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.11.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.11.plan
@@ -1,18 +1,18 @@
-distribute result [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"$1": get-item(get-item(get-item($$32, 0).getField("f2"), 0), 0), "$2": get-item($$46.getField("f3"), 1), "$3": get-item(get-item($$46.getField("f2"), 1), 1)}] project: [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$31] <- [{"$1": get-item(get-item(get-item($$32, 0).getField("f2"), 0), 0), "$2": get-item($$46.getField("f3"), 1), "$3": get-item(get-item($$46.getField("f2"), 1), 1)}] project: [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$46] <- [get-item($$32, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$46] <- [get-item($$32, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$32] <- [$$p.getField("f1")] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$32] <- [$$p.getField("f1")] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$p] <- test.ParquetDataset1 project ({f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$p] <- test.ParquetDataset1 project ({f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.12.plan
index 3081703..f3d5bb0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.12.plan
@@ -1,28 +1,28 @@
-distribute result [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"$1": get-item(get-item($$35, 0), 0), "$2": get-item($$36, 1), "$3": get-item(get-item($$37, 1), 1)}] project: [$$31] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$31] <- [{"$1": get-item(get-item($$35, 0), 0), "$2": get-item($$36, 1), "$3": get-item(get-item($$37, 1), 1)}] project: [$$31] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$35, $$36, $$37]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$35, $$36, $$37]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$34(ASC) ]  |PARTITIONED|
-          order (ASC, $$34) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$34) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$37, $$36] <- [$$48.getField("f2"), $$48.getField("f3")] project: [$$35, $$36, $$37, $$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$37, $$36] <- [$$48.getField("f2"), $$48.getField("f3")] project: [$$35, $$36, $$37, $$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$48, $$35] <- [get-item($$33, 1), get-item($$33, 0).getField("f2")] project: [$$34, $$48, $$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$48, $$35] <- [get-item($$33, 1), get-item($$33, 0).getField("f2")] project: [$$34, $$48, $$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$33, $$34] <- [$$p.getField("f1"), $$p.getField("x")] project: [$$33, $$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$33, $$34] <- [$$p.getField("f1"), $$p.getField("x")] project: [$$33, $$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$p] <- test.ParquetDataset1 project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$p] <- test.ParquetDataset1 project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.13.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.13.plan
index 40d1206..457c85a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.13.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.13.plan
@@ -1,18 +1,18 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"$1": get-item(get-item(get-item($$33, 0).getField("f2"), 0), 0), "$2": get-item($$48.getField("f3"), 1), "$3": get-item(get-item($$48.getField("f2"), 1), 1), "x": $$p.getField("x")}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"$1": get-item(get-item(get-item($$33, 0).getField("f2"), 0), 0), "$2": get-item($$48.getField("f3"), 1), "$3": get-item(get-item($$48.getField("f2"), 1), 1), "x": $$p.getField("x")}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$48] <- [get-item($$33, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$48] <- [get-item($$33, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$33] <- [$$p.getField("f1")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$33] <- [$$p.getField("f1")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$p] <- test.ParquetDataset1 project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$p] <- test.ParquetDataset1 project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.14.plan
index ed92bc7..ea0caf3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.14.plan
@@ -1,28 +1,28 @@
-distribute result [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"$1": get-item(get-item($$36, 0), 0), "$2": get-item($$37, 1), "$3": get-item(get-item($$38, 1), 1), "x": $$39}] project: [$$32] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$32] <- [{"$1": get-item(get-item($$36, 0), 0), "$2": get-item($$37, 1), "$3": get-item(get-item($$38, 1), 1), "x": $$39}] project: [$$32] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$36, $$37, $$38, $$39]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$36, $$37, $$38, $$39]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$35(ASC) ]  |PARTITIONED|
-          order (ASC, $$35) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$35) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$35(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$38, $$37] <- [$$50.getField("f2"), $$50.getField("f3")] project: [$$36, $$37, $$38, $$39, $$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$38, $$37] <- [$$50.getField("f2"), $$50.getField("f3")] project: [$$36, $$37, $$38, $$39, $$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$50, $$36] <- [get-item($$34, 1), get-item($$34, 0).getField("f2")] project: [$$35, $$39, $$50, $$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$50, $$36] <- [get-item($$34, 1), get-item($$34, 0).getField("f2")] project: [$$35, $$39, $$50, $$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$34, $$35, $$39] <- [$$p.getField("f1"), $$p.getField("y"), $$p.getField("x")] project: [$$34, $$35, $$39] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$34, $$35, $$39] <- [$$p.getField("f1"), $$p.getField("y"), $$p.getField("x")] project: [$$34, $$35, $$39] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$p] <- test.ParquetDataset1 project ({x:any,y:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$p] <- test.ParquetDataset1 project ({x:any,y:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.15.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.15.plan
index 89c67d1..41e98e9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.15.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/parquet/pushdown-plans/pushdown-plans.15.plan
@@ -1,20 +1,20 @@
-distribute result [$$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$35] <- [{"$1": get-item(get-item(get-item($$36, 0).getField("f2"), 0), 0), "$2": get-item($$42, 1), "$3": get-item(get-item($$54.getField("f2"), 1), 1), "f4": $$42.getField("f4")}] project: [$$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$35] <- [{"$1": get-item(get-item(get-item($$36, 0).getField("f2"), 0), 0), "$2": get-item($$42, 1), "$3": get-item(get-item($$54.getField("f2"), 1), 1), "f4": $$42.getField("f4")}] project: [$$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$42] <- [$$54.getField("f3")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$42] <- [$$54.getField("f3")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$54] <- [get-item($$36, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$54] <- [get-item($$36, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          assign [$$36] <- [$$p.getField("f1")] project: [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          assign [$$36] <- [$$p.getField("f1")] project: [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ASSIGN  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$p] <- test.ParquetDataset1 project ({f1:[{f2:[[any]],f3:<[any],{f4:any}>}]}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$p] <- test.ParquetDataset1 project ({f1:[{f2:[[any]],f3:<[any],{f4:any}>}]}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/query-with-limit-plan/result.001.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/query-with-limit-plan/result.001.plan
index 3b473af..5808428 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/query-with-limit-plan/result.001.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/query-with-limit-plan/result.001.plan
@@ -1,20 +1,20 @@
-distribute result [$$14] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$14] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$14] <- [{"test": $$test}] project: [$$14] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$14] <- [{"test": $$test}] project: [$$14] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$test] <- test.test limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$test] <- test.test limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/deterministic/deterministic.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/deterministic/deterministic.4.plan
index 08796cb..ade8b98 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/deterministic/deterministic.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-library/deterministic/deterministic.4.plan
@@ -1,8 +1,8 @@
-distribute result [$$1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$1] <- [{"default": getCapital_default("United States"), "deterministic": getCapital_deterministic("United States"), "not_deterministic": getCapital_not_deterministic("United States")}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$1] <- [{"default": getCapital_default("United States"), "deterministic": getCapital_deterministic("United States"), "not_deterministic": getCapital_not_deterministic("United States")}] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.04.plan
index a603091..cdfbf7b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.04.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "fsdxv😀"), lt($$20, "fsdxv😁"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "fsdxv😀"), lt($$20, "fsdxv😁"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["fsdxv😀", "fsdxv😁"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["fsdxv😀", "fsdxv😁"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.06.plan
index 8b3870b..872fe5d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.06.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "asdgdh👩‍👩‍👧"), lt($$20, "asdgdh👩‍👩‍👨"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "asdgdh👩‍👩‍👧"), lt($$20, "asdgdh👩‍👩‍👨"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["asdgdh👩‍👩‍👧", "asdgdh👩‍👩‍👨"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["asdgdh👩‍👩‍👧", "asdgdh👩‍👩‍👨"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.08.plan
index 9718efa..6709c73 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.08.plan
@@ -1,32 +1,32 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (eq($$ds1.getField(1), "sxvciis")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (eq($$ds1.getField(1), "sxvciis")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- BTREE_SEARCH  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$19, $$20] <- ["sxvciis", "sxvciis"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$19, $$20] <- ["sxvciis", "sxvciis"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.10.plan
index b3c96d3..07641d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.10.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "Joh"), lt($$20, "Joi"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "Joh"), lt($$20, "Joi"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["Joh", "Joi"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["Joh", "Joi"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.12.plan
index 39ca4a6..12f08f4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.12.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "s%vfjs__jiscii%")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (like($$ds1.getField(1), "s%vfjs__jiscii%")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.14.plan
index 4483716..1ff009e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.14.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvc_is")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (like($$ds1.getField(1), "sxvc_is")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.16.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.16.plan
index a318591..824f0a5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.16.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvc_i%")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (like($$ds1.getField(1), "sxvc_i%")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.18.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.18.plan
index 92964ef..066f67c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.18.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.18.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvfjs%jisci%")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (like($$ds1.getField(1), "sxvfjs%jisci%")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.20.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.20.plan
index 34953c3..f83e576 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.20.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.20.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "J"), lt($$20, "K"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "J"), lt($$20, "K"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["J", "K"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["J", "K"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.22.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.22.plan
index a4f11c1..905683f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.22.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.22.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "sx"), lt($$20, "sy"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "sx"), lt($$20, "sy"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["sx", "sy"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["sx", "sy"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.25.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.25.plan
index a06a7c2..cb91287 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.25.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/like-expression/like-expression.25.plan
@@ -1,32 +1,32 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (eq($$ds1.getField(1), "h\axx%")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (eq($$ds1.getField(1), "h\axx%")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- BTREE_SEARCH  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$19, $$20] <- ["h\axx%", "h\axx%"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$19, $$20] <- ["h\axx%", "h\axx%"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
index ab03c07..95256bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
@@ -1,58 +1,58 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (eq($$55, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            join (eq($$55, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HYBRID_HASH_JOIN [$$58][$$55]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$56, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$56, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                    project ([$$58]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$58]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$58, $$n] <- tpch.Nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$58, $$n] <- tpch.Nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
index d107789..ed2f322 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
@@ -1,46 +1,46 @@
-distribute result [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$36] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$42}] project: [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$36] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$42}] project: [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$43(ASC), $$44(ASC), $$42(ASC) ]  |PARTITIONED|
-        order (ASC, $$43) (ASC, $$44) (ASC, $$42) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$43) (ASC, $$44) (ASC, $$42) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$43(ASC), $$44(ASC), $$42(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$43, $$44, $$42]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$43, $$44, $$42]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$43, $$44), eq($$49, $$42))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (and(eq($$43, $$44), eq($$49, $$42))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$43, $$49][$$44, $$42]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$43, $$49]  |PARTITIONED|
-                    assign [$$49] <- [$$43] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$49] <- [$$43] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$43]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$43]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$43, $$o] <- tpch.Orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$43, $$o] <- tpch.Orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$44, $$42]  |PARTITIONED|
-                    assign [$$42] <- [$$l.getField(2)] project: [$$44, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$42] <- [$$l.getField(2)] project: [$$44, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$44, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$44, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
index 3122528..096626f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
@@ -1,46 +1,46 @@
-distribute result [$$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$38] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$47}] project: [$$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$38] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$47}] project: [$$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$43(ASC), $$44(ASC), $$47(ASC) ]  |PARTITIONED|
-        order (ASC, $$43) (ASC, $$44) (ASC, $$47) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$43) (ASC, $$44) (ASC, $$47) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$43(ASC), $$44(ASC), $$47(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$43, $$44, $$47]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$43, $$44, $$47]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                left outer join (and(eq($$43, $$44), eq($$56, $$47))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                left outer join (and(eq($$43, $$44), eq($$56, $$47))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$43, $$56][$$44, $$47]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$43, $$56]  |PARTITIONED|
-                    assign [$$56] <- [$$43] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$43] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$43]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$43]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$43, $$o] <- tpch.Orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$43, $$o] <- tpch.Orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$44, $$47]  |PARTITIONED|
-                    assign [$$47] <- [$$l.getField(2)] project: [$$44, $$47] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$47] <- [$$l.getField(2)] project: [$$44, $$47] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$44, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$44, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
index ab03c07..95256bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
@@ -1,58 +1,58 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (eq($$55, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            join (eq($$55, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HYBRID_HASH_JOIN [$$58][$$55]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$56, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$56, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                    project ([$$58]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$58]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$58, $$n] <- tpch.Nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$58, $$n] <- tpch.Nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
index ab03c07..95256bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
@@ -1,58 +1,58 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (eq($$55, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            join (eq($$55, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HYBRID_HASH_JOIN [$$58][$$55]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$56, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$56, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                    project ([$$58]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$58]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$58, $$n] <- tpch.Nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$58, $$n] <- tpch.Nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
index b00473e..3b66dd9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
@@ -1,60 +1,60 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$59(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$59(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$59, $$56, $$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$59, $$56, $$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$59, $$56][$$55, $$66]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$59, $$56]  |PARTITIONED|
-                    project ([$$56, $$59]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$56, $$59]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            order (ASC, $$56) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            order (ASC, $$56) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STABLE_SORT [$$56(ASC)]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$58, $$s] <- tpch.Supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$58, $$s] <- tpch.Supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$55, $$66]  |PARTITIONED|
-                    assign [$$66] <- [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$66] <- [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
index b00473e..3b66dd9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
@@ -1,60 +1,60 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$59(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$59(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$59, $$56, $$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$59, $$56, $$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$59, $$56][$$55, $$66]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$59, $$56]  |PARTITIONED|
-                    project ([$$56, $$59]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$56, $$59]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            order (ASC, $$56) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            order (ASC, $$56) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STABLE_SORT [$$56(ASC)]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$58, $$s] <- tpch.Supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$58, $$s] <- tpch.Supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$55, $$66]  |PARTITIONED|
-                    assign [$$66] <- [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$66] <- [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
index 2aa1aec..fffdb16 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
@@ -1,54 +1,54 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$53) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$53) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$53(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$62) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$62) project: [$$53, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$53) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$53) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$53(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$53]  |PARTITIONED|
-                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- BTREE_SEARCH  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                order (ASC, $$61) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                order (ASC, $$61) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STABLE_SORT [$$61(ASC)]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index 5d0a159..d9074d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -1,82 +1,82 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$74) project: [$$73, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- SPLIT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BTREE_SEARCH  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                              assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- SPLIT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BTREE_SEARCH  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                        assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
index 0bfde17..000676e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
@@ -1,54 +1,54 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$53) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$53) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$53(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$62) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$62) project: [$$53, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$53) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$53) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$53(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$53]  |PARTITIONED|
-                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- BTREE_SEARCH  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                order (ASC, $$61) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                order (ASC, $$61) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STABLE_SORT [$$61(ASC)]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index b936dff..2a88d87 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -1,82 +1,82 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$74) project: [$$73, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- SPLIT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BTREE_SEARCH  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                              assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- SPLIT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BTREE_SEARCH  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                        assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/offset_without_limit/offset_without_limit.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/offset_without_limit/offset_without_limit.6.plan
index e520ad8..36c857d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/offset_without_limit/offset_without_limit.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/offset_without_limit/offset_without_limit.6.plan
@@ -1,20 +1,20 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit offset 98 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit offset 98 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$16] <- [{"id": $$18, "dblpid": $$paper.getField(1)}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$16] <- [{"id": $$18, "dblpid": $$paper.getField(1)}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-          order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$18, $$paper] <- test.DBLP1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$18, $$paper] <- test.DBLP1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-external-scan-select/push-limit-to-external-scan-select.2.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-external-scan-select/push-limit-to-external-scan-select.2.plan
index 82aa37e..9b56c8e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-external-scan-select/push-limit-to-external-scan-select.2.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-external-scan-select/push-limit-to-external-scan-select.2.plan
@@ -1,20 +1,20 @@
-distribute result [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$17] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          assign [$$17] <- [$$t.getField(0)] project: [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          assign [$$17] <- [$$t.getField(0)] project: [$$17] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ASSIGN  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$t] <- test.ds1 condition (gt($$t.getField(0), 2)) limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$t] <- test.ds1 condition (gt($$t.getField(0), 2)) limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-external-scan/push-limit-to-external-scan.2.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-external-scan/push-limit-to-external-scan.2.plan
index 4428df0..b7cd2ac 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-external-scan/push-limit-to-external-scan.2.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-external-scan/push-limit-to-external-scan.2.plan
@@ -1,20 +1,20 @@
-distribute result [$$14] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$14] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$14] <- [$$t.getField(0)] project: [$$14] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$14] <- [$$t.getField(0)] project: [$$14] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$t] <- test.ds1 limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$t] <- test.ds1 limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
index a6e5efe..dff6b9e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
@@ -1,34 +1,34 @@
-distribute result [$$c] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$c] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 offset 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$18, $$19, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$24, $$25, 2, $$24, $$25, true, true, true) condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$18, $$19, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$24, $$25, 2, $$24, $$25, true, true, true) condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$24) (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$24) (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$24(ASC), $$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$24, $$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$24, $$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$23, $$24, $$25] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$22, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$23, $$24, $$25] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$22, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22] <- [150] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22] <- [150] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
index d080390..fcc0442 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
@@ -1,38 +1,38 @@
-distribute result [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$20] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$21, 0)}] project: [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$21, 0)}] project: [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            assign [$$21] <- [$$c.getField(2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$21] <- [$$c.getField(2)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  unnest-map [$$22, $$23, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$27, $$28, 2, $$27, $$28, true, true, true) condition (lt($$c.getField(2), 150)) limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  unnest-map [$$22, $$23, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$27, $$28, 2, $$27, $$28, true, true, true) condition (lt($$c.getField(2), 150)) limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BTREE_SEARCH  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      order (ASC, $$27) (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      order (ASC, $$27) (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STABLE_SORT [$$27(ASC), $$28(ASC)]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$27, $$28]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$27, $$28]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              unnest-map [$$26, $$27, $$28] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$25, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest-map [$$26, $$27, $$28] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$25, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  assign [$$25] <- [150] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$25] <- [150] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
index 33c18ad..8da6be0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
@@ -1,34 +1,34 @@
-distribute result [$$c] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$c] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 offset 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$15, $$16, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$20, $$21, 2, $$20, $$21, true, true, true) condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$15, $$16, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$20, $$21, 2, $$20, $$21, true, true, true) condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$20) (ASC, $$21) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$20) (ASC, $$21) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$20(ASC), $$21(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$20, $$21]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$20, $$21]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$19, $$20, $$21] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$18, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$19, $$20, $$21] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$18, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$18] <- [150] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$18] <- [150] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
index e8074d8..b05f64e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
@@ -1,34 +1,34 @@
-distribute result [$$c] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$c] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 offset 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$17, $$18, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$22, $$23, 2, $$22, $$23, true, true, true) condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$17, $$18, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$22, $$23, 2, $$22, $$23, true, true, true) condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$22) (ASC, $$23) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$22) (ASC, $$23) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$22(ASC), $$23(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$22, $$23]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$22, $$23]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$21, $$22, $$23] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$20, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$21, $$22, $$23] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$20, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$20] <- [150] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$20] <- [150] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.11.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.11.plan
index 2962b4d..8fd62c6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.11.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.11.plan
@@ -1,48 +1,48 @@
-distribute result [$$210] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$210] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |LOCAL|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-    aggregate [$$210] <- [agg-sql-sum($$239)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$210] <- [agg-sql-sum($$239)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |LOCAL|
-      aggregate [$$239] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$239] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |LOCAL|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-          union [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          union [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- UNION_ALL  |UNPARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-              limit 1000 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              limit 1000 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_LIMIT  |UNPARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                  limit 1000 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 1000 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    project ([]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$142, $$onek1] <- test.onek1 condition (and(ge($$onek1.getField(2), 1), le($$onek1.getField(2), 10))) limit 1000 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$142, $$onek1] <- test.onek1 condition (and(ge($$onek1.getField(2), 1), le($$onek1.getField(2), 10))) limit 1000 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-              limit 1000 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              limit 1000 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_LIMIT  |UNPARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                  limit 1000 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 1000 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    project ([]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$143, $$onek1] <- test.onek1 condition (and(ge($$onek1.getField(2), -10), le($$onek1.getField(2), -1))) limit 1000 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$143, $$onek1] <- test.onek1 condition (and(ge($$onek1.getField(2), -10), le($$onek1.getField(2), -1))) limit 1000 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
index 681f465..002557f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$paper] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$paper] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 offset 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$paper]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$paper]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$15, $$paper] <- test.DBLP1 condition (contains($$paper.getField(1), "kimL89")) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$15, $$paper] <- test.DBLP1 condition (contains($$paper.getField(1), "kimL89")) limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
index 3b3dec6..1082900 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
@@ -1,56 +1,56 @@
-distribute result [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 2 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 2 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$37] <- [{"dblpid": $$38}] project: [$$37] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$37] <- [{"dblpid": $$38}] project: [$$37] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 2 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 2 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            project ([$$38]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$38]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$38, $$41)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$38, $$41)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$38][$$41]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-                    assign [$$38] <- [$$d.getField(1)] project: [$$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$38] <- [$$d.getField(1)] project: [$$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$39, $$d] <- test.DBLP1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$39, $$d] <- test.DBLP1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$41]  |PARTITIONED|
-                    assign [$$41] <- [get-item($$30, 0).getField(0).getField(1)] project: [$$41] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$41] <- [get-item($$30, 0).getField(0).getField(1)] project: [$$41] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |UNPARTITIONED|
-                      aggregate [$$30] <- [listify($$29)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$30] <- [listify($$29)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |UNPARTITIONED|
-                        limit 1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        limit 1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_LIMIT  |UNPARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                            assign [$$29] <- [{"d": $$d}] project: [$$29] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$29] <- [{"d": $$d}] project: [$$29] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              limit 1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              limit 1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_LIMIT  |PARTITIONED|
-                                project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$d]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$40, $$d] <- test.DBLP1 condition (ends-with($$d.getField(1), "Blakeley95")) limit 1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    data-scan []<-[$$40, $$d] <- test.DBLP1 condition (ends-with($$d.getField(1), "Blakeley95")) limit 1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
index 2eeb3ff..30f8028 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
@@ -1,24 +1,24 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$19] <- [{"$1": substring($$20, 0, 21)}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$19] <- [{"$1": substring($$20, 0, 21)}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            assign [$$20] <- [$$DBLP1.getField(1)] project: [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$20] <- [$$DBLP1.getField(1)] project: [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$DBLP1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$DBLP1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$21, $$DBLP1] <- test.DBLP1 condition (gt($$DBLP1.getField(1), "series")) limit 1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$21, $$DBLP1] <- test.DBLP1 condition (gt($$DBLP1.getField(1), "series")) limit 1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
index 1090f18..f434c0c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
@@ -1,24 +1,24 @@
-distribute result [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 2 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 2 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 2 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        limit 2 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          assign [$$22] <- [$$26.getField("lang")] project: [$$22] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          assign [$$22] <- [$$26.getField("lang")] project: [$$22] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ASSIGN  |PARTITIONED|
-            assign [$$26] <- [$$t.getField("user")] project: [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$26] <- [$$t.getField("user")] project: [$$26] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$t]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$t]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$25, $$t] <- test.TweetMessages condition (and(ge($$t.getField("user").getField("friends_count"), 0), le($$t.getField("user").getField("friends_count"), 150))) limit 2 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$25, $$t] <- test.TweetMessages condition (and(ge($$t.getField("user").getField("friends_count"), 0), le($$t.getField("user").getField("friends_count"), 150))) limit 2 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.plan
index 5657b0b..3407a17 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$paper] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$paper] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 offset 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$paper]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$paper]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$13, $$paper] <- test.DBLP1 limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$13, $$paper] <- test.DBLP1 limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.plan
index 37ed6fc..e2ecdc1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.plan
@@ -1,20 +1,20 @@
-distribute result [$$paper] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$paper] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 offset 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$paper]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$paper]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$15, $$paper] <- test.DBLP1 limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$15, $$paper] <- test.DBLP1 limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.7.plan
index f57113c..62a9b42 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.7.plan
@@ -1,48 +1,48 @@
-distribute result [$$188] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$188] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |LOCAL|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-    aggregate [$$188] <- [agg-sql-sum($$213)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$188] <- [agg-sql-sum($$213)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |LOCAL|
-      aggregate [$$213] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$213] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |LOCAL|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-          union [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          union [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- UNION_ALL  |UNPARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-              limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_LIMIT  |UNPARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                  limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    project ([]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$128, $$onek1] <- test.onek1 limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$128, $$onek1] <- test.onek1 limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-              limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_LIMIT  |UNPARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                  limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    project ([]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$129, $$onek1] <- test.onek1 limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$129, $$onek1] <- test.onek1 limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.8.plan
index 0c144ee..c02c07e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.8.plan
@@ -1,41 +1,41 @@
-distribute result [$$80] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$80] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 offset 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$80] <- [get-item($$78, 0)] project: [$$80] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$80] <- [get-item($$78, 0)] project: [$$80] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        project ([$$78]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$78]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_MERGE_EXCHANGE [$$82(ASC) ]  |PARTITIONED|
-            limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_LIMIT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (topK: 10) (ASC, $$82) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (topK: 10) (ASC, $$82) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [topK: 10] [$$82(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$78, $$82]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$78, $$82]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
                       subplan {
-                                aggregate [$$78] <- [listify($$77)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$78] <- [listify($$77)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  assign [$$77] <- [object-remove(object-remove(object-remove($$t0, "title"), "authors"), "misc")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$77] <- [object-remove(object-remove(object-remove($$t0, "title"), "authors"), "misc")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$t0 <- scan-collection(to-array($$paper)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$t0 <- scan-collection(to-array($$paper)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SUBPLAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$82, $$paper] <- test.DBLP1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$82, $$paper] <- test.DBLP1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/list/enforcing_item_type/enforcing_item_type.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/list/enforcing_item_type/enforcing_item_type.1.plan
index bb24314..ac35f40 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/list/enforcing_item_type/enforcing_item_type.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/list/enforcing_item_type/enforcing_item_type.1.plan
@@ -1,10 +1,10 @@
-distribute result [$$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$21] <- [{"id": get-item($$t, 0), "v": get-item($$t, 1)}] project: [$$21] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$21] <- [{"id": get-item($$t, 0), "v": get-item($$t, 1)}] project: [$$21] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      unnest $$t <- scan-collection(ordered-list-constructor(ordered-list-constructor(29, cast({ "f1": "a", "f2": 3 })))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      unnest $$t <- scan-collection(ordered-list-constructor(ordered-list-constructor(29, cast({ "f1": "a", "f2": 3 })))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- UNNEST  |UNPARTITIONED|
-        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.1.plan
index 609bfb1..c68a1e8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.1.plan
@@ -1,8 +1,8 @@
-distribute result [$$5] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$5] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$5] <- [{ "f1": 5, "f2": 6, "f3": 7 }] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$5] <- [{ "f1": 5, "f2": 6, "f3": 7 }] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.3.plan
index e24b70a..cc58db4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.3.plan
@@ -1,18 +1,18 @@
-distribute result [$$15] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$15] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$15] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$15] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      project ([]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-          order (ASC, $$x) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$x) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$x(ASC)]  |UNPARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-              unnest $$x <- range(1, 4) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$x <- range(1, 4) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |UNPARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.5.plan
index 2498fdc..26e08c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.5.plan
@@ -1,16 +1,16 @@
-distribute result [$$15] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$15] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$15] <- [le($$x, 2)] project: [$$15] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$15] <- [le($$x, 2)] project: [$$15] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$x) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$x) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$x(ASC)]  |UNPARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            unnest $$x <- range(1, 4) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            unnest $$x <- range(1, 4) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- UNNEST  |UNPARTITIONED|
-              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.6.plan
index da04042..b387694 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.6.plan
@@ -1,16 +1,16 @@
-distribute result [$$15] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$15] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$15] <- [or(null, le($$x, 2))] project: [$$15] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$15] <- [or(null, le($$x, 2))] project: [$$15] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$x) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$x) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$x(ASC)]  |UNPARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            unnest $$x <- range(1, 4) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            unnest $$x <- range(1, 4) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- UNNEST  |UNPARTITIONED|
-              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.7.plan
index 9ea5c09..876354b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/constant_folding/constant_folding.7.plan
@@ -1,18 +1,18 @@
-distribute result [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$17] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$17] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$17] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      project ([]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-          order (ASC, $$x) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$x) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$x(ASC)]  |UNPARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-              unnest $$x <- range(1, 4) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest $$x <- range(1, 4) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- UNNEST  |UNPARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
index cb0845c..57a946d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
@@ -1,34 +1,34 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"f_1": $$15, "f_2": $$17}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"f_1": $$15, "f_2": $$17}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$15, $$17]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$15, $$17]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
         subplan {
-                  assign [$$17] <- [array-slice($$20, 0, 2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$17] <- [array-slice($$20, 0, 2)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SUBPLAN  |PARTITIONED|
           subplan {
-                    assign [$$15] <- [array-slice($$20, 0, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$15] <- [array-slice($$20, 0, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SUBPLAN  |PARTITIONED|
-            assign [$$20] <- [$$collection1.getField("array1")] project: [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$20] <- [$$collection1.getField("array1")] project: [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$collection1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$collection1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$19, $$collection1] <- test.collection1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$19, $$collection1] <- test.collection1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/load-record-fields/load-record-fields.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/load-record-fields/load-record-fields.4.plan
index 7978723..f2b3af3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/load-record-fields/load-record-fields.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/load-record-fields/load-record-fields.4.plan
@@ -1,24 +1,24 @@
-distribute result [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$md]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$md]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$32(ASC) ]  |PARTITIONED|
-          order (ASC, $$32) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$32) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (neq(uuid(), uuid())) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (neq(uuid(), uuid())) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/load-record-fields/load-record-fields.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/load-record-fields/load-record-fields.6.plan
index a539ec9..30b84dc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/load-record-fields/load-record-fields.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/objects/load-record-fields/load-record-fields.6.plan
@@ -1,24 +1,24 @@
-distribute result [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$md]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$md]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$32(ASC) ]  |PARTITIONED|
-          order (ASC, $$32) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$32) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (neq(current-date(), date: { 1980-09-10 })) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (neq(current-date(), date: { 1980-09-10 })) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/plansleep/sleep.3.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/plansleep/sleep.3.regexjson
index 75e1874..2754d24 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/plansleep/sleep.3.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/plansleep/sleep.3.regexjson
@@ -12,6 +12,7 @@
     "execution-mode": "PARTITIONED",
     "optimizer-estimates": {
       "cardinality": "R{[0-9.]+}",
+      "doc-size": "R{[0-9.]+}",
       "op-cost": "R{[0-9.]+}",
       "total-cost": "R{[0-9.]+}"
     },
@@ -24,6 +25,7 @@
         "execution-mode": "PARTITIONED",
         "optimizer-estimates": {
           "cardinality": "R{[0-9.]+}",
+          "doc-size": "R{[0-9.]+}",
           "op-cost": "R{[0-9.]+}",
           "total-cost": "R{[0-9.]+}"
         },
@@ -44,6 +46,7 @@
             "execution-mode": "PARTITIONED",
             "optimizer-estimates": {
               "cardinality": "R{[0-9.]+}",
+              "doc-size": "R{[0-9.]+}",
               "op-cost": "R{[0-9.]+}",
               "total-cost": "R{[0-9.]+}"
             },
@@ -61,6 +64,7 @@
                 "execution-mode": "PARTITIONED",
                 "optimizer-estimates": {
                   "cardinality": "R{[0-9.]+}",
+                  "doc-size": "R{[0-9.]+}",
                   "op-cost": "R{[0-9.]+}",
                   "total-cost": "R{[0-9.]+}"
                 },
@@ -96,6 +100,7 @@
                     "execution-mode": "PARTITIONED",
                     "optimizer-estimates": {
                       "cardinality": "R{[0-9.]+}",
+                      "doc-size": "R{[0-9.]+}",
                       "op-cost": "R{[0-9.]+}",
                       "total-cost": "R{[0-9.]+}"
                     },
@@ -108,6 +113,7 @@
                         "execution-mode": "PARTITIONED",
                         "optimizer-estimates": {
                           "cardinality": "R{[0-9.]+}",
+                          "doc-size": "R{[0-9.]+}",
                           "op-cost": "R{[0-9.]+}",
                           "total-cost": "R{[0-9.]+}"
                         },
@@ -135,6 +141,7 @@
                             "execution-mode": "PARTITIONED",
                             "optimizer-estimates": {
                               "cardinality": "R{[0-9.]+}",
+                              "doc-size": "R{[0-9.]+}",
                               "op-cost": "R{[0-9.]+}",
                               "total-cost": "R{[0-9.]+}"
                             },
@@ -162,6 +169,7 @@
                                 "execution-mode": "PARTITIONED",
                                 "optimizer-estimates": {
                                   "cardinality": "R{[0-9.]+}",
+                                  "doc-size": "R{[0-9.]+}",
                                   "op-cost": "R{[0-9.]+}",
                                   "total-cost": "R{[0-9.]+}"
                                 },
@@ -174,6 +182,7 @@
                                     "execution-mode": "PARTITIONED",
                                     "optimizer-estimates": {
                                       "cardinality": "R{[0-9.]+}",
+                                      "doc-size": "R{[0-9.]+}",
                                       "op-cost": "R{[0-9.]+}",
                                       "total-cost": "R{[0-9.]+}"
                                     },
@@ -231,6 +240,7 @@
                                         "execution-mode": "PARTITIONED",
                                         "optimizer-estimates": {
                                           "cardinality": "R{[0-9.]+}",
+                                          "doc-size": "R{[0-9.]+}",
                                           "op-cost": "R{[0-9.]+}",
                                           "total-cost": "R{[0-9.]+}"
                                         },
@@ -248,6 +258,7 @@
                                             "execution-mode": "PARTITIONED",
                                             "optimizer-estimates": {
                                               "cardinality": "R{[0-9.]+}",
+                                              "doc-size": "R{[0-9.]+}",
                                               "op-cost": "R{[0-9.]+}",
                                               "total-cost": "R{[0-9.]+}"
                                             },
@@ -305,6 +316,7 @@
                                                 "execution-mode": "PARTITIONED",
                                                 "optimizer-estimates": {
                                                   "cardinality": "R{[0-9.]+}",
+                                                  "doc-size": "R{[0-9.]+}",
                                                   "op-cost": "R{[0-9.]+}",
                                                   "total-cost": "R{[0-9.]+}"
                                                 },
@@ -317,6 +329,7 @@
                                                     "execution-mode": "PARTITIONED",
                                                     "optimizer-estimates": {
                                                       "cardinality": "R{[0-9.]+}",
+                                                      "doc-size": "R{[0-9.]+}",
                                                       "op-cost": "R{[0-9.]+}",
                                                       "total-cost": "R{[0-9.]+}"
                                                     },
@@ -343,6 +356,7 @@
                                                         "execution-mode": "PARTITIONED",
                                                         "optimizer-estimates": {
                                                           "cardinality": "R{[0-9.]+}",
+                                                          "doc-size": "R{[0-9.]+}",
                                                           "op-cost": "R{[0-9.]+}",
                                                           "total-cost": "R{[0-9.]+}"
                                                         },
@@ -361,6 +375,7 @@
                                                             "execution-mode": "PARTITIONED",
                                                             "optimizer-estimates": {
                                                               "cardinality": "R{[0-9.]+}",
+                                                              "doc-size": "R{[0-9.]+}",
                                                               "op-cost": "R{[0-9.]+}",
                                                               "total-cost": "R{[0-9.]+}"
                                                             },
@@ -381,6 +396,7 @@
                                                                 "execution-mode": "PARTITIONED",
                                                                 "optimizer-estimates": {
                                                                   "cardinality": "R{[0-9.]+}",
+                                                                  "doc-size": "R{[0-9.]+}",
                                                                   "op-cost": "R{[0-9.]+}",
                                                                   "total-cost": "R{[0-9.]+}"
                                                                 },
@@ -393,6 +409,7 @@
                                                                     "execution-mode": "PARTITIONED",
                                                                     "optimizer-estimates": {
                                                                       "cardinality": "R{[0-9.]+}",
+                                                                      "doc-size": "R{[0-9.]+}",
                                                                       "op-cost": "R{[0-9.]+}",
                                                                       "total-cost": "R{[0-9.]+}"
                                                                     },
@@ -415,6 +432,7 @@
                                                                         "execution-mode": "PARTITIONED",
                                                                         "optimizer-estimates": {
                                                                           "cardinality": "R{[0-9.]+}",
+                                                                          "doc-size": "R{[0-9.]+}",
                                                                           "op-cost": "R{[0-9.]+}",
                                                                           "total-cost": "R{[0-9.]+}"
                                                                         },
@@ -427,6 +445,7 @@
                                                                             "execution-mode": "PARTITIONED",
                                                                             "optimizer-estimates": {
                                                                               "cardinality": "R{[0-9.]+}",
+                                                                              "doc-size": "R{[0-9.]+}",
                                                                               "op-cost": "R{[0-9.]+}",
                                                                               "total-cost": "R{[0-9.]+}"
                                                                             },
@@ -439,6 +458,7 @@
                                                                                 "execution-mode": "PARTITIONED",
                                                                                 "optimizer-estimates": {
                                                                                   "cardinality": "R{[0-9.]+}",
+  "doc-size": "R{[0-9.]+}",
                                                                                   "op-cost": "R{[0-9.]+}",
                                                                                   "total-cost": "R{[0-9.]+}"
                                                                                 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.024.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.024.plan
index f13eb9e..82be7c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.024.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.024.plan
@@ -1,18 +1,18 @@
-distribute result [$$v] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$v] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$v] <- [{"SK0": $$14, "PK0": $$15}] project: [$$v] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$v] <- [{"SK0": $$14, "PK0": $$15}] project: [$$v] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$15(ASC) ]  |PARTITIONED|
-        order (ASC, $$15) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$15) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$15(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$14, $$15] <- test.ds1.ds1_age.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$14, $$15] <- test.ds1.ds1_age.query-index [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.025.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.025.plan
index 2baa9ac..2ea6d23 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.025.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.025.plan
@@ -1,18 +1,18 @@
-distribute result [$$v] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$v] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$v] <- [{"SK0": $$14, "SK1": $$15, "PK0": $$16}] project: [$$v] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$v] <- [{"SK0": $$14, "SK1": $$15, "PK0": $$16}] project: [$$v] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$16(ASC) ]  |PARTITIONED|
-        order (ASC, $$16) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$16) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$16(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$14, $$15, $$16] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$14, $$15, $$16] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.026.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.026.plan
index c8b01e8..1bda440 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.026.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.026.plan
@@ -1,36 +1,36 @@
-distribute result [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$57] <- [{"age": $$SK0, "dept": $$SK1, "cnt": $$63}] project: [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$57] <- [{"age": $$SK0, "dept": $$SK1, "cnt": $$63}] project: [$$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$SK1(ASC), $$SK0(ASC) ]  |PARTITIONED|
         group by ([$$SK1 := $$65; $$SK0 := $$66]) decor ([]) {
-                  aggregate [$$63] <- [agg-sql-sum($$64)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$63] <- [agg-sql-sum($$64)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$65, $$66]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$65, $$66]  |PARTITIONED|
             group by ([$$65 := $$61; $$66 := $$60]) decor ([]) {
-                      aggregate [$$64] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$64] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$61, $$60]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$61, $$60]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$61, $$60]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$60, $$61, $$62] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$60, $$61, $$62] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.027.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.027.plan
index f82628d..c1452e8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.027.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.027.plan
@@ -1,20 +1,20 @@
-distribute result [$$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$33] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$33] <- [{"cnt": $$36}] project: [$$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$33] <- [{"cnt": $$36}] project: [$$33] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$36] <- [agg-sql-sum($$37)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$36] <- [agg-sql-sum($$37)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$37] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$37] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$34, $$35] <- test.ds1.ds1_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$34, $$35] <- test.ds1.ds1_dept.query-index [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.028.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.028.plan
index ee7953e..41fc34d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.028.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.028.plan
@@ -1,36 +1,36 @@
-distribute result [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$45] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$45] <- [{"age": $$SK0, "cnt": $$49}] project: [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$45] <- [{"age": $$SK0, "cnt": $$49}] project: [$$45] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$SK0(ASC) ]  |PARTITIONED|
         group by ([$$SK0 := $$51]) decor ([]) {
-                  aggregate [$$49] <- [agg-sql-sum($$50)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$49] <- [agg-sql-sum($$50)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$51]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$51]  |PARTITIONED|
             group by ([$$51 := $$47]) decor ([]) {
-                      aggregate [$$50] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$50] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- PRE_CLUSTERED_GROUP_BY[$$47]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$47]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$47]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$47, $$48] <- test.ds1.ds1_age.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$47, $$48] <- test.ds1.ds1_age.query-index [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.029.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.029.plan
index 99731ea..f560ce8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.029.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.029.plan
@@ -1,36 +1,36 @@
-distribute result [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$45] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$45] <- [{"age": $$SK0, "cnt": $$50}] project: [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$45] <- [{"age": $$SK0, "cnt": $$50}] project: [$$45] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$SK0(ASC) ]  |PARTITIONED|
         group by ([$$SK0 := $$52]) decor ([]) {
-                  aggregate [$$50] <- [agg-sql-sum($$51)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$50] <- [agg-sql-sum($$51)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$52]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
             group by ([$$52 := $$47]) decor ([]) {
-                      aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- PRE_CLUSTERED_GROUP_BY[$$47]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$47]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$47]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$47, $$48, $$49] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$47, $$48, $$49] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.030.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.030.plan
index 7c9818e..a18047f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.030.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.030.plan
@@ -1,36 +1,36 @@
-distribute result [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$45] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$45] <- [{"age": $$SK1, "cnt": $$50}] project: [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$45] <- [{"age": $$SK1, "cnt": $$50}] project: [$$45] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$SK1(ASC) ]  |PARTITIONED|
         group by ([$$SK1 := $$52]) decor ([]) {
-                  aggregate [$$50] <- [agg-sql-sum($$51)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$50] <- [agg-sql-sum($$51)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$52]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
             group by ([$$52 := $$48]) decor ([]) {
-                      aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$48]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$48]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$48]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$47, $$48, $$49] <- test.ds1.ds1_dept_age.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$47, $$48, $$49] <- test.ds1.ds1_dept_age.query-index [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.031.plan
index 8f01ff7..d7e7d70 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/query_index/q01/q01.031.plan
@@ -1,36 +1,36 @@
-distribute result [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$57] <- [{"age": $$SK0, "dept": $$SK1, "cnt": $$63}] project: [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$57] <- [{"age": $$SK0, "dept": $$SK1, "cnt": $$63}] project: [$$57] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$SK0(ASC), $$SK1(ASC) ]  |PARTITIONED|
         group by ([$$SK0 := $$65; $$SK1 := $$66]) decor ([]) {
-                  aggregate [$$63] <- [agg-sql-sum($$64)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$63] <- [agg-sql-sum($$64)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$65, $$66]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$65, $$66]  |PARTITIONED|
             group by ([$$65 := $$60; $$66 := $$61]) decor ([]) {
-                      aggregate [$$64] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$64] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- PRE_CLUSTERED_GROUP_BY[$$60, $$61]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$60, $$61, $$62] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$60, $$61, $$62] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
index 9e9db49..9f67513 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$311] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$311] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (not(is-null($$345))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (not(is-null($$345))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$345] <- [string-default-null($$s.getField("id"))] project: [$$345] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$345] <- [string-default-null($$s.getField("id"))] project: [$$345] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$314, $$s] <- test.dat1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$314, $$s] <- test.dat1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
index 6f838fa..f16bcce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
@@ -1,35 +1,35 @@
-distribute result [$$317] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$317] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$317] <- [{"dat3": {"id": $$351, "a": string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$317] <- [{"dat3": {"id": $$351, "a": string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$351, $$345, $$318, $$295]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$351, $$345, $$318, $$295]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
           subplan {
-                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        unnest $$333 <- scan-collection($$343) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest $$333 <- scan-collection($$343) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- UNNEST  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SUBPLAN  |PARTITIONED|
-            select (not(is-null($$351))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (not(is-null($$351))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$351, $$345, $$318, $$343] <- [string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), $$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$351, $$345, $$318, $$343] <- [string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), $$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$319, $$s] <- test.dat1 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$319, $$s] <- test.dat1 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.03.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.03.plan
index b763313..3923e61 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.03.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.03.plan
@@ -1,40 +1,40 @@
-distribute result [$$134] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$134] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$134] <- [{"$1": 1, "l_returnflag": $$l_returnflag, "l_linestatus": $$l_linestatus, "sum_qty": $$140, "sum_base_price": $$141, "sum_disc_price": $$142, "sum_charge": $$143, "avg_qty": $$144, "avg_price": $$145, "avg_disc": $$146, "count_order": $$147}] project: [$$134] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$134] <- [{"$1": 1, "l_returnflag": $$l_returnflag, "l_linestatus": $$l_linestatus, "sum_qty": $$140, "sum_base_price": $$141, "sum_disc_price": $$142, "sum_charge": $$143, "avg_qty": $$144, "avg_price": $$145, "avg_disc": $$146, "count_order": $$147}] project: [$$134] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ]  |PARTITIONED|
         group by ([$$l_returnflag := $$160; $$l_linestatus := $$161]) decor ([]) {
-                  aggregate [$$140, $$141, $$142, $$143, $$144, $$145, $$146, $$147] <- [agg-global-sql-sum($$152), agg-global-sql-sum($$153), agg-global-sql-sum($$154), agg-global-sql-sum($$155), agg-global-sql-avg($$156), agg-global-sql-avg($$157), agg-global-sql-avg($$158), agg-sql-sum($$159)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$140, $$141, $$142, $$143, $$144, $$145, $$146, $$147] <- [agg-global-sql-sum($$152), agg-global-sql-sum($$153), agg-global-sql-sum($$154), agg-global-sql-sum($$155), agg-global-sql-avg($$156), agg-global-sql-avg($$157), agg-global-sql-avg($$158), agg-sql-sum($$159)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$160, $$161]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$160, $$161]  |PARTITIONED|
             group by ([$$160 := $$135; $$161 := $$136]) decor ([]) {
-                      aggregate [$$152, $$153, $$154, $$155, $$156, $$157, $$158, $$159] <- [agg-local-sql-sum($$88), agg-local-sql-sum($$93), agg-local-sql-sum(numeric-multiply($$93, numeric-subtract(1, $$149))), agg-local-sql-sum(numeric-multiply(numeric-multiply($$93, numeric-subtract(1, $$149)), numeric-add(1, $$151))), agg-local-sql-avg($$88), agg-local-sql-avg($$93), agg-local-sql-avg($$149), agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$152, $$153, $$154, $$155, $$156, $$157, $$158, $$159] <- [agg-local-sql-sum($$88), agg-local-sql-sum($$93), agg-local-sql-sum(numeric-multiply($$93, numeric-subtract(1, $$149))), agg-local-sql-sum(numeric-multiply(numeric-multiply($$93, numeric-subtract(1, $$149)), numeric-add(1, $$151))), agg-local-sql-avg($$88), agg-local-sql-avg($$93), agg-local-sql-avg($$149), agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$135, $$136]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (le($$l.getField(10), "1998-09-16")) project: [$$88, $$93, $$149, $$151, $$135, $$136] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (le($$l.getField(10), "1998-09-16")) project: [$$88, $$93, $$149, $$151, $$135, $$136] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$136, $$135, $$88, $$149, $$151, $$93] <- [$$l.getField(9), $$l.getField(8), $$l.getField(4), $$l.getField(6), $$l.getField(7), $$l.getField(5)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$136, $$135, $$88, $$149, $$151, $$93] <- [$$l.getField(9), $$l.getField(8), $$l.getField(4), $$l.getField(6), $$l.getField(7), $$l.getField(5)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$138, $$139, $$l] <- tpch.lineitem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$138, $$139, $$l] <- tpch.lineitem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.04.plan
index 7e14303..0bc5602 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.04.plan
@@ -1,267 +1,267 @@
-distribute result [$$194] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$194] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$194] <- [{"$1": 2, "s_acctbal": $$237, "s_name": $$239, "n_name": $$238, "p_partkey": $$250, "p_mfgr": $$244, "s_address": $$245, "s_phone": $$246, "s_comment": $$247}] project: [$$194] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$194] <- [{"$1": 2, "s_acctbal": $$237, "s_name": $$239, "n_name": $$238, "p_partkey": $$250, "p_mfgr": $$244, "s_address": $$245, "s_phone": $$246, "s_comment": $$247}] project: [$$194] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$237(DESC), $$238(ASC), $$239(ASC), $$250(ASC) ]  |PARTITIONED|
-          limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 100) (DESC, $$237) (ASC, $$238) (ASC, $$239) (ASC, $$250) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 100) (DESC, $$237) (ASC, $$238) (ASC, $$239) (ASC, $$250) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 100] [$$237(DESC), $$238(ASC), $$239(ASC), $$250(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$221, $$206)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$221, $$206)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$221][$$206]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$221]  |PARTITIONED|
-                          project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247, $$221]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247, $$221]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$225, $$205)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$225, $$205)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$225][$$205]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$225]  |PARTITIONED|
-                                  project ([$$237, $$239, $$250, $$244, $$245, $$246, $$247, $$225]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$237, $$239, $$250, $$244, $$245, $$246, $$247, $$225]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (and(eq($$250, $$203), eq($$202, $$231))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (and(eq($$250, $$203), eq($$202, $$231))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$250, $$231][$$203, $$202]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          assign [$$231] <- [get-item($$181, 0)] project: [$$250, $$244, $$231] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$231] <- [get-item($$181, 0)] project: [$$250, $$244, $$231] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                               group by ([$$250 := $$200]) decor ([$$244]) {
-                                                        aggregate [$$181] <- [listify($$215)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        aggregate [$$181] <- [listify($$215)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- AGGREGATE  |LOCAL|
-                                                          aggregate [$$215] <- [agg-sql-min($$208)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          aggregate [$$215] <- [agg-sql-min($$208)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- AGGREGATE  |LOCAL|
-                                                            select (not(is-missing($$249))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            select (not(is-missing($$249))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_SELECT  |LOCAL|
-                                                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- PRE_CLUSTERED_GROUP_BY[$$200]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  order (ASC, $$200) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  order (ASC, $$200) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STABLE_SORT [$$200(ASC)]  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      project ([$$244, $$208, $$249, $$200]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      project ([$$244, $$208, $$249, $$200]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- STREAM_PROJECT  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          left outer join (eq($$207, $$200)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          left outer join (eq($$207, $$200)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HYBRID_HASH_JOIN [$$200][$$207]  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- HASH_PARTITION_EXCHANGE [$$200]  |PARTITIONED|
-                                                              select (and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) project: [$$244, $$200] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              select (and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) project: [$$244, $$200] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- STREAM_SELECT  |PARTITIONED|
-                                                                assign [$$244] <- [$$p.getField(2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                assign [$$244] <- [$$p.getField(2)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ASSIGN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    data-scan []<-[$$200, $$p] <- tpch.part [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    data-scan []<-[$$200, $$p] <- tpch.part [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- HASH_PARTITION_EXCHANGE [$$207]  |PARTITIONED|
-                                                              assign [$$249] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              assign [$$249] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ASSIGN  |PARTITIONED|
-                                                                project ([$$208, $$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                project ([$$208, $$207]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    join (eq($$218, $$213)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    join (eq($$218, $$213)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- HYBRID_HASH_JOIN [$$218][$$213]  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- HASH_PARTITION_EXCHANGE [$$218]  |PARTITIONED|
-                                                                        project ([$$208, $$207, $$218]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        project ([$$208, $$207, $$218]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- STREAM_PROJECT  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            join (eq($$207, $$209)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            join (eq($$207, $$209)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- HYBRID_HASH_JOIN [$$207][$$209]  |PARTITIONED|
-                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- HASH_PARTITION_EXCHANGE [$$207]  |PARTITIONED|
-                                                                                project ([$$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                project ([$$207]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                    data-scan []<-[$$207, $$p2] <- tpch.part [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    data-scan []<-[$$207, $$p2] <- tpch.part [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- HASH_PARTITION_EXCHANGE [$$209]  |PARTITIONED|
-                                                                                project ([$$208, $$218, $$209]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                project ([$$208, $$218, $$209]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                    join (eq($$223, $$212)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    join (eq($$223, $$212)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- HYBRID_HASH_JOIN [$$223][$$212]  |PARTITIONED|
-                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- HASH_PARTITION_EXCHANGE [$$223]  |PARTITIONED|
-                                                                                        project ([$$208, $$209, $$223]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        project ([$$208, $$209, $$223]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- STREAM_PROJECT  |PARTITIONED|
-                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            join (eq($$211, $$210)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            join (eq($$211, $$210)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- HYBRID_HASH_JOIN [$$210][$$211]  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- REPLICATE  |PARTITIONED|
-                                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                                                                                                    project ([$$208, $$209, $$210]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                    project ([$$208, $$209, $$210]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                        data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                        data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- HASH_PARTITION_EXCHANGE [$$211]  |PARTITIONED|
-                                                                                                assign [$$223] <- [$$s2.getField(3)] project: [$$223, $$211] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                assign [$$223] <- [$$s2.getField(3)] project: [$$223, $$211] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- ASSIGN  |PARTITIONED|
-                                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    data-scan []<-[$$211, $$s2] <- tpch.supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                    data-scan []<-[$$211, $$s2] <- tpch.supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- HASH_PARTITION_EXCHANGE [$$212]  |PARTITIONED|
-                                                                                        assign [$$218] <- [$$n2.getField(2)] project: [$$218, $$212] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        assign [$$218] <- [$$n2.getField(2)] project: [$$218, $$212] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- ASSIGN  |PARTITIONED|
-                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- REPLICATE  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- REPLICATE  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- HASH_PARTITION_EXCHANGE [$$213]  |PARTITIONED|
-                                                                            select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$203]  |PARTITIONED|
-                                          project ([$$237, $$239, $$245, $$246, $$247, $$225, $$203, $$202]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$237, $$239, $$245, $$246, $$247, $$225, $$203, $$202]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (eq($$201, $$204)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              join (eq($$201, $$204)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HYBRID_HASH_JOIN [$$201][$$204]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$201]  |PARTITIONED|
-                                                  assign [$$247, $$246, $$245, $$237, $$239, $$225] <- [$$s.getField(6), $$s.getField(4), $$s.getField(2), $$s.getField(5), $$s.getField(1), $$s.getField(3)] project: [$$237, $$239, $$245, $$246, $$247, $$225, $$201] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$247, $$246, $$245, $$237, $$239, $$225] <- [$$s.getField(6), $$s.getField(4), $$s.getField(2), $$s.getField(5), $$s.getField(1), $$s.getField(3)] project: [$$237, $$239, $$245, $$246, $$247, $$225, $$201] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$201, $$s] <- tpch.supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$201, $$s] <- tpch.supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  assign [$$202, $$203, $$204] <- [$$208, $$209, $$210] project: [$$202, $$203, $$204] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$202, $$203, $$204] <- [$$208, $$209, $$210] project: [$$202, $$203, $$204] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- REPLICATE  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                                                          project ([$$208, $$209, $$210]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          project ([$$208, $$209, $$210]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- STREAM_PROJECT  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$205]  |PARTITIONED|
-                                  assign [$$238, $$221] <- [$$n.getField(1), $$n.getField(2)] project: [$$238, $$221, $$205] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$238, $$221] <- [$$n.getField(1), $$n.getField(2)] project: [$$238, $$221, $$205] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    assign [$$205, $$n] <- [$$212, $$n2] project: [$$205, $$n] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$205, $$n] <- [$$212, $$n2] project: [$$205, $$n] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- REPLICATE  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          assign [$$206] <- [$$213] project: [$$206] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$206] <- [$$213] project: [$$206] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- REPLICATE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$213]  |PARTITIONED|
-                                  select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_SELECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.05.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.05.plan
index 4cc9d0a..76239ed 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.05.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.05.plan
@@ -1,92 +1,92 @@
-distribute result [$$122] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$122] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$122] <- [{"$1": 3, "l_orderkey": $$l_orderkey, "revenue": $$134, "o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}] project: [$$122] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$122] <- [{"$1": 3, "l_orderkey": $$l_orderkey, "revenue": $$134, "o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}] project: [$$122] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$134(DESC), $$o_orderdate(ASC) ]  |PARTITIONED|
-          limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 10) (DESC, $$134) (ASC, $$o_orderdate) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 10) (DESC, $$134) (ASC, $$o_orderdate) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 10] [$$134(DESC), $$o_orderdate(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   group by ([$$l_orderkey := $$142; $$o_orderdate := $$143; $$o_shippriority := $$144]) decor ([]) {
-                            aggregate [$$134] <- [agg-global-sql-sum($$141)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$134] <- [agg-global-sql-sum($$141)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SORT_GROUP_BY[$$142, $$143, $$144]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$142, $$143, $$144]  |PARTITIONED|
                       group by ([$$142 := $$131; $$143 := $$127; $$144 := $$125]) decor ([]) {
-                                aggregate [$$141] <- [agg-local-sql-sum(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$141] <- [agg-local-sql-sum(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SORT_GROUP_BY[$$131, $$127, $$125]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$139, $$140, $$131, $$127, $$125]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$139, $$140, $$131, $$127, $$125]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$131, $$129)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$131, $$129)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$129][$$131]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$129]  |PARTITIONED|
-                                  project ([$$127, $$125, $$129]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$127, $$125, $$129]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$128, $$136)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (eq($$128, $$136)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$128][$$136]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$128]  |PARTITIONED|
-                                          select (eq($$c.getField(6), "BUILDING")) project: [$$128] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          select (eq($$c.getField(6), "BUILDING")) project: [$$128] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              data-scan []<-[$$128, $$c] <- tpch.customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              data-scan []<-[$$128, $$c] <- tpch.customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$136]  |PARTITIONED|
-                                          select (lt($$127, "1995-03-22")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          select (lt($$127, "1995-03-22")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$125, $$136, $$127] <- [$$o.getField(7), $$o.getField(1), $$o.getField(4)] project: [$$129, $$125, $$136, $$127] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$125, $$136, $$127] <- [$$o.getField(7), $$o.getField(1), $$o.getField(4)] project: [$$129, $$125, $$136, $$127] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$129, $$o] <- tpch.orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$129, $$o] <- tpch.orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$131]  |PARTITIONED|
-                                  select (gt($$l.getField(10), "1995-03-22")) project: [$$139, $$140, $$131] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  select (gt($$l.getField(10), "1995-03-22")) project: [$$139, $$140, $$131] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_SELECT  |PARTITIONED|
-                                    assign [$$140, $$139] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$140, $$139] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$131, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$131, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$130, $$131, $$l] <- tpch.lineitem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$130, $$131, $$l] <- tpch.lineitem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.06.plan
index bb627cd..1ccaaec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.06.plan
@@ -1,92 +1,92 @@
-distribute result [$$74] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$74] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$74] <- [{"$1": 4, "o_orderpriority": $$o_orderpriority, "order_count": $$81}] project: [$$74] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$74] <- [{"$1": 4, "o_orderpriority": $$o_orderpriority, "order_count": $$81}] project: [$$74] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$o_orderpriority(ASC) ]  |PARTITIONED|
         group by ([$$o_orderpriority := $$91]) decor ([]) {
-                  aggregate [$$81] <- [agg-sql-sum($$90)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$81] <- [agg-sql-sum($$90)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$91]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$91]  |PARTITIONED|
             group by ([$$91 := $$75]) decor ([]) {
-                      aggregate [$$90] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$90] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$75]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (neq($$80, 0)) project: [$$75] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (neq($$80, 0)) project: [$$75] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  project ([$$80, $$75]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$80, $$75]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                       group by ([$$87 := $$89]) decor ([$$75]) {
-                                aggregate [$$80] <- [agg-sum($$88)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$80] <- [agg-sum($$88)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- PRE_CLUSTERED_GROUP_BY[$$89]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                           group by ([$$89 := $$77]) decor ([$$75]) {
-                                    aggregate [$$88] <- [agg-count({"l": $$l})] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$88] <- [agg-count({"l": $$l})] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
-                                      select (not(is-missing($$86))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      select (not(is-missing($$86))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_SELECT  |LOCAL|
-                                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- PRE_CLUSTERED_GROUP_BY[$$77]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              order (ASC, $$77) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              order (ASC, $$77) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STABLE_SORT [$$77(ASC)]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$75, $$l, $$86, $$77]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$75, $$l, $$86, $$77]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      left outer join (eq($$79, $$77)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      left outer join (eq($$79, $$77)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$77][$$79]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$77]  |PARTITIONED|
-                                          select (and(ge($$76, "1996-05-01"), lt($$76, "1996-08-01"))) project: [$$75, $$77] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          select (and(ge($$76, "1996-05-01"), lt($$76, "1996-08-01"))) project: [$$75, $$77] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$75, $$76] <- [$$o.getField(5), $$o.getField(4)] project: [$$77, $$75, $$76] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$75, $$76] <- [$$o.getField(5), $$o.getField(4)] project: [$$77, $$75, $$76] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$77, $$o] <- tpch.orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$77, $$o] <- tpch.orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
-                                          assign [$$86] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$86] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            select (lt($$l.getField(11), $$l.getField(12))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            select (lt($$l.getField(11), $$l.getField(12))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_SELECT  |PARTITIONED|
-                                              project ([$$79, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              project ([$$79, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$78, $$79, $$l] <- tpch.lineitem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$78, $$79, $$l] <- tpch.lineitem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.07.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.07.plan
index 521c4a5..5b6f983 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.07.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.07.plan
@@ -1,144 +1,144 @@
-distribute result [$$149] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$149] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$149] <- [{"$1": 5, "n_name": $$n_name, "revenue": $$165}] project: [$$149] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$149] <- [{"$1": 5, "n_name": $$n_name, "revenue": $$165}] project: [$$149] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$165(DESC) ]  |PARTITIONED|
-        order (DESC, $$165) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (DESC, $$165) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$165(DESC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
             group by ([$$n_name := $$176]) decor ([]) {
-                      aggregate [$$165] <- [agg-global-sql-sum($$175)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$165] <- [agg-global-sql-sum($$175)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$176]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$176]  |PARTITIONED|
                 group by ([$$176 := $$150]) decor ([]) {
-                          aggregate [$$175] <- [agg-local-sql-sum(numeric-multiply($$173, numeric-subtract(1, $$174)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$175] <- [agg-local-sql-sum(numeric-multiply($$173, numeric-subtract(1, $$174)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SORT_GROUP_BY[$$150]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$173, $$174, $$150]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$173, $$174, $$150]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$163, $$161)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$163, $$161)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$163][$$161]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$163]  |PARTITIONED|
-                            project ([$$173, $$174, $$150, $$163]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$173, $$174, $$150, $$163]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                join (eq($$154, $$160)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                join (eq($$154, $$160)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HYBRID_HASH_JOIN [$$154][$$160]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$154]  |PARTITIONED|
-                                    project ([$$173, $$174, $$154]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$173, $$174, $$154]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        join (and(eq($$153, $$154), eq($$170, $$159))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        join (and(eq($$153, $$154), eq($$170, $$159))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HYBRID_HASH_JOIN [$$153, $$170][$$154, $$159]  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$153, $$170]  |PARTITIONED|
-                                            project ([$$173, $$174, $$153, $$170]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$173, $$174, $$153, $$170]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                join (eq($$158, $$156)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                join (eq($$158, $$156)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HYBRID_HASH_JOIN [$$156][$$158]  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- HASH_PARTITION_EXCHANGE [$$156]  |PARTITIONED|
-                                                    project ([$$153, $$156]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    project ([$$153, $$156]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        join (eq($$155, $$167)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        join (eq($$155, $$167)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HYBRID_HASH_JOIN [$$155][$$167]  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$155]  |PARTITIONED|
-                                                            assign [$$153] <- [$$c.getField(3)] project: [$$153, $$155] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$153] <- [$$c.getField(3)] project: [$$153, $$155] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$155, $$c] <- tpch.customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                data-scan []<-[$$155, $$c] <- tpch.customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$167]  |PARTITIONED|
-                                                            select (and(ge($$151, "1993-01-01"), lt($$151, "1994-01-01"))) project: [$$156, $$167] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            select (and(ge($$151, "1993-01-01"), lt($$151, "1994-01-01"))) project: [$$156, $$167] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                              assign [$$167, $$151] <- [$$o.getField(1), $$o.getField(4)] project: [$$156, $$167, $$151] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              assign [$$167, $$151] <- [$$o.getField(1), $$o.getField(4)] project: [$$156, $$167, $$151] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ASSIGN  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  data-scan []<-[$$156, $$o] <- tpch.orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  data-scan []<-[$$156, $$o] <- tpch.orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- HASH_PARTITION_EXCHANGE [$$158]  |PARTITIONED|
-                                                    assign [$$174, $$173, $$170] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$173, $$174, $$170, $$158] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$174, $$173, $$170] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$173, $$174, $$170, $$158] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      project ([$$158, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      project ([$$158, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- STREAM_PROJECT  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          data-scan []<-[$$157, $$158, $$l] <- tpch.lineitem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          data-scan []<-[$$157, $$158, $$l] <- tpch.lineitem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$154, $$159]  |PARTITIONED|
-                                            assign [$$154] <- [$$s.getField(3)] project: [$$154, $$159] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$154] <- [$$s.getField(3)] project: [$$154, $$159] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$159, $$s] <- tpch.supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$159, $$s] <- tpch.supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$160]  |PARTITIONED|
-                                    assign [$$150, $$163] <- [$$n.getField(1), $$n.getField(2)] project: [$$150, $$163, $$160] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$150, $$163] <- [$$n.getField(1), $$n.getField(2)] project: [$$150, $$163, $$160] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$160, $$n] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        data-scan []<-[$$160, $$n] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$161]  |PARTITIONED|
-                            select (eq($$r.getField(1), "AFRICA")) project: [$$161] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$r.getField(1), "AFRICA")) project: [$$161] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$161, $$r] <- tpch.region [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$161, $$r] <- tpch.region [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.08.plan
index 31c1460..8505dcf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.08.plan
@@ -1,156 +1,156 @@
-distribute result [$$186] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$186] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$186] <- [{"$1": 7, "supp_nation": $$supp_nation, "cust_nation": $$cust_nation, "l_year": $$l_year, "revenue": $$200}] project: [$$186] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$186] <- [{"$1": 7, "supp_nation": $$supp_nation, "cust_nation": $$cust_nation, "l_year": $$l_year, "revenue": $$200}] project: [$$186] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$supp_nation(ASC), $$cust_nation(ASC), $$l_year(ASC) ]  |PARTITIONED|
         group by ([$$supp_nation := $$217; $$cust_nation := $$218; $$l_year := $$219]) decor ([]) {
-                  aggregate [$$200] <- [agg-global-sql-sum($$216)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$200] <- [agg-global-sql-sum($$216)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$217, $$218, $$219]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$217, $$218, $$219]  |PARTITIONED|
             group by ([$$217 := $$191; $$218 := $$192; $$219 := $$214]) decor ([]) {
-                      aggregate [$$216] <- [agg-local-sql-sum($$184)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$216] <- [agg-local-sql-sum($$184)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$191, $$192, $$214]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$184, $$214] <- [numeric-multiply($$211, numeric-subtract(1, $$212)), get-year(date($$190))] project: [$$184, $$191, $$192, $$214] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$184, $$214] <- [numeric-multiply($$211, numeric-subtract(1, $$212)), get-year(date($$190))] project: [$$184, $$191, $$192, $$214] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  select (or(and(eq($$191, "KENYA"), eq($$192, "PERU")), and(eq($$191, "PERU"), eq($$192, "KENYA")))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (or(and(eq($$191, "KENYA"), eq($$192, "PERU")), and(eq($$191, "PERU"), eq($$192, "KENYA")))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$191, $$211, $$212, $$190, $$192]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$191, $$211, $$212, $$190, $$192]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$201, $$199)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$201, $$199)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$201][$$199]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$201]  |PARTITIONED|
-                            project ([$$191, $$211, $$212, $$190, $$201]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$191, $$211, $$212, $$190, $$201]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                join (eq($$205, $$198)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                join (eq($$205, $$198)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HYBRID_HASH_JOIN [$$205][$$198]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$205]  |PARTITIONED|
-                                    project ([$$211, $$212, $$190, $$201, $$205]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$211, $$212, $$190, $$201, $$205]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        join (eq($$197, $$210)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        join (eq($$197, $$210)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HYBRID_HASH_JOIN [$$210][$$197]  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                                            project ([$$211, $$212, $$190, $$205, $$210]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$211, $$212, $$190, $$205, $$210]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                join (eq($$196, $$195)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                join (eq($$196, $$195)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HYBRID_HASH_JOIN [$$195][$$196]  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- HASH_PARTITION_EXCHANGE [$$195]  |PARTITIONED|
-                                                    project ([$$211, $$212, $$190, $$205, $$195]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    project ([$$211, $$212, $$190, $$205, $$195]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        join (eq($$193, $$204)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        join (eq($$193, $$204)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HYBRID_HASH_JOIN [$$193][$$204]  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$193]  |PARTITIONED|
-                                                            assign [$$205] <- [$$s.getField(3)] project: [$$205, $$193] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$205] <- [$$s.getField(3)] project: [$$205, $$193] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$193, $$s] <- tpch.supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                data-scan []<-[$$193, $$s] <- tpch.supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$204]  |PARTITIONED|
-                                                            select (and(ge($$190, "1995-01-01"), le($$190, "1996-12-31"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            select (and(ge($$190, "1995-01-01"), le($$190, "1996-12-31"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                              assign [$$212, $$211, $$204, $$190] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(10)] project: [$$195, $$212, $$211, $$204, $$190] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              assign [$$212, $$211, $$204, $$190] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(10)] project: [$$195, $$212, $$211, $$204, $$190] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ASSIGN  |PARTITIONED|
-                                                                project ([$$195, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                project ([$$195, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    data-scan []<-[$$194, $$195, $$l] <- tpch.lineitem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    data-scan []<-[$$194, $$195, $$l] <- tpch.lineitem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- HASH_PARTITION_EXCHANGE [$$196]  |PARTITIONED|
-                                                    assign [$$210] <- [$$o.getField(1)] project: [$$210, $$196] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$210] <- [$$o.getField(1)] project: [$$210, $$196] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan []<-[$$196, $$o] <- tpch.orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        data-scan []<-[$$196, $$o] <- tpch.orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$197]  |PARTITIONED|
-                                            assign [$$201] <- [$$c.getField(3)] project: [$$201, $$197] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$201] <- [$$c.getField(3)] project: [$$201, $$197] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$197, $$c] <- tpch.customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$197, $$c] <- tpch.customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- REPLICATE  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HASH_PARTITION_EXCHANGE [$$198]  |PARTITIONED|
-                                        assign [$$191] <- [$$n1.getField(1)] project: [$$191, $$198] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$191] <- [$$n1.getField(1)] project: [$$191, $$198] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$198, $$n1] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$198, $$n1] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$192, $$199] <- [$$191, $$198] project: [$$192, $$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$192, $$199] <- [$$191, $$198] project: [$$192, $$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- REPLICATE  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$198]  |PARTITIONED|
-                                    assign [$$191] <- [$$n1.getField(1)] project: [$$191, $$198] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$191] <- [$$n1.getField(1)] project: [$$191, $$198] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$198, $$n1] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        data-scan []<-[$$198, $$n1] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.09.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.09.plan
index 0ad796d..a4a177e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.09.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.09.plan
@@ -1,188 +1,188 @@
-distribute result [$$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$199] <- [{"$1": 8, "o_year": $$o_year, "mkt_share": numeric-divide($$214, $$215)}] project: [$$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$199] <- [{"$1": 8, "o_year": $$o_year, "mkt_share": numeric-divide($$214, $$215)}] project: [$$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$$o_year := $$238]) decor ([]) {
-                  aggregate [$$214, $$215] <- [agg-global-sql-sum($$236), agg-global-sql-sum($$237)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$214, $$215] <- [agg-global-sql-sum($$236), agg-global-sql-sum($$237)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$238]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$238]  |PARTITIONED|
             group by ([$$238 := $$200]) decor ([]) {
-                      aggregate [$$236, $$237] <- [agg-local-sql-sum(switch-case(true, eq($$232, "PERU"), numeric-multiply($$230, numeric-subtract(1, $$231)), 0)), agg-local-sql-sum(numeric-multiply($$230, numeric-subtract(1, $$231)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$236, $$237] <- [agg-local-sql-sum(switch-case(true, eq($$232, "PERU"), numeric-multiply($$230, numeric-subtract(1, $$231)), 0)), agg-local-sql-sum(numeric-multiply($$230, numeric-subtract(1, $$231)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$200]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$200] <- [get-year(date($$201))] project: [$$232, $$230, $$231, $$200] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$200] <- [get-year(date($$201))] project: [$$232, $$230, $$231, $$200] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$232, $$230, $$231, $$201]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$232, $$230, $$231, $$201]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$212, $$210)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$212, $$210)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$212][$$210]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$212]  |PARTITIONED|
-                          project ([$$232, $$230, $$231, $$201, $$212]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$232, $$230, $$231, $$201, $$212]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$216, $$209)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$216, $$209)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$216][$$209]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$216]  |PARTITIONED|
-                                  project ([$$230, $$231, $$201, $$212, $$216]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$230, $$231, $$201, $$212, $$216]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$218, $$208)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (eq($$218, $$208)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$218][$$208]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$218]  |PARTITIONED|
-                                          project ([$$230, $$231, $$201, $$216, $$218]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$230, $$231, $$201, $$216, $$218]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (eq($$226, $$207)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              join (eq($$226, $$207)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HYBRID_HASH_JOIN [$$226][$$207]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$226]  |PARTITIONED|
-                                                  project ([$$230, $$231, $$201, $$216, $$226]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  project ([$$230, $$231, $$201, $$216, $$226]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      join (eq($$205, $$206)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      join (eq($$205, $$206)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- HYBRID_HASH_JOIN [$$205][$$206]  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HASH_PARTITION_EXCHANGE [$$205]  |PARTITIONED|
-                                                          project ([$$230, $$231, $$216, $$205]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          project ([$$230, $$231, $$216, $$205]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- STREAM_PROJECT  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              join (and(eq($$202, $$221), eq($$203, $$223))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              join (and(eq($$202, $$221), eq($$203, $$223))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- HYBRID_HASH_JOIN [$$202, $$203][$$221, $$223]  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- HASH_PARTITION_EXCHANGE [$$202, $$203]  |PARTITIONED|
-                                                                  join (true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  join (true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- NESTED_LOOP  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      select (eq($$p.getField(4), "ECONOMY BURNISHED NICKEL")) project: [$$202] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      select (eq($$p.getField(4), "ECONOMY BURNISHED NICKEL")) project: [$$202] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- STREAM_SELECT  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          data-scan []<-[$$202, $$p] <- tpch.part [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          data-scan []<-[$$202, $$p] <- tpch.part [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                                      assign [$$216] <- [$$s.getField(3)] project: [$$216, $$203] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      assign [$$216] <- [$$s.getField(3)] project: [$$216, $$203] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ASSIGN  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          data-scan []<-[$$203, $$s] <- tpch.supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          data-scan []<-[$$203, $$s] <- tpch.supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- HASH_PARTITION_EXCHANGE [$$221, $$223]  |PARTITIONED|
-                                                                  assign [$$231, $$230, $$223, $$221] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(1)] project: [$$230, $$231, $$205, $$221, $$223] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  assign [$$231, $$230, $$223, $$221] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(1)] project: [$$230, $$231, $$205, $$221, $$223] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ASSIGN  |PARTITIONED|
-                                                                    project ([$$205, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    project ([$$205, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        data-scan []<-[$$204, $$205, $$l] <- tpch.lineitem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        data-scan []<-[$$204, $$205, $$l] <- tpch.lineitem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HASH_PARTITION_EXCHANGE [$$206]  |PARTITIONED|
-                                                          select (and(ge($$201, "1995-01-01"), le($$201, "1996-12-31"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          select (and(ge($$201, "1995-01-01"), le($$201, "1996-12-31"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- STREAM_SELECT  |PARTITIONED|
-                                                            assign [$$226, $$201] <- [$$o.getField(1), $$o.getField(4)] project: [$$206, $$226, $$201] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$226, $$201] <- [$$o.getField(1), $$o.getField(4)] project: [$$206, $$226, $$201] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$206, $$o] <- tpch.orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                data-scan []<-[$$206, $$o] <- tpch.orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$207]  |PARTITIONED|
-                                                  assign [$$218] <- [$$c.getField(3)] project: [$$218, $$207] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$218] <- [$$c.getField(3)] project: [$$218, $$207] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$207, $$c] <- tpch.customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$207, $$c] <- tpch.customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$208]  |PARTITIONED|
-                                          assign [$$212] <- [$$n1.getField(2)] project: [$$212, $$208] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$212] <- [$$n1.getField(2)] project: [$$212, $$208] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- REPLICATE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$208, $$n1] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$208, $$n1] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$209]  |PARTITIONED|
-                                  assign [$$232] <- [$$n2.getField(1)] project: [$$232, $$209] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$232] <- [$$n2.getField(1)] project: [$$232, $$209] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    assign [$$209, $$n2] <- [$$208, $$n1] project: [$$209, $$n2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$209, $$n2] <- [$$208, $$n1] project: [$$209, $$n2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- REPLICATE  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$208, $$n1] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$208, $$n1] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                          select (eq($$r.getField(1), "AMERICA")) project: [$$210] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$r.getField(1), "AMERICA")) project: [$$210] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$210, $$r] <- tpch.region [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$210, $$r] <- tpch.region [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.10.plan
index 06b0977..e354825 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.10.plan
@@ -1,118 +1,118 @@
-distribute result [$$122] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$122] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$122] <- [{"$1": 9, "$2": $$140}] project: [$$122] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$122] <- [{"$1": 9, "$2": $$140}] project: [$$122] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$140] <- [agg-sql-sum($$144)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$140] <- [agg-sql-sum($$144)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$144] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$144] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (eq($$138, $$137)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              join (eq($$138, $$137)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HYBRID_HASH_JOIN [$$138][$$137]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$138]  |PARTITIONED|
-                  project ([$$138]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$138]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$136, $$132)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$136, $$132)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$132][$$136]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$132]  |PARTITIONED|
-                          project ([$$138, $$132]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$138, $$132]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (and(eq($$130, $$135), eq($$134, $$125))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (and(eq($$130, $$135), eq($$134, $$125))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$130, $$125][$$135, $$134]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$130, $$138, $$132, $$125]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$130, $$138, $$132, $$125]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (and(eq($$130, $$128), eq($$129, $$125))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (and(eq($$130, $$128), eq($$129, $$125))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$130, $$129][$$128, $$125]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$130, $$129]  |PARTITIONED|
-                                          join (true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          join (true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- NESTED_LOOP  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              select (like($$p.getField(1), "%green%")) project: [$$129] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              select (like($$p.getField(1), "%green%")) project: [$$129] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- STREAM_SELECT  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$129, $$p] <- tpch.part [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$129, $$p] <- tpch.part [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                              assign [$$138] <- [$$s.getField(3)] project: [$$130, $$138] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$138] <- [$$s.getField(3)] project: [$$130, $$138] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$130, $$s] <- tpch.supplier [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$130, $$s] <- tpch.supplier [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$128, $$125]  |PARTITIONED|
-                                          assign [$$128, $$125] <- [$$l.getField(2), $$l.getField(1)] project: [$$132, $$128, $$125] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$128, $$125] <- [$$l.getField(2), $$l.getField(1)] project: [$$132, $$128, $$125] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$132, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$132, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$131, $$132, $$l] <- tpch.lineitem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$131, $$132, $$l] <- tpch.lineitem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$135, $$134]  |PARTITIONED|
-                                  project ([$$134, $$135]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$134, $$135]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$133, $$134, $$135, $$ps] <- tpch.partsupp [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$133, $$134, $$135, $$ps] <- tpch.partsupp [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$136]  |PARTITIONED|
-                          project ([$$136]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$136]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$136, $$o] <- tpch.orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$136, $$o] <- tpch.orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$137]  |PARTITIONED|
-                  project ([$$137]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$137]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$137, $$n] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$137, $$n] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.11.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.11.plan
index e0ee9d6..5dc4e04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.11.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.11.plan
@@ -1,112 +1,112 @@
-distribute result [$$185] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$185] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 20 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 20 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$185] <- [{"$1": 10, "c_custkey": $$c_custkey, "c_name": $$c_name, "revenue": $$203, "c_acctbal": $$c_acctbal, "n_name": $$n_name, "c_address": $$c_address, "c_phone": $$c_phone, "c_comment": $$c_comment}] project: [$$185] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$185] <- [{"$1": 10, "c_custkey": $$c_custkey, "c_name": $$c_name, "revenue": $$203, "c_acctbal": $$c_acctbal, "n_name": $$n_name, "c_address": $$c_address, "c_phone": $$c_phone, "c_comment": $$c_comment}] project: [$$185] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$203(DESC) ]  |PARTITIONED|
-          limit 20 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 20 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 20) (DESC, $$203) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 20) (DESC, $$203) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 20] [$$203(DESC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   group by ([$$c_custkey := $$211; $$n_name := $$215]) decor ([$$c_name := $$212; $$c_acctbal := $$213; $$c_phone := $$214; $$c_address := $$216; $$c_comment := $$217]) {
-                            aggregate [$$203] <- [agg-global-sql-sum($$210)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$203] <- [agg-global-sql-sum($$210)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SORT_GROUP_BY[$$211, $$215]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$211, $$215]  |PARTITIONED|
                       group by ([$$211 := $$195; $$215 := $$190]) decor ([$$212 := $$187; $$213 := $$188; $$214 := $$189; $$216 := $$191; $$217 := $$192]) {
-                                aggregate [$$210] <- [agg-local-sql-sum(numeric-multiply($$208, numeric-subtract(1, $$209)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$210] <- [agg-local-sql-sum(numeric-multiply($$208, numeric-subtract(1, $$209)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SORT_GROUP_BY[$$195, $$190]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$208, $$209, $$195, $$187, $$188, $$189, $$190, $$191, $$192]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$208, $$209, $$195, $$187, $$188, $$189, $$190, $$191, $$192]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$201, $$199)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$201, $$199)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$201][$$199]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$201]  |PARTITIONED|
-                                  project ([$$208, $$209, $$195, $$187, $$188, $$189, $$191, $$192, $$201]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$208, $$209, $$195, $$187, $$188, $$189, $$191, $$192, $$201]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$198, $$196)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (eq($$198, $$196)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$196][$$198]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$196]  |PARTITIONED|
-                                          project ([$$195, $$187, $$188, $$189, $$191, $$192, $$201, $$196]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$195, $$187, $$188, $$189, $$191, $$192, $$201, $$196]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (eq($$195, $$206)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              join (eq($$195, $$206)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HYBRID_HASH_JOIN [$$195][$$206]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$195]  |PARTITIONED|
-                                                  assign [$$192, $$191, $$189, $$188, $$187, $$201] <- [$$c.getField(7), $$c.getField(2), $$c.getField(4), $$c.getField(5), $$c.getField(1), $$c.getField(3)] project: [$$195, $$187, $$188, $$189, $$191, $$192, $$201] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$192, $$191, $$189, $$188, $$187, $$201] <- [$$c.getField(7), $$c.getField(2), $$c.getField(4), $$c.getField(5), $$c.getField(1), $$c.getField(3)] project: [$$195, $$187, $$188, $$189, $$191, $$192, $$201] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$195, $$c] <- tpch.customer [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$195, $$c] <- tpch.customer [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$206]  |PARTITIONED|
-                                                  select (and(lt($$193, "1993-10-01"), ge($$193, "1993-07-01"))) project: [$$196, $$206] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  select (and(lt($$193, "1993-10-01"), ge($$193, "1993-07-01"))) project: [$$196, $$206] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STREAM_SELECT  |PARTITIONED|
-                                                    assign [$$206, $$193] <- [$$o.getField(1), $$o.getField(4)] project: [$$196, $$206, $$193] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$206, $$193] <- [$$o.getField(1), $$o.getField(4)] project: [$$196, $$206, $$193] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan []<-[$$196, $$o] <- tpch.orders [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        data-scan []<-[$$196, $$o] <- tpch.orders [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$198]  |PARTITIONED|
-                                          select (eq($$l.getField(8), "R")) project: [$$208, $$209, $$198] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          select (eq($$l.getField(8), "R")) project: [$$208, $$209, $$198] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$209, $$208] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$209, $$208] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              project ([$$198, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              project ([$$198, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$197, $$198, $$l] <- tpch.lineitem [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$197, $$198, $$l] <- tpch.lineitem [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$199]  |PARTITIONED|
-                                  assign [$$190] <- [$$n.getField(1)] project: [$$190, $$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$190] <- [$$n.getField(1)] project: [$$190, $$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$199, $$n] <- tpch.nation [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$199, $$n] <- tpch.nation [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.11.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.11.plan
index 8e75d32..a22f2ee 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.11.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.11.plan
@@ -1,90 +1,90 @@
-distribute result [$$t] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$t] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        union ($$161, $$188, $$t) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        union ($$161, $$188, $$t) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- UNION_ALL  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            union ($$223, $$237, $$161) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            union ($$223, $$237, $$161) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- UNION_ALL  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                assign [$$223] <- [{"two": $$193}] project: [$$223] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$223] <- [{"two": $$193}] project: [$$223] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    assign [$$193] <- [$$onek1.getField(2)] project: [$$193] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$193] <- [$$onek1.getField(2)] project: [$$193] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$onek1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$onek1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$197, $$onek1] <- test.onek1 condition (and(ge($$onek1.getField(2), 1), le($$onek1.getField(2), 10))) limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$197, $$onek1] <- test.onek1 condition (and(ge($$onek1.getField(2), 1), le($$onek1.getField(2), 10))) limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                assign [$$237] <- [{"two": $$194}] project: [$$237] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$237] <- [{"two": $$194}] project: [$$237] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    assign [$$194] <- [$$onek2.getField(2)] project: [$$194] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$194] <- [$$onek2.getField(2)] project: [$$194] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$onek2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$onek2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$198, $$onek2] <- test.onek2 condition (and(ge($$onek2.getField(2), 1), le($$onek2.getField(2), 100))) limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$198, $$onek2] <- test.onek2 condition (and(ge($$onek2.getField(2), 1), le($$onek2.getField(2), 100))) limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            union ($$355, $$364, $$188) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            union ($$355, $$364, $$188) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- UNION_ALL  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                assign [$$355] <- [{"two": $$195}] project: [$$355] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$355] <- [{"two": $$195}] project: [$$355] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    assign [$$195] <- [$$onek1.getField(2)] project: [$$195] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$195] <- [$$onek1.getField(2)] project: [$$195] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$onek1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$onek1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$199, $$onek1] <- test.onek1 condition (and(ge($$onek1.getField(2), 1), le($$onek1.getField(2), 1000))) limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$199, $$onek1] <- test.onek1 condition (and(ge($$onek1.getField(2), 1), le($$onek1.getField(2), 1000))) limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                assign [$$364] <- [{"two": $$196}] project: [$$364] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$364] <- [{"two": $$196}] project: [$$364] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    assign [$$196] <- [$$onek2.getField(2)] project: [$$196] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$196] <- [$$onek2.getField(2)] project: [$$196] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$onek2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$onek2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$200, $$onek2] <- test.onek2 condition (and(ge($$onek2.getField(2), 1), le($$onek2.getField(2), 10000))) limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$200, $$onek2] <- test.onek2 condition (and(ge($$onek2.getField(2), 1), le($$onek2.getField(2), 10000))) limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.9.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.9.plan
index 34e4404..d0b99bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.9.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_opt_1/union_opt_1.9.plan
@@ -1,46 +1,46 @@
-distribute result [$$t] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$t] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        union ($$52, $$58, $$t) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        union ($$52, $$58, $$t) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- UNION_ALL  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-            limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_LIMIT  |PARTITIONED|
-              assign [$$52] <- [{"two": $$107}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$52] <- [{"two": $$107}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$107] <- [$$onek1.getField(2)] project: [$$107] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$107] <- [$$onek1.getField(2)] project: [$$107] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$onek1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$onek1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$65, $$onek1] <- test.onek1 condition (gt($$onek1.getField(2), 0)) limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$65, $$onek1] <- test.onek1 condition (gt($$onek1.getField(2), 0)) limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-            limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_LIMIT  |PARTITIONED|
-              assign [$$58] <- [{"two": $$109}] project: [$$58] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$58] <- [{"two": $$109}] project: [$$58] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$109] <- [$$onek2.getField(2)] project: [$$109] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$109] <- [$$onek2.getField(2)] project: [$$109] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$onek2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$onek2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$66, $$onek2] <- test.onek2 condition (gt($$onek2.getField(2), 0)) limit 4 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$66, $$onek2] <- test.onek2 condition (gt($$onek2.getField(2), 0)) limit 4 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_type_cast/union_type_cast.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_type_cast/union_type_cast.4.plan
index 1f8d6a4..f1c5df7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_type_cast/union_type_cast.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/union/union_type_cast/union_type_cast.4.plan
@@ -1,64 +1,64 @@
-distribute result [$#1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$#1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$#1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    project ([$#1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$102(ASC) ]  |PARTITIONED|
-        order (ASC, $$102) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$102) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$102(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            union ($$64, $$140, $#1) ($$103, $$70, $$102) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            union ($$64, $$140, $#1) ($$103, $$70, $$102) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- UNION_ALL  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                union ($$139, $$141, $$64) ($$68, $$69, $$103) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                union ($$139, $$141, $$64) ($$68, $$69, $$103) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- UNION_ALL  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$139] <- [cast({"id": $$68, "no_in_response_to": object-remove($$s, "in-response-to")})] project: [$$139, $$68] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$139] <- [cast({"id": $$68, "no_in_response_to": object-remove($$s, "in-response-to")})] project: [$$139, $$68] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- REPLICATE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$68, $$s] <- TinySocial.FacebookMessages [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$68, $$s] <- TinySocial.FacebookMessages [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$141] <- [cast({"id": $$69, "user": $$t})] project: [$$141, $$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$141] <- [cast({"id": $$69, "user": $$t})] project: [$$141, $$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$69, $$t] <- TinySocial.FacebookUsers [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$69, $$t] <- TinySocial.FacebookUsers [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$140] <- [cast({"id": $$70, "no_author_id": object-remove($$s, "author-id")})] project: [$$140, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$140] <- [cast({"id": $$70, "no_author_id": object-remove($$s, "author-id")})] project: [$$140, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$70, $$s] <- [$$68, $$s] project: [$$70, $$s] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$70, $$s] <- [$$68, $$s] project: [$$70, $$s] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$68, $$s] <- TinySocial.FacebookMessages [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$68, $$s] <- TinySocial.FacebookMessages [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 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
index a5b3307..be17ba2 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,30 +1,30 @@
-distribute result [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$94] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$94] <- [{"id": $$109, "review": $$114}] project: [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$94] <- [{"id": $$109, "review": $$114}] project: [$$94] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$109) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$109) [cardinality: 0.0, doc-size: 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]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_LIMIT  |UNPARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                assign [$$109] <- [int64-default-null($$d.getField("id"))] project: [$$114, $$109] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$109] <- [int64-default-null($$d.getField("id"))] project: [$$114, $$109] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    assign [$$114] <- [string-default-null($$d.getField("review"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$114] <- [string-default-null($$d.getField("review"))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 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 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        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, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 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
index 98cefbf..5a0ae25 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,20 +1,20 @@
-distribute result [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$69] <- [{"id": int64-default-null($$d.getField("id")), "review": string-default-null($$d.getField("review"))}] project: [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$69] <- [{"id": int64-default-null($$d.getField("id")), "review": string-default-null($$d.getField("review"))}] project: [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$d] <- test.ExternalDataset limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$d] <- test.ExternalDataset limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 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
index a98cd9b..e4528c0 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,28 +1,28 @@
-distribute result [$$88] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$88] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$88] <- [{"id": $$91, "review": $$95}] project: [$$88] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$88] <- [{"id": $$91, "review": $$95}] project: [$$88] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$91) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$91) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$91(ASC)]  |UNPARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_LIMIT  |UNPARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_LIMIT  |PARTITIONED|
-                  assign [$$95] <- [$$d.getField(1)] project: [$$91, $$95] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$95] <- [$$d.getField(1)] project: [$$91, $$95] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      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]
+                      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, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 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
index e19e209..ef57399 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,28 +1,28 @@
-distribute result [$$63] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$63] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$63] <- [{"id": $$65, "review": $$69}] project: [$$63] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$63] <- [{"id": $$65, "review": $$69}] project: [$$63] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$65(ASC) ]  |PARTITIONED|
-          limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 3) (ASC, $$65) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 3) (ASC, $$65) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 3] [$$65(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$69] <- [$$d.getField(1)] project: [$$65, $$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$69] <- [$$d.getField(1)] project: [$$65, $$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$65, $$d] <- test.DatasetWithKnownField [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$65, $$d] <- test.DatasetWithKnownField [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 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
index a5c48a4..966ed6a 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,28 +1,28 @@
-distribute result [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$94] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$94] <- [{"id": $$97, "review": $$101}] project: [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$94] <- [{"id": $$97, "review": $$101}] project: [$$94] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$97) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$97) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$97(ASC)]  |UNPARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_LIMIT  |UNPARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_LIMIT  |PARTITIONED|
-                  assign [$$101] <- [$$d.getField(1)] project: [$$97, $$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$101] <- [$$d.getField(1)] project: [$$97, $$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      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]
+                      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, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 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
index 72c87e4..a88bf46 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,28 +1,28 @@
-distribute result [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$69] <- [{"id": $$71, "review": $$75}] project: [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$69] <- [{"id": $$71, "review": $$75}] project: [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$71(ASC) ]  |PARTITIONED|
-          limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 3) (ASC, $$71) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 3) (ASC, $$71) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 3] [$$71(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$75] <- [$$d.getField(1)] project: [$$71, $$75] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$75] <- [$$d.getField(1)] project: [$$71, $$75] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$71, $$d] <- test.DatasetWithKnownField [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$71, $$d] <- test.DatasetWithKnownField [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/aggregate-sql/count_dataset/count_dataset.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/aggregate-sql/count_dataset/count_dataset.1.plan
deleted file mode 100644
index d0efadf..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/aggregate-sql/count_dataset/count_dataset.1.plan
+++ /dev/null
@@ -1,26 +0,0 @@
-distribute result [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$26] <- [agg-sql-sum($$29)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- AGGREGATE  |UNPARTITIONED|
-      aggregate [$$29] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- AGGREGATE  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-          order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- STREAM_SELECT  |PARTITIONED|
-                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/aggregate/count_dataset/count_dataset.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/aggregate/count_dataset/count_dataset.1.plan
deleted file mode 100644
index cc00b25..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/aggregate/count_dataset/count_dataset.1.plan
+++ /dev/null
@@ -1,26 +0,0 @@
-distribute result [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$26] <- [agg-sum($$29)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- AGGREGATE  |UNPARTITIONED|
-      aggregate [$$29] <- [agg-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- AGGREGATE  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-          order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- STREAM_SELECT  |PARTITIONED|
-                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.3.plan
index 9d2d093..0e1cbcc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.3.plan
@@ -1,30 +1,30 @@
-distribute result [$$35] [cardinality: 961.01, op-cost: 0.0, total-cost: 136513.95]
+distribute result [$$35] [cardinality: 961.01, doc-size: 15.0, op-cost: 0.0, total-cost: 136513.95]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 961.01, op-cost: 0.0, total-cost: 136513.95]
+  exchange [cardinality: 961.01, doc-size: 15.0, op-cost: 0.0, total-cost: 136513.95]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([$$35]) [cardinality: 961.01, op-cost: 58495.07, total-cost: 136513.95]
+    distinct ([$$35]) [cardinality: 961.01, doc-size: 15.0, op-cost: 0.0, total-cost: 136513.95]
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange [cardinality: 4785.13, op-cost: 0.0, total-cost: 78018.88]
+      exchange [cardinality: 4785.13, doc-size: 15.0, op-cost: 0.0, total-cost: 78018.88]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        order (ASC, $$35) [cardinality: 4785.13, op-cost: 58495.07, total-cost: 78018.88]
+        order (ASC, $$35) [cardinality: 4785.13, doc-size: 15.0, op-cost: 0.0, total-cost: 78018.88]
         -- STABLE_SORT [$$35(ASC)]  |PARTITIONED|
-          exchange [cardinality: 4785.13, op-cost: 0.0, total-cost: 19523.81]
+          exchange [cardinality: 4785.13, doc-size: 15.0, op-cost: 0.0, total-cost: 19523.81]
           -- HASH_PARTITION_EXCHANGE [$$35]  |PARTITIONED|
-            assign [$$35] <- [{"l_linenumber": $$37, "l_partkey": $$l.getField(1), "o_custkey": $$o.getField(1)}] project: [$$35] [cardinality: 4785.13, op-cost: 0.0, total-cost: 19523.81]
+            assign [$$35] <- [{"l_linenumber": $$37, "l_partkey": $$l.getField(1), "o_custkey": $$o.getField(1)}] project: [$$35] [cardinality: 4785.13, doc-size: 15.0, op-cost: 0.0, total-cost: 19523.81]
             -- ASSIGN  |PARTITIONED|
-              select (gt($$l.getField(4), 10)) [cardinality: 4785.13, op-cost: 12018.16, total-cost: 19523.81]
+              select (gt($$l.getField(4), 10)) [cardinality: 4785.13, doc-size: 15.0, op-cost: 0.0, total-cost: 19523.81]
               -- STREAM_SELECT  |PARTITIONED|
-                project ([$$o, $$37, $$l]) [cardinality: 4779.14, op-cost: 0.0, total-cost: 6005.0]
+                project ([$$o, $$37, $$l]) [cardinality: 4779.14, doc-size: 15.0, op-cost: 0.0, total-cost: 6005.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 4779.14, op-cost: 0.0, total-cost: 6005.0]
+                  exchange [cardinality: 4779.14, doc-size: 15.0, op-cost: 0.0, total-cost: 6005.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$36, $$37, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$38, 1, $$38, true, true, true) [cardinality: 4779.14, op-cost: 6005.0, total-cost: 6005.0]
+                    unnest-map [$$36, $$37, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$38, 1, $$38, true, true, true) [cardinality: 4779.14, doc-size: 15.0, op-cost: 0.0, total-cost: 6005.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$38, $$o] <- tpch.Orders [cardinality: 1500.0, op-cost: 1500.0, total-cost: 1500.0]
+                        data-scan []<-[$$38, $$o] <- tpch.Orders [cardinality: 1500.0, doc-size: 10.0, op-cost: 1500.0, total-cost: 1500.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.4.plan
index 0babdc8..c5d57cb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.4.plan
@@ -1,30 +1,30 @@
-distribute result [$$34] [cardinality: 1400.81, op-cost: 0.0, total-cost: 166845.41]
+distribute result [$$34] [cardinality: 1400.81, doc-size: 5.0, op-cost: 0.0, total-cost: 166845.41]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1400.81, op-cost: 0.0, total-cost: 166845.41]
+  exchange [cardinality: 1400.81, doc-size: 5.0, op-cost: 0.0, total-cost: 166845.41]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([$$34]) [cardinality: 1400.81, op-cost: 73660.8, total-cost: 166845.41]
+    distinct ([$$34]) [cardinality: 1400.81, doc-size: 5.0, op-cost: 0.0, total-cost: 166845.41]
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange [cardinality: 5882.42, op-cost: 0.0, total-cost: 93184.61]
+      exchange [cardinality: 5882.42, doc-size: 5.0, op-cost: 0.0, total-cost: 93184.61]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        order (ASC, $$34) [cardinality: 5882.42, op-cost: 73660.8, total-cost: 93184.61]
+        order (ASC, $$34) [cardinality: 5882.42, doc-size: 5.0, op-cost: 0.0, total-cost: 93184.61]
         -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-          exchange [cardinality: 5882.42, op-cost: 0.0, total-cost: 19523.81]
+          exchange [cardinality: 5882.42, doc-size: 5.0, op-cost: 0.0, total-cost: 19523.81]
           -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-            assign [$$34] <- [{"l_orderkey": $$36, "o_custkey": $$o.getField(1)}] project: [$$34] [cardinality: 5882.42, op-cost: 0.0, total-cost: 19523.81]
+            assign [$$34] <- [{"l_orderkey": $$36, "o_custkey": $$o.getField(1)}] project: [$$34] [cardinality: 5882.42, doc-size: 5.0, op-cost: 0.0, total-cost: 19523.81]
             -- ASSIGN  |PARTITIONED|
-              select (gt($$l.getField(1), 5)) project: [$$o, $$36] [cardinality: 5882.42, op-cost: 12018.16, total-cost: 19523.81]
+              select (gt($$l.getField(1), 5)) project: [$$o, $$36] [cardinality: 5882.42, doc-size: 5.0, op-cost: 0.0, total-cost: 19523.81]
               -- STREAM_SELECT  |PARTITIONED|
-                project ([$$o, $$36, $$l]) [cardinality: 5875.07, op-cost: 0.0, total-cost: 6005.0]
+                project ([$$o, $$36, $$l]) [cardinality: 5875.07, doc-size: 5.0, op-cost: 0.0, total-cost: 6005.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 5875.07, op-cost: 0.0, total-cost: 6005.0]
+                  exchange [cardinality: 5875.07, doc-size: 5.0, op-cost: 0.0, total-cost: 6005.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$36, $$37, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$38, 1, $$38, true, true, true) [cardinality: 5875.07, op-cost: 6005.0, total-cost: 6005.0]
+                    unnest-map [$$36, $$37, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$38, 1, $$38, true, true, true) [cardinality: 5875.07, doc-size: 5.0, op-cost: 0.0, total-cost: 6005.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$38, $$o] <- tpch.Orders [cardinality: 1500.0, op-cost: 1500.0, total-cost: 1500.0]
+                        data-scan []<-[$$38, $$o] <- tpch.Orders [cardinality: 1500.0, doc-size: 10.0, op-cost: 1500.0, total-cost: 1500.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.5.plan
index 05c57bd..b14e74d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.5.plan
@@ -1,68 +1,68 @@
-distribute result [$$101] [cardinality: 1003.97, op-cost: 0.0, total-cost: 18052.66]
+distribute result [$$101] [cardinality: 1003.97, doc-size: 5.0, op-cost: 0.0, total-cost: 18052.66]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 18052.66]
+  exchange [cardinality: 1003.97, doc-size: 5.0, op-cost: 0.0, total-cost: 18052.66]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 1003.97, op-cost: 0.0, total-cost: 18052.66]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 1003.97, doc-size: 5.0, op-cost: 0.0, total-cost: 18052.66]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 1003.97, op-cost: 0.0, total-cost: 18052.66]
+      project ([$$111]) [cardinality: 1003.97, doc-size: 5.0, op-cost: 0.0, total-cost: 18052.66]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 18052.66]
+        exchange [cardinality: 1003.97, doc-size: 5.0, op-cost: 0.0, total-cost: 18052.66]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_partkey := $$115; $$o_orderstatus := $$116; $$c_nationkey := $$117]) decor ([]) {
-                    aggregate [$$111] <- [sql-sum-serial($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [sql-sum-serial($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 1003.97, op-cost: 6023.83, total-cost: 18052.66]
+                 } [cardinality: 1003.97, doc-size: 5.0, op-cost: 0.0, total-cost: 18052.66]
           -- EXTERNAL_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 12028.83]
+            exchange [cardinality: 1003.97, doc-size: 5.0, op-cost: 0.0, total-cost: 12028.83]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$102; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 1003.97, op-cost: 6023.83, total-cost: 12028.83]
+                     } [cardinality: 1003.97, doc-size: 5.0, op-cost: 0.0, total-cost: 12028.83]
               -- EXTERNAL_GROUP_BY[$$102, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                exchange [cardinality: 6010.65, doc-size: 5.0, op-cost: 0.0, total-cost: 6005.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$102] <- [$$l.getField(1)] project: [$$102, $$103, $$104] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                  assign [$$102] <- [$$l.getField(1)] project: [$$102, $$103, $$104] [cardinality: 6010.65, doc-size: 5.0, op-cost: 0.0, total-cost: 6005.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$103, $$104, $$l]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                    project ([$$103, $$104, $$l]) [cardinality: 6010.65, doc-size: 5.0, op-cost: 0.0, total-cost: 6005.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                      exchange [cardinality: 6010.65, doc-size: 5.0, op-cost: 0.0, total-cost: 6005.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$105, $$106, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$107, 1, $$107, true, true, true) [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
+                        unnest-map [$$105, $$106, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$107, 1, $$107, true, true, true) [cardinality: 6010.65, doc-size: 5.0, op-cost: 0.0, total-cost: 6005.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                            project ([$$103, $$107, $$104]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$103, $$107, $$104]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                join (eq($$109, $$108)) [cardinality: 1502.82, op-cost: 2101.41, total-cost: 4351.41]
+                                join (eq($$109, $$108)) [cardinality: 1502.82, doc-size: 15.0, op-cost: 2101.41, total-cost: 4351.41]
                                 -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$107, $$109] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$107, $$109] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 1500.0, op-cost: 1500.0, total-cost: 1500.0]
+                                        data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 1500.0, doc-size: 10.0, op-cost: 1500.0, total-cost: 1500.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                    assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                                        data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 5.0, op-cost: 150.0, total-cost: 150.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.6.plan
index 3d92aab..4ef29b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.6.plan
@@ -1,66 +1,66 @@
-distribute result [$$101] [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+distribute result [$$101] [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+  exchange [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+      project ([$$111]) [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+        exchange [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_linenumber := $$115; $$o_orderstatus := $$116; $$c_nationkey := $$117]) decor ([]) {
-                    aggregate [$$111] <- [sql-sum-serial($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [sql-sum-serial($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 1003.97, op-cost: 6023.83, total-cost: 34439.83]
+                 } [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
           -- EXTERNAL_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 28416.0]
+            exchange [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 28416.0]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$106; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 1003.97, op-cost: 6023.83, total-cost: 28416.0]
+                     } [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 28416.0]
               -- EXTERNAL_GROUP_BY[$$106, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 6023.83, op-cost: 0.0, total-cost: 22392.17]
+                exchange [cardinality: 6023.83, doc-size: 20.0, op-cost: 0.0, total-cost: 22392.17]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$106, $$103, $$104]) [cardinality: 6023.83, op-cost: 0.0, total-cost: 22392.17]
+                  project ([$$106, $$103, $$104]) [cardinality: 6023.83, doc-size: 20.0, op-cost: 0.0, total-cost: 22392.17]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 6023.83, op-cost: 0.0, total-cost: 22392.17]
+                    exchange [cardinality: 6023.83, doc-size: 20.0, op-cost: 0.0, total-cost: 22392.17]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      unnest-map [$$105, $$106, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$107, 1, $$107, true, true, true) [cardinality: 6023.83, op-cost: 12029.47, total-cost: 22392.17]
+                      unnest-map [$$105, $$106, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$107, 1, $$107, true, true, true) [cardinality: 6023.83, doc-size: 20.0, op-cost: 0.0, total-cost: 22392.17]
                       -- BTREE_SEARCH  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BROADCAST_EXCHANGE  |PARTITIONED|
-                          project ([$$103, $$107, $$104]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$103, $$107, $$104]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$109, $$108)) [cardinality: 1502.82, op-cost: 2101.41, total-cost: 4351.41]
+                              join (eq($$109, $$108)) [cardinality: 1502.82, doc-size: 15.0, op-cost: 2101.41, total-cost: 4351.41]
                               -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$107, $$109] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$107, $$109] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 1500.0, op-cost: 1500.0, total-cost: 1500.0]
+                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 1500.0, doc-size: 10.0, op-cost: 1500.0, total-cost: 1500.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                  assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                                      data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 5.0, op-cost: 150.0, total-cost: 150.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.7.plan
index 66a35b7..e6af8bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.7.plan
@@ -1,66 +1,66 @@
-distribute result [$$101] [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+distribute result [$$101] [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+  exchange [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+      project ([$$111]) [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 34439.83]
+        exchange [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_linenumber := $$115; $$c_nationkey := $$116; $$o_orderstatus := $$117]) decor ([]) {
-                    aggregate [$$111] <- [sql-sum-serial($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [sql-sum-serial($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 1003.97, op-cost: 6023.83, total-cost: 34439.83]
+                 } [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 34439.83]
           -- EXTERNAL_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 1003.97, op-cost: 0.0, total-cost: 28416.0]
+            exchange [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 28416.0]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$106; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 1003.97, op-cost: 6023.83, total-cost: 28416.0]
+                     } [cardinality: 1003.97, doc-size: 20.0, op-cost: 0.0, total-cost: 28416.0]
               -- EXTERNAL_GROUP_BY[$$106, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 6023.83, op-cost: 0.0, total-cost: 22392.17]
+                exchange [cardinality: 6023.83, doc-size: 20.0, op-cost: 0.0, total-cost: 22392.17]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$106, $$103, $$104]) [cardinality: 6023.83, op-cost: 0.0, total-cost: 22392.17]
+                  project ([$$106, $$103, $$104]) [cardinality: 6023.83, doc-size: 20.0, op-cost: 0.0, total-cost: 22392.17]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 6023.83, op-cost: 0.0, total-cost: 22392.17]
+                    exchange [cardinality: 6023.83, doc-size: 20.0, op-cost: 0.0, total-cost: 22392.17]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      unnest-map [$$105, $$106, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$107, 1, $$107, true, true, true) [cardinality: 6023.83, op-cost: 12029.47, total-cost: 22392.17]
+                      unnest-map [$$105, $$106, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$107, 1, $$107, true, true, true) [cardinality: 6023.83, doc-size: 20.0, op-cost: 0.0, total-cost: 22392.17]
                       -- BTREE_SEARCH  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BROADCAST_EXCHANGE  |PARTITIONED|
-                          project ([$$104, $$107, $$103]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$104, $$107, $$103]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$109, $$108)) [cardinality: 1502.82, op-cost: 2101.41, total-cost: 4351.41]
+                              join (eq($$109, $$108)) [cardinality: 1502.82, doc-size: 15.0, op-cost: 2101.41, total-cost: 4351.41]
                               -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  assign [$$104, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$104, $$107, $$109] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$104, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$104, $$107, $$109] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 1500.0, op-cost: 1500.0, total-cost: 1500.0]
+                                      data-scan []<-[$$107, $$o] <- tpch.Orders [cardinality: 1500.0, doc-size: 10.0, op-cost: 1500.0, total-cost: 1500.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                  assign [$$103] <- [$$c.getField(3)] project: [$$103, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$103] <- [$$c.getField(3)] project: [$$103, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                                      data-scan []<-[$$108, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 5.0, op-cost: 150.0, total-cost: 150.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.8.plan
index 17e8018..88c713a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.8.plan
@@ -1,108 +1,108 @@
-distribute result [$$119] [cardinality: 25.0, op-cost: 0.0, total-cost: 6972.1]
+distribute result [$$119] [cardinality: 25.0, doc-size: 45.0, op-cost: 0.0, total-cost: 6972.1]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 6972.1]
+  exchange [cardinality: 25.0, doc-size: 45.0, op-cost: 0.0, total-cost: 6972.1]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$119] <- [{"n_name": $$n_name, "revenue": $$132}] project: [$$119] [cardinality: 25.0, op-cost: 0.0, total-cost: 6972.1]
+    assign [$$119] <- [{"n_name": $$n_name, "revenue": $$132}] project: [$$119] [cardinality: 25.0, doc-size: 45.0, op-cost: 0.0, total-cost: 6972.1]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 6972.1]
+      exchange [cardinality: 25.0, doc-size: 45.0, op-cost: 0.0, total-cost: 6972.1]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$$n_name := $$142]) decor ([]) {
-                  aggregate [$$132] <- [global-sql-sum-serial($$141)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$132] <- [global-sql-sum-serial($$141)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 25.0, op-cost: 39.89, total-cost: 6972.1]
+               } [cardinality: 25.0, doc-size: 45.0, op-cost: 0.0, total-cost: 6972.1]
         -- EXTERNAL_GROUP_BY[$$142]  |PARTITIONED|
-          exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 6932.21]
+          exchange [cardinality: 25.0, doc-size: 45.0, op-cost: 0.0, total-cost: 6932.21]
           -- HASH_PARTITION_EXCHANGE [$$142]  |PARTITIONED|
             group by ([$$142 := $$120]) decor ([]) {
-                      aggregate [$$141] <- [local-sql-sum-serial(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$141] <- [local-sql-sum-serial(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 25.0, op-cost: 39.89, total-cost: 6932.21]
+                   } [cardinality: 25.0, doc-size: 45.0, op-cost: 0.0, total-cost: 6932.21]
             -- EXTERNAL_GROUP_BY[$$120]  |PARTITIONED|
-              exchange [cardinality: 39.89, op-cost: 0.0, total-cost: 6892.32]
+              exchange [cardinality: 39.89, doc-size: 45.0, op-cost: 0.0, total-cost: 6892.32]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$139, $$140, $$120]) [cardinality: 39.89, op-cost: 0.0, total-cost: 6892.32]
+                project ([$$139, $$140, $$120]) [cardinality: 39.89, doc-size: 45.0, op-cost: 0.0, total-cost: 6892.32]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 39.89, op-cost: 0.0, total-cost: 6892.32]
+                  exchange [cardinality: 39.89, doc-size: 45.0, op-cost: 0.0, total-cost: 6892.32]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (and(eq($$130, $$128), eq($$133, $$127))) [cardinality: 39.89, op-cost: 1036.42, total-cost: 6892.32]
+                    join (and(eq($$130, $$128), eq($$133, $$127))) [cardinality: 39.89, doc-size: 45.0, op-cost: 1036.42, total-cost: 6892.32]
                     -- HYBRID_HASH_JOIN [$$128, $$133][$$130, $$127]  |PARTITIONED|
-                      exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                      exchange [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        assign [$$140, $$139, $$133] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$139, $$140, $$120, $$128, $$133] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                        assign [$$140, $$139, $$133] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$139, $$140, $$120, $$128, $$133] [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$120, $$128, $$l]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                          project ([$$120, $$128, $$l]) [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                            exchange [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              unnest-map [$$125, $$126, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$124, 1, $$124, true, true, true) [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
+                              unnest-map [$$125, $$126, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$124, 1, $$124, true, true, true) [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                  project ([$$120, $$128, $$124]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$120, $$128, $$124]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$123, $$136)) [cardinality: 248.59, op-cost: 398.35, total-cost: 2821.71]
+                                      join (eq($$123, $$136)) [cardinality: 248.59, doc-size: 25.0, op-cost: 398.35, total-cost: 2821.71]
                                       -- HYBRID_HASH_JOIN [$$123][$$136]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$123]  |PARTITIONED|
-                                          project ([$$120, $$128, $$123]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$120, $$128, $$123]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (eq($$131, $$128)) [cardinality: 150.0, op-cost: 175.0, total-cost: 525.0]
+                                              join (eq($$131, $$128)) [cardinality: 150.0, doc-size: 15.0, op-cost: 175.0, total-cost: 525.0]
                                               -- HYBRID_HASH_JOIN [$$131][$$128]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$131]  |PARTITIONED|
-                                                  assign [$$131] <- [$$c.getField(3)] project: [$$123, $$131] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$131] <- [$$c.getField(3)] project: [$$123, $$131] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$123, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                                                      data-scan []<-[$$123, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 10.0, op-cost: 150.0, total-cost: 150.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$128]  |PARTITIONED|
-                                                  assign [$$120] <- [$$n.getField(1)] project: [$$120, $$128] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$120] <- [$$n.getField(1)] project: [$$120, $$128] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$128, $$n] <- tpch.Nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                                      data-scan []<-[$$128, $$n] <- tpch.Nation [cardinality: 25.0, doc-size: 5.0, op-cost: 25.0, total-cost: 25.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$136]  |PARTITIONED|
-                                          select (and(lt($$121, "1994-01-01"), ge($$121, "1993-01-01"))) project: [$$124, $$136] [cardinality: 248.35, op-cost: 0.0, total-cost: 1500.0]
+                                          select (and(lt($$121, "1994-01-01"), ge($$121, "1993-01-01"))) project: [$$124, $$136] [cardinality: 248.35, doc-size: 10.0, op-cost: 0.0, total-cost: 1500.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$136, $$121] <- [$$o.getField(1), $$o.getField(4)] project: [$$124, $$136, $$121] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$136, $$121] <- [$$o.getField(1), $$o.getField(4)] project: [$$124, $$136, $$121] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$124, $$o] <- tpch.Orders [cardinality: 1500.0, op-cost: 1500.0, total-cost: 1500.0]
+                                                data-scan []<-[$$124, $$o] <- tpch.Orders [cardinality: 1500.0, doc-size: 10.0, op-cost: 1500.0, total-cost: 1500.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange [cardinality: 10.0, op-cost: 40.0, total-cost: 50.0]
+                      exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 10.0]
                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                        assign [$$130] <- [$$s.getField(3)] project: [$$130, $$127] [cardinality: 10.0, op-cost: 0.0, total-cost: 10.0]
+                        assign [$$130] <- [$$s.getField(3)] project: [$$130, $$127] [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 10.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 10.0, op-cost: 40.0, total-cost: 50.0]
+                          exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 10.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$127, $$s] <- tpch.Supplier [cardinality: 10.0, op-cost: 10.0, total-cost: 10.0]
+                            data-scan []<-[$$127, $$s] <- tpch.Supplier [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 10.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
index 18b16fd..316bc6c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
@@ -1,42 +1,42 @@
-distribute result [$$48] [cardinality: 100.0, op-cost: 0.0, total-cost: 4495.77]
+distribute result [$$48] [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4495.77]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 4495.77]
+  exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4495.77]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 100.0, op-cost: 0.0, total-cost: 4495.77]
+    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4495.77]
     -- ASSIGN  |PARTITIONED|
-      project ([$$51]) [cardinality: 100.0, op-cost: 0.0, total-cost: 4495.77]
+      project ([$$51]) [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4495.77]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 4495.77]
+        exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4495.77]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$o_custkey := $$54]) decor ([]) {
-                    aggregate [$$51] <- [sql-sum-serial($$53)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$51] <- [sql-sum-serial($$53)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 100.0, op-cost: 1498.59, total-cost: 4495.77]
+                 } [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4495.77]
           -- EXTERNAL_GROUP_BY[$$54]  |PARTITIONED|
-            exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 2997.18]
+            exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2997.18]
             -- HASH_PARTITION_EXCHANGE [$$54]  |PARTITIONED|
               group by ([$$54 := $$49]) decor ([]) {
-                        aggregate [$$53] <- [sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$53] <- [sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 100.0, op-cost: 1498.59, total-cost: 2997.18]
+                     } [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2997.18]
               -- EXTERNAL_GROUP_BY[$$49]  |PARTITIONED|
-                exchange [cardinality: 1498.59, op-cost: 0.0, total-cost: 1498.59]
+                exchange [cardinality: 1498.59, doc-size: 0.0, op-cost: 0.0, total-cost: 1498.59]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$49] <- [$$o.getField(1)] project: [$$49] [cardinality: 1498.59, op-cost: 0.0, total-cost: 1498.59]
+                  assign [$$49] <- [$$o.getField(1)] project: [$$49] [cardinality: 1498.59, doc-size: 0.0, op-cost: 0.0, total-cost: 1498.59]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$o]) [cardinality: 1498.59, op-cost: 0.0, total-cost: 1498.59]
+                    project ([$$o]) [cardinality: 1498.59, doc-size: 0.0, op-cost: 0.0, total-cost: 1498.59]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 1498.59, op-cost: 0.0, total-cost: 1498.59]
+                      exchange [cardinality: 1498.59, doc-size: 0.0, op-cost: 0.0, total-cost: 1498.59]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) [cardinality: 1498.59, op-cost: 1498.59, total-cost: 1498.59]
+                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) [cardinality: 1498.59, doc-size: 0.0, op-cost: 0.0, total-cost: 1498.59]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$55] <- [2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$55] <- [2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
index 5c735b9..d725fcf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
@@ -1,42 +1,42 @@
-distribute result [$$48] [cardinality: 1495.77, op-cost: 0.0, total-cost: 4487.31]
+distribute result [$$48] [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 4487.31]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 4487.31]
+  exchange [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 4487.31]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 1495.77, op-cost: 0.0, total-cost: 4487.31]
+    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 4487.31]
     -- ASSIGN  |PARTITIONED|
-      project ([$$51]) [cardinality: 1495.77, op-cost: 0.0, total-cost: 4487.31]
+      project ([$$51]) [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 4487.31]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 4487.31]
+        exchange [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 4487.31]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$o_orderdate := $$54]) decor ([]) {
-                    aggregate [$$51] <- [sql-sum-serial($$53)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$51] <- [sql-sum-serial($$53)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 1495.77, op-cost: 1495.77, total-cost: 4487.31]
+                 } [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 4487.31]
           -- EXTERNAL_GROUP_BY[$$54]  |PARTITIONED|
-            exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 2991.54]
+            exchange [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 2991.54]
             -- HASH_PARTITION_EXCHANGE [$$54]  |PARTITIONED|
               group by ([$$54 := $$49]) decor ([]) {
-                        aggregate [$$53] <- [sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$53] <- [sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 1495.77, op-cost: 1495.77, total-cost: 2991.54]
+                     } [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 2991.54]
               -- EXTERNAL_GROUP_BY[$$49]  |PARTITIONED|
-                exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 1495.77]
+                exchange [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 1495.77]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$49] <- [$$o.getField(4)] project: [$$49] [cardinality: 1495.77, op-cost: 0.0, total-cost: 1495.77]
+                  assign [$$49] <- [$$o.getField(4)] project: [$$49] [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 1495.77]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$o]) [cardinality: 1495.77, op-cost: 0.0, total-cost: 1495.77]
+                    project ([$$o]) [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 1495.77]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 1495.77]
+                      exchange [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 1495.77]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) [cardinality: 1495.77, op-cost: 1495.77, total-cost: 1495.77]
+                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) [cardinality: 1495.77, doc-size: 0.0, op-cost: 0.0, total-cost: 1495.77]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$55] <- [5] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$55] <- [5] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
index cdcaa28..125fec0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
@@ -1,40 +1,40 @@
-distribute result [$$51] [cardinality: 1298.0, op-cost: 0.0, total-cost: 15506.8]
+distribute result [$$51] [cardinality: 1298.0, doc-size: 0.0, op-cost: 0.0, total-cost: 15506.8]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1298.0, op-cost: 0.0, total-cost: 15506.8]
+  exchange [cardinality: 1298.0, doc-size: 0.0, op-cost: 0.0, total-cost: 15506.8]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 1298.0, op-cost: 0.0, total-cost: 15506.8]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 1298.0, doc-size: 0.0, op-cost: 0.0, total-cost: 15506.8]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 1298.0, op-cost: 0.0, total-cost: 15506.8]
+      project ([$$55]) [cardinality: 1298.0, doc-size: 0.0, op-cost: 0.0, total-cost: 15506.8]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 1298.0, op-cost: 0.0, total-cost: 15506.8]
+        exchange [cardinality: 1298.0, doc-size: 0.0, op-cost: 0.0, total-cost: 15506.8]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_orderkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [sql-sum-serial($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [sql-sum-serial($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 1298.0, op-cost: 4750.9, total-cost: 15506.8]
+                 } [cardinality: 1298.0, doc-size: 0.0, op-cost: 0.0, total-cost: 15506.8]
           -- EXTERNAL_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 1298.0, op-cost: 0.0, total-cost: 10755.9]
+            exchange [cardinality: 1298.0, doc-size: 0.0, op-cost: 0.0, total-cost: 10755.9]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$53]) decor ([]) {
-                        aggregate [$$58] <- [sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 1298.0, op-cost: 4750.9, total-cost: 10755.9]
+                     } [cardinality: 1298.0, doc-size: 0.0, op-cost: 0.0, total-cost: 10755.9]
               -- EXTERNAL_GROUP_BY[$$53]  |PARTITIONED|
-                exchange [cardinality: 4750.9, op-cost: 0.0, total-cost: 6005.0]
+                exchange [cardinality: 4750.9, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  select (and(gt($$l.getField(4), 10), gt($$l.getField(1), 1))) project: [$$53] [cardinality: 4750.9, op-cost: 0.0, total-cost: 6005.0]
+                  select (and(gt($$l.getField(4), 10), gt($$l.getField(1), 1))) project: [$$53] [cardinality: 4750.9, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$53, $$l]) [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+                    project ([$$53, $$l]) [cardinality: 6005.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+                      exchange [cardinality: 6005.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem [cardinality: 6005.0, op-cost: 6005.0, total-cost: 6005.0]
+                        data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem [cardinality: 6005.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
index 61cde6a..3abeddd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
@@ -1,38 +1,38 @@
-distribute result [$$51] [cardinality: 1543.0, op-cost: 0.0, total-cost: 13427.92]
+distribute result [$$51] [cardinality: 1543.0, doc-size: 0.0, op-cost: 0.0, total-cost: 13427.92]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1543.0, op-cost: 0.0, total-cost: 13427.92]
+  exchange [cardinality: 1543.0, doc-size: 0.0, op-cost: 0.0, total-cost: 13427.92]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 1543.0, op-cost: 0.0, total-cost: 13427.92]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 1543.0, doc-size: 0.0, op-cost: 0.0, total-cost: 13427.92]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 1543.0, op-cost: 0.0, total-cost: 13427.92]
+      project ([$$55]) [cardinality: 1543.0, doc-size: 0.0, op-cost: 0.0, total-cost: 13427.92]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 1543.0, op-cost: 0.0, total-cost: 13427.92]
+        exchange [cardinality: 1543.0, doc-size: 0.0, op-cost: 0.0, total-cost: 13427.92]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_orderkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [sql-sum-serial($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [sql-sum-serial($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 1543.0, op-cost: 3711.46, total-cost: 13427.92]
+                 } [cardinality: 1543.0, doc-size: 0.0, op-cost: 0.0, total-cost: 13427.92]
           -- EXTERNAL_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 1543.0, op-cost: 0.0, total-cost: 9716.46]
+            exchange [cardinality: 1543.0, doc-size: 0.0, op-cost: 0.0, total-cost: 9716.46]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$53]) decor ([]) {
-                        aggregate [$$58] <- [sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 1543.0, op-cost: 3711.46, total-cost: 9716.46]
+                     } [cardinality: 1543.0, doc-size: 0.0, op-cost: 0.0, total-cost: 9716.46]
               -- EXTERNAL_GROUP_BY[$$53]  |PARTITIONED|
-                exchange [cardinality: 3711.46, op-cost: 0.0, total-cost: 6005.0]
+                exchange [cardinality: 3711.46, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  select (and(le($$54, 4), gt($$l.getField(4), 10))) project: [$$53] [cardinality: 3711.46, op-cost: 0.0, total-cost: 6005.0]
+                  select (and(le($$54, 4), gt($$l.getField(4), 10))) project: [$$53] [cardinality: 3711.46, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+                    exchange [cardinality: 6005.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem [cardinality: 6005.0, op-cost: 6005.0, total-cost: 6005.0]
+                      data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem [cardinality: 6005.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6005.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
index 6aff7f1..b58d08d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
@@ -1,42 +1,42 @@
-distribute result [$$51] [cardinality: 191.0, op-cost: 0.0, total-cost: 3965.67]
+distribute result [$$51] [cardinality: 191.0, doc-size: 0.0, op-cost: 0.0, total-cost: 3965.67]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 191.0, op-cost: 0.0, total-cost: 3965.67]
+  exchange [cardinality: 191.0, doc-size: 0.0, op-cost: 0.0, total-cost: 3965.67]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 191.0, op-cost: 0.0, total-cost: 3965.67]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 191.0, doc-size: 0.0, op-cost: 0.0, total-cost: 3965.67]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 191.0, op-cost: 0.0, total-cost: 3965.67]
+      project ([$$55]) [cardinality: 191.0, doc-size: 0.0, op-cost: 0.0, total-cost: 3965.67]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 191.0, op-cost: 0.0, total-cost: 3965.67]
+        exchange [cardinality: 191.0, doc-size: 0.0, op-cost: 0.0, total-cost: 3965.67]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_partkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [sql-sum-serial($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [sql-sum-serial($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 191.0, op-cost: 1321.89, total-cost: 3965.67]
+                 } [cardinality: 191.0, doc-size: 0.0, op-cost: 0.0, total-cost: 3965.67]
           -- EXTERNAL_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 191.0, op-cost: 0.0, total-cost: 2643.78]
+            exchange [cardinality: 191.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2643.78]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$52]) decor ([]) {
-                        aggregate [$$58] <- [sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 191.0, op-cost: 1321.89, total-cost: 2643.78]
+                     } [cardinality: 191.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2643.78]
               -- EXTERNAL_GROUP_BY[$$52]  |PARTITIONED|
-                exchange [cardinality: 1321.89, op-cost: 0.0, total-cost: 1321.89]
+                exchange [cardinality: 1321.89, doc-size: 0.0, op-cost: 0.0, total-cost: 1321.89]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  select (and(gt($$53, 1), gt($$54, 4))) project: [$$52] [cardinality: 1321.89, op-cost: 0.0, total-cost: 1321.89]
+                  select (and(gt($$53, 1), gt($$54, 4))) project: [$$52] [cardinality: 1321.89, doc-size: 0.0, op-cost: 0.0, total-cost: 1321.89]
                   -- STREAM_SELECT  |PARTITIONED|
-                    assign [$$52] <- [$$l.getField(1)] project: [$$53, $$54, $$52] [cardinality: 1321.89, op-cost: 0.0, total-cost: 1321.89]
+                    assign [$$52] <- [$$l.getField(1)] project: [$$53, $$54, $$52] [cardinality: 1321.89, doc-size: 0.0, op-cost: 0.0, total-cost: 1321.89]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 1321.89, op-cost: 0.0, total-cost: 1321.89]
+                      exchange [cardinality: 1321.89, doc-size: 0.0, op-cost: 0.0, total-cost: 1321.89]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$53, $$54, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", false, false, 2, $$60, $$61, 0, true, true, false) [cardinality: 1321.89, op-cost: 1321.89, total-cost: 1321.89]
+                        unnest-map [$$53, $$54, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", false, false, 2, $$60, $$61, 0, true, true, false) [cardinality: 1321.89, doc-size: 0.0, op-cost: 0.0, total-cost: 1321.89]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$60, $$61] <- [1, 4] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$60, $$61] <- [1, 4] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.007.plan
index bbaca68..adb5bac 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.007.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$d] [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+    project ([$$d]) [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+        order (ASC, $$20) [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(gt($$19, "1"), lt($$19, "3"))) project: [$$d, $$20] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+            select (and(gt($$19, "1"), lt($$19, "3"))) project: [$$d, $$20] [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$d.getField("a")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              assign [$$19] <- [$$d.getField("a")] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$20, $$d] <- test.ColumnDataset filter on: and(gt($$d.getField("a"), "1"), lt($$d.getField("a"), "3")) range-filter on: and(gt($$d.getField("a"), "1"), lt($$d.getField("a"), "3")) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                  data-scan []<-[$$20, $$d] <- test.ColumnDataset filter on: and(gt($$d.getField("a"), "1"), lt($$d.getField("a"), "3")) range-filter on: and(gt($$d.getField("a"), "1"), lt($$d.getField("a"), "3")) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.009.plan
index b9c50d6..0dd3d57 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.009.plan
@@ -1,24 +1,24 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+        order (ASC, $$20) [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(gt($$19, 1), lt($$19, 3))) project: [$$d, $$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+            select (and(gt($$19, 1), lt($$19, 3))) project: [$$d, $$20] [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$19] <- [$$d.getField("a")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              assign [$$19] <- [$$d.getField("a")] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$20, $$d] <- test.ColumnDataset filter on: and(gt($$d.getField("a"), 1), lt($$d.getField("a"), 3)) range-filter on: and(gt($$d.getField("a"), 1), lt($$d.getField("a"), 3)) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                  data-scan []<-[$$20, $$d] <- test.ColumnDataset filter on: and(gt($$d.getField("a"), 1), lt($$d.getField("a"), 3)) range-filter on: and(gt($$d.getField("a"), 1), lt($$d.getField("a"), 3)) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.011.plan
index cead9bc..3cf9c6a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.011.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$d] [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+    project ([$$d]) [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+        order (ASC, $$28) [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              project ([$$28, $$d, $$26]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (lt($$a, "100")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (lt($$a, "100")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                       } [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), "100") range-filter on: lt(scan-collection($$d.getField("array")), "100") [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), "100") range-filter on: lt(scan-collection($$d.getField("array")), "100") [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.013.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.013.plan
index 766000b..7a1e8b3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.013.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.013.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+distribute result [$$d] [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+  exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+    project ([$$d]) [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+      exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 3.0, op-cost: 4.75, total-cost: 10.75]
+        order (ASC, $$28) [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              project ([$$28, $$d, $$26]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (lt($$a, 100)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (lt($$a, 100)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                       } [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), 100) range-filter on: lt(scan-collection($$d.getField("array")), 100) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), 100) range-filter on: lt(scan-collection($$d.getField("array")), 100) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.015.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.015.plan
index ac393cb..aae4438 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.015.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.015.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$d] [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+    project ([$$d]) [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+        order (ASC, $$28) [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              project ([$$28, $$d, $$26]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$a, 100)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$a, 100)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                       } [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: eq(scan-collection($$d.getField("array")), 100) range-filter on: eq(scan-collection($$d.getField("array")), 100) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: eq(scan-collection($$d.getField("array")), 100) range-filter on: eq(scan-collection($$d.getField("array")), 100) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.017.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.017.plan
index 4cd5706..afc236a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.017.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.017.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 4.0, op-cost: 0.0, total-cost: 14.0]
+distribute result [$$d] [cardinality: 4.0, doc-size: 106.0, op-cost: 0.0, total-cost: 14.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 14.0]
+  exchange [cardinality: 4.0, doc-size: 106.0, op-cost: 0.0, total-cost: 14.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 4.0, op-cost: 0.0, total-cost: 14.0]
+    project ([$$d]) [cardinality: 4.0, doc-size: 106.0, op-cost: 0.0, total-cost: 14.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 14.0]
+      exchange [cardinality: 4.0, doc-size: 106.0, op-cost: 0.0, total-cost: 14.0]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 4.0, op-cost: 8.0, total-cost: 14.0]
+        order (ASC, $$28) [cardinality: 4.0, doc-size: 106.0, op-cost: 0.0, total-cost: 14.0]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 4.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 4.0, op-cost: 0.0, total-cost: 6.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 4.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              project ([$$28, $$d, $$26]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (lt($$a, 100.1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (lt($$a, 100.1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$a <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                       } [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), 100.1) range-filter on: lt(scan-collection($$d.getField("array")), 100.1) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset filter on: lt(scan-collection($$d.getField("array")), 100.1) range-filter on: lt(scan-collection($$d.getField("array")), 100.1) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.019.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.019.plan
index 81f715c..969a72b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.019.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.019.plan
@@ -1,26 +1,26 @@
-distribute result [$$item] [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+distribute result [$$item] [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+  exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$item]) [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+    project ([$$item]) [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+      exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
       -- SORT_MERGE_EXCHANGE [$$29(ASC), $$item(ASC) ]  |PARTITIONED|
-        order (ASC, $$29) (ASC, $$item) [cardinality: 3.0, op-cost: 4.75, total-cost: 10.75]
+        order (ASC, $$29) (ASC, $$item) [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
         -- STABLE_SORT [$$29(ASC), $$item(ASC)]  |PARTITIONED|
-          exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (and(gt($$item, 60), lt($$item, 100))) [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
+            select (and(gt($$item, 60), lt($$item, 100))) [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$item <- scan-collection($$30) project: [$$29, $$item] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              unnest $$item <- scan-collection($$30) project: [$$29, $$item] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$30] <- [$$d.getField("array")] project: [$$29, $$30] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                assign [$$30] <- [$$d.getField("array")] project: [$$29, $$30] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$29, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: and(gt(scan-collection($$d.getField("array")), 60), lt(scan-collection($$d.getField("array")), 100)) range-filter on: and(gt(scan-collection($$d.getField("array")), 60), lt(scan-collection($$d.getField("array")), 100)) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                    data-scan []<-[$$29, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: and(gt(scan-collection($$d.getField("array")), 60), lt(scan-collection($$d.getField("array")), 100)) range-filter on: and(gt(scan-collection($$d.getField("array")), 60), lt(scan-collection($$d.getField("array")), 100)) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.021.plan
index df8c5bf..cf05d23 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.021.plan
@@ -1,26 +1,26 @@
-distribute result [$$item] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$item] [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$item]) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+    project ([$$item]) [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
       -- SORT_MERGE_EXCHANGE [$$27(ASC), $$item(ASC) ]  |PARTITIONED|
-        order (ASC, $$27) (ASC, $$item) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+        order (ASC, $$27) (ASC, $$item) [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
         -- STABLE_SORT [$$27(ASC), $$item(ASC)]  |PARTITIONED|
-          exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$item, 100)) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+            select (eq($$item, 100)) [cardinality: 1.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$item <- scan-collection($$28) project: [$$27, $$item] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              unnest $$item <- scan-collection($$28) project: [$$27, $$item] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$28] <- [$$d.getField("array")] project: [$$27, $$28] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                assign [$$28] <- [$$d.getField("array")] project: [$$27, $$28] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: eq(scan-collection($$d.getField("array")), 100) range-filter on: eq(scan-collection($$d.getField("array")), 100) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                    data-scan []<-[$$27, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: eq(scan-collection($$d.getField("array")), 100) range-filter on: eq(scan-collection($$d.getField("array")), 100) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.023.plan
index ae4a534..4a409ec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.023.plan
@@ -1,26 +1,26 @@
-distribute result [$$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$item] [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$item]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+    project ([$$item]) [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
       -- SORT_MERGE_EXCHANGE [$$27(ASC), $$item(ASC) ]  |PARTITIONED|
-        order (ASC, $$27) (ASC, $$item) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+        order (ASC, $$27) (ASC, $$item) [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
         -- STABLE_SORT [$$27(ASC), $$item(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (gt($$item, 10000)) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
+            select (gt($$item, 10000)) [cardinality: 0.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$item <- scan-collection($$28) project: [$$27, $$item] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              unnest $$item <- scan-collection($$28) project: [$$27, $$item] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$28] <- [$$d.getField("array")] project: [$$27, $$28] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                assign [$$28] <- [$$d.getField("array")] project: [$$27, $$28] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: gt(scan-collection($$d.getField("array")), 10000) range-filter on: gt(scan-collection($$d.getField("array")), 10000) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                    data-scan []<-[$$27, $$d] <- test.ColumnDataset project ({array:[any]}) filter on: gt(scan-collection($$d.getField("array")), 10000) range-filter on: gt(scan-collection($$d.getField("array")), 10000) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
index 19dacd2..9a3841e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
@@ -1,30 +1,30 @@
-distribute result [$$31] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+distribute result [$$31] [cardinality: 2.0, doc-size: 12.0, op-cost: 0.0, total-cost: 8.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+  exchange [cardinality: 2.0, doc-size: 12.0, op-cost: 0.0, total-cost: 8.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"a": $$34, "item": $$item}] project: [$$31] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+    assign [$$31] <- [{"a": $$34, "item": $$item}] project: [$$31] [cardinality: 2.0, doc-size: 12.0, op-cost: 0.0, total-cost: 8.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$34, $$item]) [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+      project ([$$34, $$item]) [cardinality: 2.0, doc-size: 12.0, op-cost: 0.0, total-cost: 8.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+        exchange [cardinality: 2.0, doc-size: 12.0, op-cost: 0.0, total-cost: 8.0]
         -- SORT_MERGE_EXCHANGE [$$35(ASC), $$34(ASC), $$item(ASC) ]  |PARTITIONED|
-          order (ASC, $$35) (ASC, $$34) (ASC, $$item) [cardinality: 2.0, op-cost: 2.0, total-cost: 8.0]
+          order (ASC, $$35) (ASC, $$34) (ASC, $$item) [cardinality: 2.0, doc-size: 12.0, op-cost: 0.0, total-cost: 8.0]
           -- STABLE_SORT [$$35(ASC), $$34(ASC), $$item(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+            exchange [cardinality: 2.0, doc-size: 12.0, op-cost: 0.0, total-cost: 6.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (gt($$item, 10)) [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+              select (gt($$item, 10)) [cardinality: 2.0, doc-size: 12.0, op-cost: 0.0, total-cost: 6.0]
               -- STREAM_SELECT  |PARTITIONED|
-                unnest $$item <- scan-collection($$36) project: [$$35, $$34, $$item] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                unnest $$item <- scan-collection($$36) project: [$$35, $$34, $$item] [cardinality: 6.0, doc-size: 12.0, op-cost: 0.0, total-cost: 6.0]
                 -- UNNEST  |PARTITIONED|
-                  select (eq($$34, "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (eq($$34, "1")) [cardinality: 6.0, doc-size: 12.0, op-cost: 0.0, total-cost: 6.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    assign [$$34, $$36] <- [$$d.getField("a"), $$d.getField("array")] project: [$$35, $$34, $$36] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    assign [$$34, $$36] <- [$$d.getField("a"), $$d.getField("array")] project: [$$35, $$34, $$36] [cardinality: 6.0, doc-size: 12.0, op-cost: 0.0, total-cost: 6.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                      exchange [cardinality: 6.0, doc-size: 12.0, op-cost: 0.0, total-cost: 6.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$35, $$d] <- test.ColumnDataset project ({a:any,array:[any]}) filter on: and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10)) range-filter on: and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10)) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                        data-scan []<-[$$35, $$d] <- test.ColumnDataset project ({a:any,array:[any]}) filter on: and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10)) range-filter on: and(eq($$d.getField("a"), "1"), gt(scan-collection($$d.getField("array")), 10)) [cardinality: 6.0, doc-size: 12.0, op-cost: 0.0, total-cost: 6.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.028.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.028.plan
index e3a9af1..f1d6d6c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.028.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.028.plan
@@ -1,22 +1,22 @@
-distribute result [$$d] [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+distribute result [$$d] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 21.51]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+  exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 21.51]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+    project ([$$d]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 21.51]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+      exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 21.51]
       -- SORT_MERGE_EXCHANGE [$$16(ASC) ]  |PARTITIONED|
-        order (ASC, $$16) [cardinality: 6.0, op-cost: 15.51, total-cost: 21.51]
+        order (ASC, $$16) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 21.51]
         -- STABLE_SORT [$$16(ASC)]  |PARTITIONED|
-          exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (neq(count($$d.getField("array")), 0)) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+            select (neq(count($$d.getField("array")), 0)) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$16, $$d] <- test.ColumnDataset [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                data-scan []<-[$$16, $$d] <- test.ColumnDataset [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.006.plan
index f4faeeb..6104d34 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.006.plan
@@ -1,28 +1,28 @@
-distribute result [$$47] [cardinality: 99.0, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$47] [cardinality: 99.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 99.0, op-cost: 0.0, total-cost: 30.0]
+  exchange [cardinality: 99.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$47] <- [{"$1": $$49}] project: [$$47] [cardinality: 99.0, op-cost: 0.0, total-cost: 30.0]
+    assign [$$47] <- [{"$1": $$49}] project: [$$47] [cardinality: 99.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$49] <- [agg-sql-sum($$51)] [cardinality: 99.0, op-cost: 0.0, total-cost: 30.0]
+      aggregate [$$49] <- [agg-sql-sum($$51)] [cardinality: 99.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 99.0, op-cost: 0.0, total-cost: 30.0]
+        exchange [cardinality: 99.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 99.0, op-cost: 0.0, total-cost: 30.0]
+          aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 99.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
           -- AGGREGATE  |PARTITIONED|
-            select (gt($$D, " ")) [cardinality: 99.0, op-cost: 0.0, total-cost: 30.0]
+            select (gt($$D, " ")) [cardinality: 99.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$D <- scan-collection($$50) project: [$$D] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+              unnest $$D <- scan-collection($$50) project: [$$D] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$50] <- [$$C.getField("dates")] project: [$$50] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                assign [$$50] <- [$$C.getField("dates")] project: [$$50] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                  project ([$$C]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                    exchange [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$48, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: gt(scan-collection($$C.getField("dates")), " ") range-filter on: gt(scan-collection($$C.getField("dates")), " ") [cardinality: 30.0, op-cost: 30.0, total-cost: 30.0]
+                      data-scan []<-[$$48, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: gt(scan-collection($$C.getField("dates")), " ") range-filter on: gt(scan-collection($$C.getField("dates")), " ") [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.102.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.102.plan
index c4eddc4..74b57e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.102.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.102.plan
@@ -1,28 +1,28 @@
-distribute result [$$48] [cardinality: 6.0, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$48] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 30.0]
+  exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$48] <- [{"$1": $$50}] project: [$$48] [cardinality: 6.0, op-cost: 0.0, total-cost: 30.0]
+    assign [$$48] <- [{"$1": $$50}] project: [$$48] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 6.0, op-cost: 0.0, total-cost: 30.0]
+      aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 30.0]
+        exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 6.0, op-cost: 0.0, total-cost: 30.0]
+          aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
           -- AGGREGATE  |PARTITIONED|
-            select (eq(substring($$D, 0, 4), "2011")) [cardinality: 6.0, op-cost: 0.0, total-cost: 30.0]
+            select (eq(substring($$D, 0, 4), "2011")) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$D <- scan-collection($$51) project: [$$D] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+              unnest $$D <- scan-collection($$51) project: [$$D] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$51] <- [$$C.getField("dates")] project: [$$51] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                assign [$$51] <- [$$C.getField("dates")] project: [$$51] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                  project ([$$C]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                    exchange [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$49, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011") [cardinality: 30.0, op-cost: 30.0, total-cost: 30.0]
+                      data-scan []<-[$$49, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011") [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.105.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.105.plan
index 786d9da..3935bd8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.105.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.105.plan
@@ -1,30 +1,30 @@
-distribute result [$$51] [cardinality: 20.0, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$51] [cardinality: 20.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 30.0]
+  exchange [cardinality: 20.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$51] <- [{"$1": $$54}] project: [$$51] [cardinality: 20.0, op-cost: 0.0, total-cost: 30.0]
+    assign [$$51] <- [{"$1": $$54}] project: [$$51] [cardinality: 20.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$54] <- [agg-sql-sum($$57)] [cardinality: 20.0, op-cost: 0.0, total-cost: 30.0]
+      aggregate [$$54] <- [agg-sql-sum($$57)] [cardinality: 20.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 30.0]
+        exchange [cardinality: 20.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 20.0, op-cost: 0.0, total-cost: 30.0]
+          aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 20.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or(eq($$58, "2011"), eq($$58, "2016"))) [cardinality: 20.0, op-cost: 0.0, total-cost: 30.0]
+            select (or(eq($$58, "2011"), eq($$58, "2016"))) [cardinality: 20.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$58] <- [substring($$D, 0, 4)] project: [$$58] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+              assign [$$58] <- [substring($$D, 0, 4)] project: [$$58] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
               -- ASSIGN  |PARTITIONED|
-                unnest $$D <- scan-collection($$55) project: [$$D] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                unnest $$D <- scan-collection($$55) project: [$$D] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                 -- UNNEST  |PARTITIONED|
-                  assign [$$55] <- [$$C.getField("dates")] project: [$$55] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                  assign [$$55] <- [$$C.getField("dates")] project: [$$55] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                    project ([$$C]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                      exchange [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$53, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")) [cardinality: 30.0, op-cost: 30.0, total-cost: 30.0]
+                        data-scan []<-[$$53, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.108.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.108.plan
index edb62b1..42ef238 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.108.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.108.plan
@@ -1,41 +1,41 @@
-distribute result [$$52] [cardinality: 11.0, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$52] [cardinality: 11.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 11.0, op-cost: 0.0, total-cost: 30.0]
+  exchange [cardinality: 11.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$52] <- [{"$1": $$55}] project: [$$52] [cardinality: 11.0, op-cost: 0.0, total-cost: 30.0]
+    assign [$$52] <- [{"$1": $$55}] project: [$$52] [cardinality: 11.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 11.0, op-cost: 0.0, total-cost: 30.0]
+      aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 11.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 11.0, op-cost: 0.0, total-cost: 30.0]
+        exchange [cardinality: 11.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 11.0, op-cost: 0.0, total-cost: 30.0]
+          aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 11.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
           -- AGGREGATE  |PARTITIONED|
-            select ($$45) [cardinality: 11.0, op-cost: 0.0, total-cost: 30.0]
+            select ($$45) [cardinality: 11.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$45]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+              project ([$$45]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$45] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$45] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (or(eq($$59, "2011"), eq($$59, "2016"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (or(eq($$59, "2011"), eq($$59, "2016"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$59] <- [substring($$D, 0, 4)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$59] <- [substring($$D, 0, 4)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$D <- scan-collection($$56) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$D <- scan-collection($$56) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                       } [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$56] <- [$$C.getField("dates")] project: [$$56] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                  assign [$$56] <- [$$C.getField("dates")] project: [$$56] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                    project ([$$C]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                      exchange [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$54, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")) [cardinality: 30.0, op-cost: 30.0, total-cost: 30.0]
+                        data-scan []<-[$$54, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016")) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan
index 2f5f950..8781335 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/004/004.113.plan
@@ -1,32 +1,32 @@
-distribute result [$$54] [cardinality: 7.0, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$54] [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 30.0]
+  exchange [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$54] <- [{"$1": $$57}] project: [$$54] [cardinality: 7.0, op-cost: 0.0, total-cost: 30.0]
+    assign [$$54] <- [{"$1": $$57}] project: [$$54] [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$57] <- [agg-sql-sum($$61)] [cardinality: 7.0, op-cost: 0.0, total-cost: 30.0]
+      aggregate [$$57] <- [agg-sql-sum($$61)] [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 30.0]
+        exchange [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$61] <- [agg-sql-count(1)] [cardinality: 7.0, op-cost: 0.0, total-cost: 30.0]
+          aggregate [$$61] <- [agg-sql-count(1)] [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or(eq($$62, "2011"), eq($$62, "2016"))) [cardinality: 7.0, op-cost: 0.0, total-cost: 30.0]
+            select (or(eq($$62, "2011"), eq($$62, "2016"))) [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$62] <- [substring($$D, 0, 4)] project: [$$62] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+              assign [$$62] <- [substring($$D, 0, 4)] project: [$$62] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
               -- ASSIGN  |PARTITIONED|
-                unnest $$D <- scan-collection($$59) project: [$$D] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                unnest $$D <- scan-collection($$59) project: [$$D] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                 -- UNNEST  |PARTITIONED|
-                  select (starts-with($$C.getField("business_id"), "-0")) project: [$$59] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (starts-with($$C.getField("business_id"), "-0")) project: [$$59] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    assign [$$59] <- [$$C.getField("dates")] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                    assign [$$59] <- [$$C.getField("dates")] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                      project ([$$C]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                        exchange [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$56, $$C] <- TestYelp.YelpCheckin project ({dates:[any],business_id:any}) filter on: and(starts-with($$C.getField("business_id"), "-0"), or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016"))) [cardinality: 30.0, op-cost: 30.0, total-cost: 30.0]
+                          data-scan []<-[$$56, $$C] <- TestYelp.YelpCheckin project ({dates:[any],business_id:any}) filter on: and(starts-with($$C.getField("business_id"), "-0"), or(eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011"), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2016"))) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.008.plan
index 06b8a09..09403ef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.008.plan
@@ -1,28 +1,28 @@
-distribute result [$$48] [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$48] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$48] <- [{"$1": $$50}] project: [$$48] [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
+    assign [$$48] <- [{"$1": $$50}] project: [$$48] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
+      aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
+        exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
+          aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
           -- AGGREGATE  |PARTITIONED|
-            select (gt(numeric-add($$D, 1), 2018)) [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
+            select (gt(numeric-add($$D, 1), 2018)) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$D <- scan-collection($$51) project: [$$D] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+              unnest $$D <- scan-collection($$51) project: [$$D] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$51] <- [$$C.getField("dates")] project: [$$51] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                assign [$$51] <- [$$C.getField("dates")] project: [$$51] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                  project ([$$C]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                    exchange [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$49, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: gt(numeric-add(scan-collection($$C.getField("dates")), 1), 2018) [cardinality: 30.0, op-cost: 30.0, total-cost: 30.0]
+                      data-scan []<-[$$49, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: gt(numeric-add(scan-collection($$C.getField("dates")), 1), 2018) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.011.plan
index e88ae19..dcf990e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.011.plan
@@ -1,28 +1,28 @@
-distribute result [$$51] [cardinality: 8.0, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$51] [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 30.0]
+  exchange [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$51] <- [{"$1": $$53}] project: [$$51] [cardinality: 8.0, op-cost: 0.0, total-cost: 30.0]
+    assign [$$51] <- [{"$1": $$53}] project: [$$51] [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$53] <- [agg-sql-sum($$55)] [cardinality: 8.0, op-cost: 0.0, total-cost: 30.0]
+      aggregate [$$53] <- [agg-sql-sum($$55)] [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 30.0]
+        exchange [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$55] <- [agg-sql-count(1)] [cardinality: 8.0, op-cost: 0.0, total-cost: 30.0]
+          aggregate [$$55] <- [agg-sql-count(1)] [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or(gt(numeric-add($$D, 1), 2018), eq(substring($$D, 0, 4), "2011"))) [cardinality: 8.0, op-cost: 0.0, total-cost: 30.0]
+            select (or(gt(numeric-add($$D, 1), 2018), eq(substring($$D, 0, 4), "2011"))) [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
             -- STREAM_SELECT  |PARTITIONED|
-              unnest $$D <- scan-collection($$54) project: [$$D] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+              unnest $$D <- scan-collection($$54) project: [$$D] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$54] <- [$$C.getField("dates")] project: [$$54] [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                assign [$$54] <- [$$C.getField("dates")] project: [$$54] [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                  project ([$$C]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                    exchange [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$52, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(gt(numeric-add(scan-collection($$C.getField("dates")), 1), 2018), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011")) [cardinality: 30.0, op-cost: 30.0, total-cost: 30.0]
+                      data-scan []<-[$$52, $$C] <- TestYelp.YelpCheckin project ({dates:[any]}) filter on: or(gt(numeric-add(scan-collection($$C.getField("dates")), 1), 2018), eq(substring(scan-collection($$C.getField("dates")), 0, 4), "2011")) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/006/006.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/006/006.010.plan
index a6ad325..ed14662 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/006/006.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/006/006.010.plan
@@ -1,41 +1,41 @@
-distribute result [$$51] [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
+distribute result [$$51] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
+  exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$51] <- [{"$1": $$53}] project: [$$51] [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
+    assign [$$51] <- [{"$1": $$53}] project: [$$51] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$53] <- [agg-sql-sum($$57)] [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
+      aggregate [$$53] <- [agg-sql-sum($$57)] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
+        exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
+          aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
           -- AGGREGATE  |PARTITIONED|
-            select ($$44) [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
+            select ($$44) [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$44]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+              project ([$$44]) [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$55, array: [ 5.1 ])) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$55, array: [ 5.1 ])) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$55] <- [$$point.getField("lon")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$55] <- [$$point.getField("lon")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$point <- scan-collection($$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$point <- scan-collection($$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+                       } [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$54] <- [$$c.getField("geo").getField("coordinates")] project: [$$54] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+                  assign [$$54] <- [$$c.getField("geo").getField("coordinates")] project: [$$54] [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$c]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+                    project ([$$c]) [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+                      exchange [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$52, $$c] <- test.ColumnDataset project ({geo:{coordinates:[{lon:any}]}}) [cardinality: 8.0, op-cost: 8.0, total-cost: 8.0]
+                        data-scan []<-[$$52, $$c] <- test.ColumnDataset project ({geo:{coordinates:[{lon:any}]}}) [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/007/007.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/007/007.010.plan
index 7b50535..5702626 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/007/007.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/007/007.010.plan
@@ -1,24 +1,24 @@
-distribute result [$$37] [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$37] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
+  exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$37] <- [{"$1": $$39}] project: [$$37] [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
+    assign [$$37] <- [{"$1": $$39}] project: [$$37] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$39] <- [agg-sql-sum($$42)] [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
+      aggregate [$$39] <- [agg-sql-sum($$42)] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
+        exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$42] <- [agg-sql-count(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
+          aggregate [$$42] <- [agg-sql-count(1)] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
           -- AGGREGATE  |PARTITIONED|
-            select (array-contains($$C.getField("checkin_times").getField("dates"), "2018-05-25")) [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
+            select (array-contains($$C.getField("checkin_times").getField("dates"), "2018-05-25")) [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+              project ([$$C]) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
+                exchange [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$38, $$C] <- TestYelp.YelpCheckin project ({checkin_times:{dates:any}}) [cardinality: 30.0, op-cost: 30.0, total-cost: 30.0]
+                  data-scan []<-[$$38, $$C] <- TestYelp.YelpCheckin project ({checkin_times:{dates:any}}) [cardinality: 30.0, doc-size: 0.0, op-cost: 0.0, total-cost: 30.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.101.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.101.plan
index 7650418..a92924d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.101.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.101.plan
@@ -1,35 +1,35 @@
-distribute result [$$d] [cardinality: 5.0, op-cost: 0.0, total-cost: 17.61]
+distribute result [$$d] [cardinality: 5.0, doc-size: 106.0, op-cost: 0.0, total-cost: 17.61]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 17.61]
+  exchange [cardinality: 5.0, doc-size: 106.0, op-cost: 0.0, total-cost: 17.61]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 5.0, op-cost: 0.0, total-cost: 17.61]
+    project ([$$d]) [cardinality: 5.0, doc-size: 106.0, op-cost: 0.0, total-cost: 17.61]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 17.61]
+      exchange [cardinality: 5.0, doc-size: 106.0, op-cost: 0.0, total-cost: 17.61]
       -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-        order (ASC, $$20) [cardinality: 5.0, op-cost: 11.61, total-cost: 17.61]
+        order (ASC, $$20) [cardinality: 5.0, doc-size: 106.0, op-cost: 0.0, total-cost: 17.61]
         -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-          exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 5.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$18) project: [$$d, $$20] [cardinality: 5.0, op-cost: 0.0, total-cost: 6.0]
+            select ($$18) project: [$$d, $$20] [cardinality: 5.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$20, $$d, $$18]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              project ([$$20, $$d, $$18]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (not(if-missing-or-null(neq($$21, "1"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (not(if-missing-or-null(neq($$21, "1"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                       } [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$21] <- [$$d.getField("a")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  assign [$$21] <- [$$d.getField("a")] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$20, $$d] <- test.ColumnDataset [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                      data-scan []<-[$$20, $$d] <- test.ColumnDataset [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.201.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.201.plan
deleted file mode 100644
index d4ae3fa..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.201.plan
+++ /dev/null
@@ -1,53 +0,0 @@
-distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$24(ASC) ]  |PARTITIONED|
-        select ($$18) project: [$$d, $$24] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- STREAM_SELECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$24 := $$20]) decor ([$$d]) {
-                      aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- AGGREGATE  |LOCAL|
-                        select (not(is-missing($$23))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- STREAM_SELECT  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- PRE_CLUSTERED_GROUP_BY[$$20]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-                    project ([$$d, $$23, $$20]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        left outer join (not(if-missing-or-null(neq($$21, $#1), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_LOOP  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$21] <- [$$d.getField("a")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                            -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$20, $$d] <- test.ColumnDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                                -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                          -- BROADCAST_EXCHANGE  |PARTITIONED|
-                            assign [$$23] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                            -- ASSIGN  |UNPARTITIONED|
-                              unnest $#1 <- scan-collection(array: [ "1", "2", "3" ]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                              -- UNNEST  |UNPARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                                -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.301.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.301.plan
index 681ae89..09dfdfb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.301.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.301.plan
@@ -1,37 +1,37 @@
-distribute result [$$d] [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+distribute result [$$d] [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+  exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$d]) [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+    project ([$$d]) [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
+      exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
       -- SORT_MERGE_EXCHANGE [$$28(ASC) ]  |PARTITIONED|
-        order (ASC, $$28) [cardinality: 3.0, op-cost: 4.75, total-cost: 10.75]
+        order (ASC, $$28) [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 10.75]
         -- STABLE_SORT [$$28(ASC)]  |PARTITIONED|
-          exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$26) project: [$$d, $$28] [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
+            select ($$26) project: [$$d, $$28] [cardinality: 3.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$28, $$d, $$26]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              project ([$$28, $$d, $$26]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$26] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$26] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (not(if-missing-or-null(ge($$x, 100), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (not(if-missing-or-null(ge($$x, 100), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              unnest $$x <- scan-collection($$29) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$x <- scan-collection($$29) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                       } [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- SUBPLAN  |PARTITIONED|
-                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  assign [$$29] <- [$$d.getField("array")] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$28, $$d] <- test.ColumnDataset [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                      data-scan []<-[$$28, $$d] <- test.ColumnDataset [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.012.plan
index 8cbbb97..a6ca76b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.012.plan
@@ -1,37 +1,37 @@
-distribute result [$$53] [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$53] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+    aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
         -- AGGREGATE  |PARTITIONED|
-          select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+          select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
           -- STREAM_SELECT  |PARTITIONED|
             subplan {
-                      aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        select (eq($$55, "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (eq($$55, "1")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |LOCAL|
-                          assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |LOCAL|
-                            unnest $$ao <- scan-collection($$57) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            unnest $$ao <- scan-collection($$57) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- UNNEST  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                   } [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
             -- SUBPLAN  |PARTITIONED|
-              assign [$$57] <- [$$p.getField("arrayOrObject")] project: [$$57] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              assign [$$57] <- [$$p.getField("arrayOrObject")] project: [$$57] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$p]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                project ([$$p]) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$52, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$p.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                    data-scan []<-[$$52, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$p.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.022.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.022.plan
index 75b8051..94070f1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.022.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.022.plan
@@ -1,37 +1,37 @@
-distribute result [$$53] [cardinality: 4.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$53] [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 4.0, op-cost: 0.0, total-cost: 6.0]
+    aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 4.0, op-cost: 0.0, total-cost: 6.0]
+        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
         -- AGGREGATE  |PARTITIONED|
-          select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 4.0, op-cost: 0.0, total-cost: 6.0]
+          select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
           -- STREAM_SELECT  |PARTITIONED|
             subplan {
-                      aggregate [$$44] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$44] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        select (not(if-missing-or-null(le($$55, "2"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (not(if-missing-or-null(le($$55, "2"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |LOCAL|
-                          assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |LOCAL|
-                            unnest $$ao <- scan-collection($$57) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            unnest $$ao <- scan-collection($$57) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- UNNEST  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                   } [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
             -- SUBPLAN  |PARTITIONED|
-              assign [$$57] <- [$$p.getField("arrayOrObject")] project: [$$57] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              assign [$$57] <- [$$p.getField("arrayOrObject")] project: [$$57] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$p]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                project ([$$p]) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$52, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                    data-scan []<-[$$52, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.032.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.032.plan
index e73a0ff..b3bfd72 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.032.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.032.plan
@@ -1,68 +1,68 @@
-distribute result [$$70] [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
+distribute result [$$70] [cardinality: 2.1, doc-size: 0.0, op-cost: 0.0, total-cost: 20.41]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
+  exchange [cardinality: 2.1, doc-size: 0.0, op-cost: 0.0, total-cost: 20.41]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
+    aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 2.1, doc-size: 0.0, op-cost: 0.0, total-cost: 20.41]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
+      exchange [cardinality: 2.1, doc-size: 0.0, op-cost: 0.0, total-cost: 20.41]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
+        aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 2.1, doc-size: 0.0, op-cost: 0.0, total-cost: 20.41]
         -- AGGREGATE  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
+          exchange [cardinality: 2.1, doc-size: 0.0, op-cost: 0.0, total-cost: 20.41]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (true) [cardinality: 2.1, op-cost: 4.41, total-cost: 20.41]
+            join (true) [cardinality: 2.1, doc-size: 0.0, op-cost: 4.41, total-cost: 20.41]
             -- NESTED_LOOP  |PARTITIONED|
-              exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+              exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (eq($$p.getField("arrayOrObject").getField("text"), "7")) project: [] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+                select (eq($$p.getField("arrayOrObject").getField("text"), "7")) project: [] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$p] <- [$$b2] project: [$$p] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  assign [$$p] <- [$$b2] project: [$$p] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                      replicate [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                        exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$b2]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                          project ([$$b2]) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                            exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                              data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 10.0]
+              exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
               -- BROADCAST_EXCHANGE  |PARTITIONED|
-                select (neq($$69, 0)) project: [] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+                select (neq($$69, 0)) project: [] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                 -- STREAM_SELECT  |UNPARTITIONED|
-                  aggregate [$$69] <- [agg-sum($$75)] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  aggregate [$$69] <- [agg-sum($$75)] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                   -- AGGREGATE  |UNPARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                    exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                     -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                      aggregate [$$75] <- [agg-count(1)] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                      aggregate [$$75] <- [agg-count(1)] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                       -- AGGREGATE  |PARTITIONED|
-                        select (eq($$ao.getField("text"), "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (eq($$ao.getField("text"), "1")) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          unnest $$ao <- scan-collection($$72) project: [$$ao] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                          unnest $$ao <- scan-collection($$72) project: [$$ao] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                           -- UNNEST  |PARTITIONED|
-                            assign [$$72] <- [$$b2.getField("arrayOrObject")] project: [$$72] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                            assign [$$72] <- [$$b2.getField("arrayOrObject")] project: [$$72] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                              exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                replicate [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                                replicate [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                                 -- REPLICATE  |PARTITIONED|
-                                  exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                                  exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    project ([$$b2]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                                    project ([$$b2]) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                                      exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                                        data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) range-filter on: or(eq($$b2.getField("arrayOrObject").getField("text"), "7"), eq(scan-collection($$b2.getField("arrayOrObject")).getField("text"), "1")) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.042.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.042.plan
index ccdbba0..ef307c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.042.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.042.plan
@@ -1,66 +1,66 @@
-distribute result [$$70] [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
+distribute result [$$70] [cardinality: 6.0, doc-size: 11.0, op-cost: 0.0, total-cost: 28.6]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
+  exchange [cardinality: 6.0, doc-size: 11.0, op-cost: 0.0, total-cost: 28.6]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
+    aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 6.0, doc-size: 11.0, op-cost: 0.0, total-cost: 28.6]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
+      exchange [cardinality: 6.0, doc-size: 11.0, op-cost: 0.0, total-cost: 28.6]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
+        aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 6.0, doc-size: 11.0, op-cost: 0.0, total-cost: 28.6]
         -- AGGREGATE  |PARTITIONED|
-          exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
+          exchange [cardinality: 6.0, doc-size: 11.0, op-cost: 0.0, total-cost: 28.6]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (or(eq($$71, "7"), neq($$69, 0))) [cardinality: 6.0, op-cost: 12.6, total-cost: 28.6]
+            join (or(eq($$71, "7"), neq($$69, 0))) [cardinality: 6.0, doc-size: 11.0, op-cost: 12.6, total-cost: 28.6]
             -- NESTED_LOOP  |PARTITIONED|
-              exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              exchange [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$71] <- [$$p.getField("arrayOrObject").getField("text")] project: [$$71] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                assign [$$71] <- [$$p.getField("arrayOrObject").getField("text")] project: [$$71] [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$p] <- [$$b2] project: [$$p] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  assign [$$p] <- [$$b2] project: [$$p] [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    exchange [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                      replicate [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                       -- REPLICATE  |PARTITIONED|
-                        exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                        exchange [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$b2]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                          project ([$$b2]) [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                            exchange [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                              data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 10.0]
+              exchange [cardinality: 1.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
               -- BROADCAST_EXCHANGE  |PARTITIONED|
-                aggregate [$$69] <- [agg-sum($$75)] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+                aggregate [$$69] <- [agg-sum($$75)] [cardinality: 1.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                 -- AGGREGATE  |UNPARTITIONED|
-                  exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 10.0]
+                  exchange [cardinality: 1.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                   -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                    aggregate [$$75] <- [agg-count(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+                    aggregate [$$75] <- [agg-count(1)] [cardinality: 1.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                     -- AGGREGATE  |PARTITIONED|
-                      select (eq($$ao.getField("text"), "1")) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+                      select (eq($$ao.getField("text"), "1")) [cardinality: 1.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        unnest $$ao <- scan-collection($$72) project: [$$ao] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                        unnest $$ao <- scan-collection($$72) project: [$$ao] [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                         -- UNNEST  |PARTITIONED|
-                          assign [$$72] <- [$$b2.getField("arrayOrObject")] project: [$$72] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                          assign [$$72] <- [$$b2.getField("arrayOrObject")] project: [$$72] [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                            exchange [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              replicate [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                              replicate [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                               -- REPLICATE  |PARTITIONED|
-                                exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                                exchange [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$b2]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                                  project ([$$b2]) [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                                    exchange [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                                      data-scan []<-[$$68, $$b2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 6.0, doc-size: 9.0, op-cost: 0.0, total-cost: 6.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.052.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.052.plan
index 48c5799..b2620f3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.052.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.052.plan
@@ -1,37 +1,37 @@
-distribute result [$$67] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+distribute result [$$67] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+  exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$67] <- [agg-global-sql-sum($$71)] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+    aggregate [$$67] <- [agg-global-sql-sum($$71)] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$71] <- [agg-local-sql-sum($$70)] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+        aggregate [$$71] <- [agg-local-sql-sum($$70)] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
         -- AGGREGATE  |PARTITIONED|
-          project ([$$70]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+          project ([$$70]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
           -- STREAM_PROJECT  |PARTITIONED|
             subplan {
-                      aggregate [$$70] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$70] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        select (and(ge($$65, "1"), le($$65, "2"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (and(ge($$65, "1"), le($$65, "2"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_SELECT  |LOCAL|
-                          assign [$$65] <- [$$ao.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$65] <- [$$ao.getField("text")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |LOCAL|
-                            unnest $$ao <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            unnest $$ao <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- UNNEST  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                   } [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
             -- SUBPLAN  |PARTITIONED|
-              assign [$$68] <- [$$p.getField("arrayOrObject")] project: [$$68] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              assign [$$68] <- [$$p.getField("arrayOrObject")] project: [$$68] [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$p]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                project ([$$p]) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  exchange [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$66, $$p] <- test.ColumnDataset project ({arrayOrObject:[{text:any}]}) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                    data-scan []<-[$$66, $$p] <- test.ColumnDataset project ({arrayOrObject:[{text:any}]}) [cardinality: 6.0, doc-size: 106.0, op-cost: 0.0, total-cost: 6.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.062.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.062.plan
index a745248..8bc38c6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.062.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.062.plan
@@ -1,60 +1,60 @@
-distribute result [$$63] [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
+distribute result [$$63] [cardinality: 2.1, doc-size: 30.0, op-cost: 0.0, total-cost: 20.41]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
+  exchange [cardinality: 2.1, doc-size: 30.0, op-cost: 0.0, total-cost: 20.41]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    join (true) [cardinality: 2.1, op-cost: 4.41, total-cost: 20.41]
+    join (true) [cardinality: 2.1, doc-size: 30.0, op-cost: 4.41, total-cost: 20.41]
     -- NESTED_LOOP  |PARTITIONED|
-      exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+      exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        select (eq($$p.getField("arrayOrObject").getField("text"), "7")) project: [] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+        select (eq($$p.getField("arrayOrObject").getField("text"), "7")) project: [] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
         -- STREAM_SELECT  |PARTITIONED|
-          assign [$$p] <- [$$p2] project: [$$p] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+          assign [$$p] <- [$$p2] project: [$$p] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
           -- ASSIGN  |PARTITIONED|
-            exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+            exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              replicate [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              replicate [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
               -- REPLICATE  |PARTITIONED|
-                exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$p2]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  project ([$$p2]) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                    exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$62, $$p2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) range-filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                      data-scan []<-[$$62, $$p2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) range-filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-      exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 10.0]
+      exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
       -- BROADCAST_EXCHANGE  |PARTITIONED|
-        aggregate [$$63] <- [agg-sql-sum($$67)] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+        aggregate [$$63] <- [agg-sql-sum($$67)] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
         -- AGGREGATE  |UNPARTITIONED|
-          exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 10.0]
+          exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
           -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-            aggregate [$$67] <- [agg-sql-count(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+            aggregate [$$67] <- [agg-sql-count(1)] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
             -- AGGREGATE  |PARTITIONED|
-              select (and(ge($$60, "1"), le($$60, "2"))) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
+              select (and(ge($$60, "1"), le($$60, "2"))) [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$60] <- [$$ao.getField("text")] project: [$$60] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                assign [$$60] <- [$$ao.getField("text")] project: [$$60] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                 -- ASSIGN  |PARTITIONED|
-                  unnest $$ao <- scan-collection($$65) project: [$$ao] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                  unnest $$ao <- scan-collection($$65) project: [$$ao] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                   -- UNNEST  |PARTITIONED|
-                    assign [$$65] <- [$$p2.getField("arrayOrObject")] project: [$$65] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                    assign [$$65] <- [$$p2.getField("arrayOrObject")] project: [$$65] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                     -- ASSIGN  |PARTITIONED|
-                      exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                      exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        replicate [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                        replicate [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                         -- REPLICATE  |PARTITIONED|
-                          exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                          exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$p2]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+                            project ([$$p2]) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 6.0, op-cost: 4.0, total-cost: 10.0]
+                              exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$62, $$p2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) range-filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                                data-scan []<-[$$62, $$p2] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) range-filter on: or(eq($$p2.getField("arrayOrObject").getField("text"), "7"), and(ge(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "1"), le(scan-collection($$p2.getField("arrayOrObject")).getField("text"), "2"))) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
index b6cb8d9..5796b1b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
@@ -1,24 +1,24 @@
-distribute result [$$18] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+distribute result [$$18] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"display_url": $$22}] project: [$$18] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+    assign [$$18] <- [{"display_url": $$22}] project: [$$18] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$22]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+      project ([$$22]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+        exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
         -- SORT_MERGE_EXCHANGE [$$20(ASC) ]  |PARTITIONED|
-          order (ASC, $$20) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+          order (ASC, $$20) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
           -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$22] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url")] project: [$$22, $$20] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              assign [$$22] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url")] project: [$$22, $$20] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$20, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                  data-scan []<-[$$20, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
index 574b5e4..ac32530 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
@@ -1,28 +1,28 @@
-distribute result [$$22] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$22] [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$22] <- [{"display_url": $$27}] project: [$$22] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$22] <- [{"display_url": $$27}] project: [$$22] [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$27]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      project ([$$27]) [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
         -- SORT_MERGE_EXCHANGE [$$25(ASC) ]  |PARTITIONED|
-          order (ASC, $$25) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          order (ASC, $$25) [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
           -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-            exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$27] <- [array-star($$24).getField("display_url")] project: [$$27, $$25] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+              assign [$$27] <- [array-star($$24).getField("display_url")] project: [$$27, $$25] [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
               -- ASSIGN  |PARTITIONED|
-                select (not(is-missing($$24))) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+                select (not(is-missing($$24))) [cardinality: 1.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$24] <- [$$p.getField("entities").getField("urls")] project: [$$25, $$24] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  assign [$$24] <- [$$p.getField("entities").getField("urls")] project: [$$25, $$24] [cardinality: 2.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    exchange [cardinality: 2.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                      data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, doc-size: 22.0, op-cost: 0.0, total-cost: 2.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
index ddb4708..707cc0c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
@@ -1,26 +1,26 @@
-distribute result [$$28] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$28] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] project: [$$28] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] project: [$$28] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$urls]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+      project ([$$urls]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- SORT_MERGE_EXCHANGE [$$30(ASC) ]  |PARTITIONED|
-          order (ASC, $$30) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+          order (ASC, $$30) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- STABLE_SORT [$$30(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest $$urls <- scan-collection($$31) project: [$$urls, $$30] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              unnest $$urls <- scan-collection($$31) project: [$$urls, $$30] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- UNNEST  |PARTITIONED|
-                assign [$$31] <- [$$p.getField("entities").getField("urls")] project: [$$30, $$31] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                assign [$$31] <- [$$p.getField("entities").getField("urls")] project: [$$30, $$31] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$30, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                    data-scan []<-[$$30, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
index ad119ad..bcac67e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
@@ -1,39 +1,39 @@
-distribute result [$$50] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$50] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$50] <- [agg-sql-sum($$54)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+    aggregate [$$50] <- [agg-sql-sum($$54)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+      exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$54] <- [agg-sql-count(1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+        aggregate [$$54] <- [agg-sql-count(1)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- AGGREGATE  |PARTITIONED|
-          select ($$42) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+          select ($$42) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- STREAM_SELECT  |PARTITIONED|
-            project ([$$42]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            project ([$$42]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- STREAM_PROJECT  |PARTITIONED|
               subplan {
-                        aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          select (not(if-missing-or-null(eq($$52, "string"), false))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (not(if-missing-or-null(eq($$52, "string"), false))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |LOCAL|
-                            assign [$$52] <- [$$ht.getField("display_url")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$52] <- [$$ht.getField("display_url")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |LOCAL|
-                              unnest $$ht <- scan-collection($$51) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest $$ht <- scan-collection($$51) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- UNNEST  |LOCAL|
-                                nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                     } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- SUBPLAN  |PARTITIONED|
-                assign [$$51] <- [$$p.getField("entities").getField("urls")] project: [$$51] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                assign [$$51] <- [$$p.getField("entities").getField("urls")] project: [$$51] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$p]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  project ([$$p]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$49, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                      data-scan []<-[$$49, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
index 1f0567b..c95f6b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
@@ -1,24 +1,24 @@
-distribute result [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+distribute result [$$19] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [get-item(get-item(get-item($$25.getField("coordinates"), 0), 0), 0)] project: [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+    assign [$$19] <- [get-item(get-item(get-item($$25.getField("coordinates"), 0), 0), 0)] project: [$$19] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$25]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+      project ([$$25]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+        exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
         -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-          order (ASC, $$21) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+          order (ASC, $$21) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
           -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$25] <- [$$p.getField("place").getField("bounding_box")] project: [$$25, $$21] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              assign [$$25] <- [$$p.getField("place").getField("bounding_box")] project: [$$25, $$21] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ASSIGN  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$21, $$p] <- test.ColumnDataset project ({place:{bounding_box:{coordinates:[[[any]]]}}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                  data-scan []<-[$$21, $$p] <- test.ColumnDataset project ({place:{bounding_box:{coordinates:[[[any]]]}}}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.004.plan
index 8e95b0b..0f153fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.004.plan
@@ -1,18 +1,18 @@
-distribute result [$$p] [cardinality: 7.0, op-cost: 0.0, total-cost: 26.65]
+distribute result [$$p] [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 26.65]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 26.65]
+  exchange [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 26.65]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$p]) [cardinality: 7.0, op-cost: 0.0, total-cost: 26.65]
+    project ([$$p]) [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 26.65]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 26.65]
+      exchange [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 26.65]
       -- SORT_MERGE_EXCHANGE [$$14(ASC) ]  |PARTITIONED|
-        order (ASC, $$14) [cardinality: 7.0, op-cost: 19.65, total-cost: 26.65]
+        order (ASC, $$14) [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 26.65]
         -- STABLE_SORT [$$14(ASC)]  |PARTITIONED|
-          exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 7.0]
+          exchange [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 7.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$14, $$p] <- test.ColumnDataset1 [cardinality: 7.0, op-cost: 7.0, total-cost: 7.0]
+            data-scan []<-[$$14, $$p] <- test.ColumnDataset1 [cardinality: 7.0, doc-size: 0.0, op-cost: 0.0, total-cost: 7.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.006.plan
index 3d196fc..75cc1c8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.006.plan
@@ -1,38 +1,38 @@
-distribute result [$$30] [cardinality: 7.0, op-cost: 0.0, total-cost: 61.65]
+distribute result [$$30] [cardinality: 7.0, doc-size: 69.0, op-cost: 0.0, total-cost: 61.65]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 61.65]
+  exchange [cardinality: 7.0, doc-size: 69.0, op-cost: 0.0, total-cost: 61.65]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [{"p1": $$p1, "id": $$34}] project: [$$30] [cardinality: 7.0, op-cost: 0.0, total-cost: 61.65]
+    assign [$$30] <- [{"p1": $$p1, "id": $$34}] project: [$$30] [cardinality: 7.0, doc-size: 69.0, op-cost: 0.0, total-cost: 61.65]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 61.65]
+      exchange [cardinality: 7.0, doc-size: 69.0, op-cost: 0.0, total-cost: 61.65]
       -- SORT_MERGE_EXCHANGE [$$34(ASC) ]  |PARTITIONED|
-        order (ASC, $$34) [cardinality: 7.0, op-cost: 19.65, total-cost: 61.65]
+        order (ASC, $$34) [cardinality: 7.0, doc-size: 69.0, op-cost: 0.0, total-cost: 61.65]
         -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-          exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 42.0]
+          exchange [cardinality: 7.0, doc-size: 69.0, op-cost: 0.0, total-cost: 42.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$p1, $$34]) [cardinality: 7.0, op-cost: 0.0, total-cost: 42.0]
+            project ([$$p1, $$34]) [cardinality: 7.0, doc-size: 69.0, op-cost: 0.0, total-cost: 42.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 7.0, op-cost: 0.0, total-cost: 42.0]
+              exchange [cardinality: 7.0, doc-size: 69.0, op-cost: 0.0, total-cost: 42.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$33, $$34)) [cardinality: 7.0, op-cost: 14.0, total-cost: 42.0]
+                join (eq($$33, $$34)) [cardinality: 7.0, doc-size: 69.0, op-cost: 14.0, total-cost: 42.0]
                 -- HYBRID_HASH_JOIN [$$33][$$34]  |PARTITIONED|
-                  exchange [cardinality: 7.0, op-cost: 7.0, total-cost: 14.0]
+                  exchange [cardinality: 7.0, doc-size: 60.0, op-cost: 0.0, total-cost: 7.0]
                   -- HASH_PARTITION_EXCHANGE [$$33]  |PARTITIONED|
-                    data-scan []<-[$$33, $$p1] <- test.ColumnDataset1 [cardinality: 7.0, op-cost: 7.0, total-cost: 7.0]
+                    data-scan []<-[$$33, $$p1] <- test.ColumnDataset1 [cardinality: 7.0, doc-size: 60.0, op-cost: 0.0, total-cost: 7.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 7.0, op-cost: 7.0, total-cost: 14.0]
+                  exchange [cardinality: 7.0, doc-size: 9.0, op-cost: 0.0, total-cost: 7.0]
                   -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                    project ([$$34]) [cardinality: 7.0, op-cost: 0.0, total-cost: 7.0]
+                    project ([$$34]) [cardinality: 7.0, doc-size: 9.0, op-cost: 0.0, total-cost: 7.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 7.0, op-cost: 7.0, total-cost: 14.0]
+                      exchange [cardinality: 7.0, doc-size: 9.0, op-cost: 0.0, total-cost: 7.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$34, $$p2] <- test.ColumnDataset2 project ({}) [cardinality: 7.0, op-cost: 7.0, total-cost: 7.0]
+                        data-scan []<-[$$34, $$p2] <- test.ColumnDataset2 project ({}) [cardinality: 7.0, doc-size: 9.0, op-cost: 0.0, total-cost: 7.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.008.plan
index 373f85d..c02e079 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.008.plan
@@ -1,44 +1,44 @@
-distribute result [$$31] [cardinality: 2.1, op-cost: 0.0, total-cost: 47.25]
+distribute result [$$31] [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 47.25]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 47.25]
+  exchange [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 47.25]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"age": $$38, "name": $$39}] project: [$$31] [cardinality: 2.1, op-cost: 0.0, total-cost: 47.25]
+    assign [$$31] <- [{"age": $$38, "name": $$39}] project: [$$31] [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 47.25]
     -- ASSIGN  |PARTITIONED|
-      project ([$$38, $$39]) [cardinality: 2.1, op-cost: 0.0, total-cost: 47.25]
+      project ([$$38, $$39]) [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 47.25]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 47.25]
+        exchange [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 47.25]
         -- SORT_MERGE_EXCHANGE [$$34(ASC) ]  |PARTITIONED|
-          order (ASC, $$34) [cardinality: 2.1, op-cost: 2.25, total-cost: 47.25]
+          order (ASC, $$34) [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 47.25]
           -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 45.0]
+            exchange [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 45.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$38, $$39, $$34]) [cardinality: 2.1, op-cost: 0.0, total-cost: 45.0]
+              project ([$$38, $$39, $$34]) [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 45.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 45.0]
+                exchange [cardinality: 2.1, doc-size: 33.5, op-cost: 0.0, total-cost: 45.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$33, $$34)) [cardinality: 2.1, op-cost: 15.0, total-cost: 45.0]
+                  join (eq($$33, $$34)) [cardinality: 2.1, doc-size: 33.5, op-cost: 15.0, total-cost: 45.0]
                   -- HYBRID_HASH_JOIN [$$34][$$33]  |PARTITIONED|
-                    exchange [cardinality: 8.0, op-cost: 8.0, total-cost: 16.0]
+                    exchange [cardinality: 8.0, doc-size: 15.5, op-cost: 0.0, total-cost: 8.0]
                     -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                      assign [$$39] <- [$$p2.getField("name")] project: [$$39, $$34] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+                      assign [$$39] <- [$$p2.getField("name")] project: [$$39, $$34] [cardinality: 8.0, doc-size: 15.5, op-cost: 0.0, total-cost: 8.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 8.0, op-cost: 8.0, total-cost: 16.0]
+                        exchange [cardinality: 8.0, doc-size: 15.5, op-cost: 0.0, total-cost: 8.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$34, $$p2] <- test.ColumnDataset3 project ({name:any}) [cardinality: 8.0, op-cost: 8.0, total-cost: 8.0]
+                          data-scan []<-[$$34, $$p2] <- test.ColumnDataset3 project ({name:any}) [cardinality: 8.0, doc-size: 15.5, op-cost: 0.0, total-cost: 8.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 7.0, op-cost: 7.0, total-cost: 14.0]
+                    exchange [cardinality: 7.0, doc-size: 18.0, op-cost: 0.0, total-cost: 7.0]
                     -- HASH_PARTITION_EXCHANGE [$$33]  |PARTITIONED|
-                      assign [$$38] <- [$$p1.getField("age")] project: [$$38, $$33] [cardinality: 7.0, op-cost: 0.0, total-cost: 7.0]
+                      assign [$$38] <- [$$p1.getField("age")] project: [$$38, $$33] [cardinality: 7.0, doc-size: 18.0, op-cost: 0.0, total-cost: 7.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 7.0, op-cost: 7.0, total-cost: 14.0]
+                        exchange [cardinality: 7.0, doc-size: 18.0, op-cost: 0.0, total-cost: 7.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$33, $$p1] <- test.ColumnDataset1 project ({age:any}) [cardinality: 7.0, op-cost: 7.0, total-cost: 7.0]
+                          data-scan []<-[$$33, $$p1] <- test.ColumnDataset1 project ({age:any}) [cardinality: 7.0, doc-size: 18.0, op-cost: 0.0, total-cost: 7.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
index 82b6d69..f91f0d0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
@@ -1,22 +1,22 @@
-distribute result [$$18] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+distribute result [$$18] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"id": $$20.getField("id"), "name": $$20.getField("name")}] project: [$$18] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+    assign [$$18] <- [{"id": $$20.getField("id"), "name": $$20.getField("name")}] project: [$$18] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$20] <- [$$p.getField("user")] project: [$$20] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+      assign [$$20] <- [$$p.getField("user")] project: [$$20] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
       -- ASSIGN  |PARTITIONED|
-        project ([$$p]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+        project ([$$p]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+          exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
           -- SORT_MERGE_EXCHANGE [$$21(ASC) ]  |PARTITIONED|
-            order (ASC, $$21) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+            order (ASC, $$21) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
             -- STABLE_SORT [$$21(ASC)]  |PARTITIONED|
-              exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$21, $$p] <- test.ColumnDataset4 project ({user:{name:any,id:any}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                data-scan []<-[$$21, $$p] <- test.ColumnDataset4 project ({user:{name:any,id:any}}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
index 46ba8c3..1c38344 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
@@ -1,18 +1,18 @@
-distribute result [$$34] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$34] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$34] <- [agg-sql-sum($$35)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+    aggregate [$$34] <- [agg-sql-sum($$35)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- AGGREGATE  |UNPARTITIONED|
-      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+      exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        aggregate [$$35] <- [agg-sql-count(1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+        aggregate [$$35] <- [agg-sql-count(1)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- AGGREGATE  |PARTITIONED|
-          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+          exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$33, $$p] <- test.ColumnDataset4 project ({}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+            data-scan []<-[$$33, $$p] <- test.ColumnDataset4 project ({}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/heterogeneous-access-pushdown/heterogeneous-access-pushdown.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/heterogeneous-access-pushdown/heterogeneous-access-pushdown.004.plan
index 294dbea..7edce28 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/heterogeneous-access-pushdown/heterogeneous-access-pushdown.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/heterogeneous-access-pushdown/heterogeneous-access-pushdown.004.plan
@@ -1,22 +1,22 @@
-distribute result [$$21] [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+distribute result [$$21] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 21.51]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+  exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 21.51]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$21] <- [switch-case(true, is-array($$23), array-star($$23).getField("text"), $$23.getField("text"))] project: [$$21] [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+    assign [$$21] <- [switch-case(true, is-array($$23), array-star($$23).getField("text"), $$23.getField("text"))] project: [$$21] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 21.51]
     -- ASSIGN  |PARTITIONED|
-      assign [$$23] <- [$$p.getField("arrayOrObject")] project: [$$23] [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+      assign [$$23] <- [$$p.getField("arrayOrObject")] project: [$$23] [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 21.51]
       -- ASSIGN  |PARTITIONED|
-        project ([$$p]) [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+        project ([$$p]) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 21.51]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
+          exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 21.51]
           -- SORT_MERGE_EXCHANGE [$$24(ASC) ]  |PARTITIONED|
-            order (ASC, $$24) [cardinality: 6.0, op-cost: 15.51, total-cost: 21.51]
+            order (ASC, $$24) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 21.51]
             -- STABLE_SORT [$$24(ASC)]  |PARTITIONED|
-              exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
+              exchange [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$24, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 6.0, op-cost: 6.0, total-cost: 6.0]
+                data-scan []<-[$$24, $$p] <- test.ColumnDataset project ({arrayOrObject:<[{text:any}],{text:any}>}) [cardinality: 6.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
index f087fe5..2ba43d3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
@@ -1,48 +1,48 @@
-distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+distribute result [$$32] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+  exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+      exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
       -- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ]  |PARTITIONED|
-        order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
+        order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
         -- STABLE_SORT [$$40(ASC), $$41(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
+          exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
+            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$40, $$37, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                project ([$$40, $$37, $$t2]) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                  exchange [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                    unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        order (ASC, $$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        order (ASC, $$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STABLE_SORT [$$45(ASC)]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$40, $$37, $$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$40, $$37, $$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                unnest-map [$$44, $$45] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest-map [$$44, $$45] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BTREE_SEARCH  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                                          data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 1.0, doc-size: 16.0, op-cost: 1.0, total-cost: 1.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
index e475f9b..fadb787 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
@@ -1,54 +1,54 @@
-distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+distribute result [$$37] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+  exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+      exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
       -- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ]  |PARTITIONED|
-        order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
+        order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
         -- STABLE_SORT [$$47(ASC), $$48(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
+          exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
+            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
             -- STREAM_SELECT  |PARTITIONED|
-              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$47, $$42, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                  project ([$$47, $$42, $$t2]) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                    exchange [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                      unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                       -- BTREE_SEARCH  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          order (ASC, $$52) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          order (ASC, $$52) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STABLE_SORT [$$52(ASC)]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              project ([$$47, $$42, $$52]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$47, $$42, $$52]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  unnest-map [$$51, $$52] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest-map [$$51, $$52] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                                         -- STREAM_SELECT  |PARTITIONED|
-                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                                                data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 1.0, doc-size: 16.0, op-cost: 1.0, total-cost: 1.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
index 492006e..7525aa5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
@@ -1,48 +1,48 @@
-distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+distribute result [$$32] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+  exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+      exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
       -- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ]  |PARTITIONED|
-        order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
+        order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
         -- STABLE_SORT [$$40(ASC), $$41(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
+          exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
+            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$40, $$37, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                project ([$$40, $$37, $$t2]) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                  exchange [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$36, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$45, 1, $$45, true, true, true) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                    unnest-map [$$36, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$45, 1, $$45, true, true, true) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        order (ASC, $$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        order (ASC, $$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STABLE_SORT [$$45(ASC)]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$40, $$37, $$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$40, $$37, $$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                unnest-map [$$44, $$45] <- index-search("idx_row_t2_s", 0, "Default", "test", "TestOpenRow2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest-map [$$44, $$45] <- index-search("idx_row_t2_s", 0, "Default", "test", "TestOpenRow2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BTREE_SEARCH  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                                          data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 1.0, doc-size: 16.0, op-cost: 1.0, total-cost: 1.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
index 81041d1..0f173d4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
@@ -1,54 +1,54 @@
-distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+distribute result [$$37] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+  exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+      exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
       -- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ]  |PARTITIONED|
-        order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
+        order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
         -- STABLE_SORT [$$47(ASC), $$48(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
+          exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
+            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
             -- STREAM_SELECT  |PARTITIONED|
-              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$47, $$42, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                  project ([$$47, $$42, $$t2]) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                    exchange [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      unnest-map [$$41, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$52, 1, $$52, true, true, true) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                      unnest-map [$$41, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$52, 1, $$52, true, true, true) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                       -- BTREE_SEARCH  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          order (ASC, $$52) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          order (ASC, $$52) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STABLE_SORT [$$52(ASC)]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              project ([$$47, $$42, $$52]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$47, $$42, $$52]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  unnest-map [$$51, $$52] <- index-search("idx_row_t2_s", 0, "Default", "test", "TestOpenRow2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest-map [$$51, $$52] <- index-search("idx_row_t2_s", 0, "Default", "test", "TestOpenRow2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                                         -- STREAM_SELECT  |PARTITIONED|
-                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                                                data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 1.0, doc-size: 16.0, op-cost: 1.0, total-cost: 1.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
index 65e0d41..cbd65d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
@@ -1,48 +1,48 @@
-distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+distribute result [$$32] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+  exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+    assign [$$32] <- [{"c1": $$40, "c2": $$41}] project: [$$32] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+      exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
       -- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ]  |PARTITIONED|
-        order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
+        order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
         -- STABLE_SORT [$$40(ASC), $$41(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
+          exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
+            select (eq($$37, $$t2.getField("c_s"))) project: [$$40, $$41] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+              assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$40, $$37, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                project ([$$40, $$37, $$t2]) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                  exchange [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                    unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        order (ASC, $$45) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        order (ASC, $$45) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STABLE_SORT [$$45(ASC)]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$40, $$37, $$45]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$40, $$37, $$45]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                unnest-map [$$44, $$45] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest-map [$$44, $$45] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$37, 1, $$37, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- BTREE_SEARCH  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$37, $$40] <- [to-string($$t1.getField("c_s")), $$t1.getField("c_x")] project: [$$37, $$40] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$35, $$t1] <- test.TestOpenRow1 [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                                          data-scan []<-[$$35, $$t1] <- test.TestOpenRow1 [cardinality: 1.0, doc-size: 16.0, op-cost: 1.0, total-cost: 1.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
index 621471e..bf6041a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
@@ -1,54 +1,54 @@
-distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+distribute result [$$37] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+  exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+    assign [$$37] <- [{"c1": $$47, "c2": $$48}] project: [$$37] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
+      exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
       -- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ]  |PARTITIONED|
-        order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
+        order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 13.35]
         -- STABLE_SORT [$$47(ASC), $$48(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
+          exchange [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
+            select (eq($$42, $$t2.getField("c_s"))) project: [$$47, $$48] [cardinality: 2.1, doc-size: 16.0, op-cost: 0.0, total-cost: 11.1]
             -- STREAM_SELECT  |PARTITIONED|
-              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+              select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$47, $$42, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                  project ([$$47, $$42, $$t2]) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                    exchange [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                      unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                       -- BTREE_SEARCH  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          order (ASC, $$52) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          order (ASC, $$52) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STABLE_SORT [$$52(ASC)]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              project ([$$47, $$42, $$52]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$47, $$42, $$52]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  unnest-map [$$51, $$52] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest-map [$$51, $$52] <- index-search("idx_column_t2_s", 0, "Default", "test", "TestOpenColumn2", true, true, 1, $$42, 1, $$42, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$42] <- [to-string($$t1.getField("c_s"))] project: [$$47, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |PARTITIONED|
-                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                                        select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, doc-size: 16.0, op-cost: 0.0, total-cost: 1.0]
                                         -- STREAM_SELECT  |PARTITIONED|
-                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$t1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$t1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$40, $$t1] <- test.TestOpenRow1 [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                                                data-scan []<-[$$40, $$t1] <- test.TestOpenRow1 [cardinality: 1.0, doc-size: 16.0, op-cost: 1.0, total-cost: 1.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.004.plan
index 90cfae5..354b0be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.004.plan
@@ -1,36 +1,36 @@
-distribute result [$$61] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+distribute result [$$61] [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+  exchange [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$61] <- [{"$1": $$66, "$2": $$67}] project: [$$61] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+    assign [$$61] <- [{"$1": $$66, "$2": $$67}] project: [$$61] [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$66, $$67] <- [agg-global-sql-sum($$70), agg-global-sql-sum($$71)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+      aggregate [$$66, $$67] <- [agg-global-sql-sum($$70), agg-global-sql-sum($$71)] [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+        exchange [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$70, $$71] <- [agg-local-sql-sum($$54), agg-local-sql-sum($$59)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+          aggregate [$$70, $$71] <- [agg-local-sql-sum($$54), agg-local-sql-sum($$59)] [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
           -- AGGREGATE  |PARTITIONED|
-            assign [$$59, $$54] <- [object-length($$p2), object-length($$p1)] project: [$$54, $$59] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+            assign [$$59, $$54] <- [object-length($$p2), object-length($$p1)] project: [$$54, $$59] [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$p1, $$p2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+              project ([$$p1, $$p2]) [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+                exchange [cardinality: 2.1, doc-size: 31.0, op-cost: 0.0, total-cost: 12.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$63, $$62)) [cardinality: 2.1, op-cost: 4.0, total-cost: 12.0]
+                  join (eq($$63, $$62)) [cardinality: 2.1, doc-size: 31.0, op-cost: 4.0, total-cost: 12.0]
                   -- HYBRID_HASH_JOIN [$$62][$$63]  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+                    exchange [cardinality: 2.0, doc-size: 15.5, op-cost: 0.0, total-cost: 2.0]
                     -- HASH_PARTITION_EXCHANGE [$$62]  |PARTITIONED|
-                      data-scan []<-[$$62, $$p1] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                      data-scan []<-[$$62, $$p1] <- test.ColumnDataset [cardinality: 2.0, doc-size: 15.5, op-cost: 0.0, total-cost: 2.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+                    exchange [cardinality: 2.0, doc-size: 15.5, op-cost: 0.0, total-cost: 2.0]
                     -- HASH_PARTITION_EXCHANGE [$$63]  |PARTITIONED|
-                      data-scan []<-[$$63, $$p2] <- test.RowDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                      data-scan []<-[$$63, $$p2] <- test.RowDataset [cardinality: 2.0, doc-size: 15.5, op-cost: 0.0, total-cost: 2.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.006.plan
index 9bc4e63..783a25e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.006.plan
@@ -1,30 +1,30 @@
-distribute result [$$p1] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+distribute result [$$p1] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    project ([$$p1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+    project ([$$p1]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
     -- STREAM_PROJECT  |PARTITIONED|
-      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
+      exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
       -- SORT_MERGE_EXCHANGE [$$16(ASC) ]  |PARTITIONED|
-        order (ASC, $$16) [cardinality: 2.0, op-cost: 2.0, total-cost: 8.0]
+        order (ASC, $$16) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
         -- STABLE_SORT [$$16(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
+          exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            distinct ([$$p1]) [cardinality: 2.0, op-cost: 2.0, total-cost: 6.0]
+            distinct ([$$p1]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 6.0]
             -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-              exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+              exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$p1) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+                order (ASC, $$p1) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
                 -- STABLE_SORT [$$p1(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- HASH_PARTITION_EXCHANGE [$$p1]  |PARTITIONED|
-                    select (neq($$16, "0")) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    select (neq($$16, "0")) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- STREAM_SELECT  |PARTITIONED|
-                      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$16, $$p1] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                        data-scan []<-[$$16, $$p1] <- test.ColumnDataset [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.008.plan
index a32f4ad..0bdad79 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.008.plan
@@ -1,44 +1,44 @@
-distribute result [$$69] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$69] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$69] <- [{"text": $$text, "$1": $$73}] project: [$$69] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$69] <- [{"text": $$text, "$1": $$73}] project: [$$69] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- SORT_MERGE_EXCHANGE [$$text(ASC) ]  |PARTITIONED|
         group by ([$$text := $$81]) decor ([]) {
-                  aggregate [$$73] <- [agg-global-sql-sum($$80)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$73] <- [agg-global-sql-sum($$80)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+               } [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- SORT_GROUP_BY[$$81]  |PARTITIONED|
-          exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- HASH_PARTITION_EXCHANGE [$$81]  |PARTITIONED|
             group by ([$$81 := $$71]) decor ([]) {
-                      aggregate [$$80] <- [agg-local-sql-sum(sql-count($$75))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$80] <- [agg-local-sql-sum(sql-count($$75))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+                   } [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- SORT_GROUP_BY[$$71]  |PARTITIONED|
-              exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+              exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (eq(lowercase($$71), "string")) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+                select (eq(lowercase($$71), "string")) [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$71] <- [$$ht.getField("display_url")] project: [$$75, $$71] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  assign [$$71] <- [$$ht.getField("display_url")] project: [$$75, $$71] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- ASSIGN  |PARTITIONED|
-                    unnest $$ht <- scan-collection($$75) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    unnest $$ht <- scan-collection($$75) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- UNNEST  |PARTITIONED|
-                      assign [$$75] <- [$$p1.getField("entities").getField("urls")] project: [$$75] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      assign [$$75] <- [$$p1.getField("entities").getField("urls")] project: [$$75] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- ASSIGN  |PARTITIONED|
-                        select (neq($$72, "0")) project: [$$p1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (neq($$72, "0")) project: [$$p1] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                          exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$72, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                            data-scan []<-[$$72, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.010.plan
index d8123a1..13f342a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.010.plan
@@ -1,44 +1,44 @@
-distribute result [$$68] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$68] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$68] <- [{"text": $$text, "$1": $$72}] project: [$$68] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$68] <- [{"text": $$text, "$1": $$72}] project: [$$68] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- SORT_MERGE_EXCHANGE [$$text(ASC) ]  |PARTITIONED|
         group by ([$$text := $$79]) decor ([]) {
-                  aggregate [$$72] <- [agg-global-sql-sum($$78)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$72] <- [agg-global-sql-sum($$78)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+               } [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- SORT_GROUP_BY[$$79]  |PARTITIONED|
-          exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
             group by ([$$79 := $$70]) decor ([]) {
-                      aggregate [$$78] <- [agg-local-sql-sum(sql-sum($$75))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$78] <- [agg-local-sql-sum(sql-sum($$75))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+                   } [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- SORT_GROUP_BY[$$70]  |PARTITIONED|
-              exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+              exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (eq(lowercase($$70), "string")) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+                select (eq(lowercase($$70), "string")) [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$75, $$70] <- [$$ht.getField("indices"), $$ht.getField("display_url")] project: [$$75, $$70] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  assign [$$75, $$70] <- [$$ht.getField("indices"), $$ht.getField("display_url")] project: [$$75, $$70] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- ASSIGN  |PARTITIONED|
-                    unnest $$ht <- scan-collection($$74) project: [$$ht] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    unnest $$ht <- scan-collection($$74) project: [$$ht] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- UNNEST  |PARTITIONED|
-                      assign [$$74] <- [$$p1.getField("entities").getField("urls")] project: [$$74] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      assign [$$74] <- [$$p1.getField("entities").getField("urls")] project: [$$74] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- ASSIGN  |PARTITIONED|
-                        select (neq($$71, "0")) project: [$$p1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        select (neq($$71, "0")) project: [$$p1] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                          exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$71, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any,indices:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                            data-scan []<-[$$71, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any,indices:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.012.plan
index 37d5ca6..a9f30d0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.012.plan
@@ -1,28 +1,28 @@
-distribute result [$$22] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$22] [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$22] <- [{"display_url": $$27}] project: [$$22] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$22] <- [{"display_url": $$27}] project: [$$22] [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$27]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      project ([$$27]) [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
         -- SORT_MERGE_EXCHANGE [$$25(ASC) ]  |PARTITIONED|
-          order (ASC, $$25) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          order (ASC, $$25) [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
           -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-            exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$27] <- [get-item($$24, 0).getField("display_url")] project: [$$27, $$25] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+              assign [$$27] <- [get-item($$24, 0).getField("display_url")] project: [$$27, $$25] [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
               -- ASSIGN  |PARTITIONED|
-                select (eq(sql-count($$24), 1)) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+                select (eq(sql-count($$24), 1)) [cardinality: 1.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$24] <- [$$p.getField("entities").getField("urls")] project: [$$25, $$24] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  assign [$$24] <- [$$p.getField("entities").getField("urls")] project: [$$25, $$24] [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    exchange [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                      data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.014.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.014.plan
index f4a7046..1725335 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.014.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.014.plan
@@ -1,95 +1,95 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+distribute result [$$101] [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+  exchange [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"uname": $$uname, "cnt": $$105}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+    assign [$$101] <- [{"uname": $$uname, "cnt": $$105}] project: [$$101] [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+      exchange [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
       -- SORT_MERGE_EXCHANGE [$$105(DESC), $$uname(ASC) ]  |PARTITIONED|
-        order (DESC, $$105) (ASC, $$uname) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+        order (DESC, $$105) (ASC, $$uname) [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
         -- STABLE_SORT [$$105(DESC), $$uname(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+          exchange [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
             group by ([$$uname := $$116]) decor ([]) {
-                      aggregate [$$105] <- [agg-sql-sum($$115)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$105] <- [agg-sql-sum($$115)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+                   } [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
             -- SORT_GROUP_BY[$$116]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+              exchange [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
               -- HASH_PARTITION_EXCHANGE [$$116]  |PARTITIONED|
                 group by ([$$116 := $$102]) decor ([]) {
-                          aggregate [$$115] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$115] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+                       } [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
                 -- SORT_GROUP_BY[$$102]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+                  exchange [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    select ($$92) project: [$$102] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    select ($$92) project: [$$102] [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
                     -- STREAM_SELECT  |PARTITIONED|
-                      project ([$$92, $$102]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+                      project ([$$92, $$102]) [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
+                        exchange [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                           group by ([$$114 := $$112]) decor ([$$102]) {
-                                    aggregate [$$92] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$92] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
-                                      select (not(is-missing($$113))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      select (not(is-missing($$113))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_SELECT  |LOCAL|
-                                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                 } [cardinality: 0.0, op-cost: 2.25, total-cost: 6.5]
+                                 } [cardinality: 0.0, doc-size: 8.0, op-cost: 0.0, total-cost: 6.5]
                           -- PRE_CLUSTERED_GROUP_BY[$$112]  |PARTITIONED|
-                            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.25]
+                            exchange [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 4.25]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              order (ASC, $$112) [cardinality: 2.0, op-cost: 2.25, total-cost: 4.25]
+                              order (ASC, $$112) [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 4.25]
                               -- STABLE_SORT [$$112(ASC)]  |PARTITIONED|
-                                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                exchange [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                 -- HASH_PARTITION_EXCHANGE [$$112]  |PARTITIONED|
-                                  project ([$$102, $$113, $$112]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                  project ([$$102, $$113, $$112]) [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                    exchange [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      left outer join (eq($$106, $$88)) [cardinality: 2.1, op-cost: 2.0, total-cost: 8.0]
+                                      left outer join (eq($$106, $$88)) [cardinality: 2.1, doc-size: 16.0, op-cost: 2.0, total-cost: 8.0]
                                       -- HYBRID_HASH_JOIN [$$106][$$88]  |PARTITIONED|
-                                        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                        exchange [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                         -- HASH_PARTITION_EXCHANGE [$$106]  |PARTITIONED|
-                                          running-aggregate [$$112] <- [create-query-uid()] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                          running-aggregate [$$112] <- [create-query-uid()] [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                           -- RUNNING_AGGREGATE  |PARTITIONED|
-                                            assign [$$106] <- [$$ht1.getField("display_url")] project: [$$102, $$106] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                            assign [$$106] <- [$$ht1.getField("display_url")] project: [$$102, $$106] [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              unnest $$ht1 <- scan-collection($$107) project: [$$102, $$ht1] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                              unnest $$ht1 <- scan-collection($$107) project: [$$102, $$ht1] [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                               -- UNNEST  |PARTITIONED|
-                                                assign [$$107, $$102] <- [$$p1.getField("entities").getField("urls"), $$p1.getField("user").getField("name")] project: [$$107, $$102] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                                assign [$$107, $$102] <- [$$p1.getField("entities").getField("urls"), $$p1.getField("user").getField("name")] project: [$$107, $$102] [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                                 -- ASSIGN  |PARTITIONED|
-                                                  project ([$$p1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                                  project ([$$p1]) [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                                    exchange [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$103, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]},user:{name:any}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                                      data-scan []<-[$$103, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]},user:{name:any}}) [cardinality: 2.0, doc-size: 8.0, op-cost: 0.0, total-cost: 2.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$88]  |PARTITIONED|
-                                          assign [$$113, $$88] <- [true, $$ht2.getField("display_url")] project: [$$113, $$88] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$113, $$88] <- [true, $$ht2.getField("display_url")] project: [$$113, $$88] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            unnest $$ht2 <- scan-collection($$108) project: [$$ht2] [cardinality: 1.0, op-cost: 2.0, total-cost: 2.0]
+                                            unnest $$ht2 <- scan-collection($$108) project: [$$ht2] [cardinality: 1.0, doc-size: 8.0, op-cost: 2.0, total-cost: 2.0]
                                             -- UNNEST  |PARTITIONED|
-                                              assign [$$108] <- [$$p2.getField("entities").getField("urls")] project: [$$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$108] <- [$$p2.getField("entities").getField("urls")] project: [$$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                project ([$$p2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                project ([$$p2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    data-scan []<-[$$104, $$p2] <- test.RowDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                                    data-scan []<-[$$104, $$p2] <- test.RowDataset [cardinality: 2.0, doc-size: 8.0, op-cost: 2.0, total-cost: 2.0]
                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.015.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.015.plan
index 1111ccc..8aae0e3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.015.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.015.plan
@@ -1,48 +1,48 @@
-distribute result [$$52] [cardinality: 4.0, op-cost: 0.0, total-cost: 12.0]
+distribute result [$$52] [cardinality: 4.0, doc-size: 2.0, op-cost: 0.0, total-cost: 12.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 12.0]
+  exchange [cardinality: 4.0, doc-size: 2.0, op-cost: 0.0, total-cost: 12.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$52] <- [{"$1": $$57}] project: [$$52] [cardinality: 4.0, op-cost: 0.0, total-cost: 12.0]
+    assign [$$52] <- [{"$1": $$57}] project: [$$52] [cardinality: 4.0, doc-size: 2.0, op-cost: 0.0, total-cost: 12.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$57] <- [agg-sql-sum($$60)] [cardinality: 4.0, op-cost: 0.0, total-cost: 12.0]
+      aggregate [$$57] <- [agg-sql-sum($$60)] [cardinality: 4.0, doc-size: 2.0, op-cost: 0.0, total-cost: 12.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 12.0]
+        exchange [cardinality: 4.0, doc-size: 2.0, op-cost: 0.0, total-cost: 12.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$60] <- [agg-sql-count($$50)] [cardinality: 4.0, op-cost: 0.0, total-cost: 12.0]
+          aggregate [$$60] <- [agg-sql-count($$50)] [cardinality: 4.0, doc-size: 2.0, op-cost: 0.0, total-cost: 12.0]
           -- AGGREGATE  |PARTITIONED|
-            project ([$$50]) [cardinality: 4.0, op-cost: 0.0, total-cost: 12.0]
+            project ([$$50]) [cardinality: 4.0, doc-size: 2.0, op-cost: 0.0, total-cost: 12.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 12.0]
+              exchange [cardinality: 4.0, doc-size: 2.0, op-cost: 0.0, total-cost: 12.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$55, $$56)) [cardinality: 4.0, op-cost: 4.0, total-cost: 12.0]
+                join (eq($$55, $$56)) [cardinality: 4.0, doc-size: 2.0, op-cost: 4.0, total-cost: 12.0]
                 -- HYBRID_HASH_JOIN [$$55][$$56]  |PARTITIONED|
-                  exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+                  exchange [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                   -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                    assign [$$50] <- [$$55.getField("y")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    assign [$$50] <- [$$55.getField("y")] [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField("x")] project: [$$55] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      assign [$$55] <- [$$c.getField("x")] project: [$$55] [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        project ([$$c]) [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+                          exchange [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$53, $$c] <- test.ColumnDataset project ({x:any}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                            data-scan []<-[$$53, $$c] <- test.ColumnDataset project ({x:any}) [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+                  exchange [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$r.getField("x")] project: [$$56] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    assign [$$56] <- [$$r.getField("x")] project: [$$56] [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$r]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      project ([$$r]) [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+                        exchange [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$54, $$r] <- test.RowDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                          data-scan []<-[$$54, $$r] <- test.RowDataset [cardinality: 2.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.016.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.016.plan
index cd2903d..1b7d5d5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.016.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.016.plan
@@ -1,54 +1,54 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              project ([$$53, $$57]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$71, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$71, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$71] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$71] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                       } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- SUBPLAN  |PARTITIONED|
                   subplan {
-                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              select (eq($$69, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$69, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |LOCAL|
-                                assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |LOCAL|
-                                  unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- UNNEST  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                         } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- SUBPLAN  |PARTITIONED|
-                    assign [$$68] <- [$$c.getField("val1")] project: [$$68] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    assign [$$68] <- [$$c.getField("val1")] project: [$$68] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      project ([$$c]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val1:[{x:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("x"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("x"), 2)) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                          data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val1:[{x:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("x"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("x"), 2)) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.017.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.017.plan
index 459e217..3525321 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.017.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.017.plan
@@ -1,54 +1,54 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              project ([$$53, $$57]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$71, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$71, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$71] <- [$$e.getField("y")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$71] <- [$$e.getField("y")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                       } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- SUBPLAN  |PARTITIONED|
                   subplan {
-                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              select (eq($$69, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$69, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |LOCAL|
-                                assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |LOCAL|
-                                  unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- UNNEST  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                         } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- SUBPLAN  |PARTITIONED|
-                    assign [$$68] <- [$$c.getField("val1")] project: [$$68] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    assign [$$68] <- [$$c.getField("val1")] project: [$$68] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      project ([$$c]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val1:[{x:any,y:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("y"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("y"), 2)) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                          data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val1:[{x:any,y:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("y"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val1")).getField("y"), 2)) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.018.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.018.plan
index d38ffb1..2999a9c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.018.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.018.plan
@@ -1,56 +1,56 @@
-distribute result [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$65] <- [{"$1": $$67}] project: [$$65] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      aggregate [$$67] <- [agg-sql-sum($$72)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          aggregate [$$72] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- AGGREGATE  |PARTITIONED|
-            select (or($$53, $$57)) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+            select (or($$53, $$57)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- STREAM_SELECT  |PARTITIONED|
-              project ([$$53, $$57]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              project ([$$53, $$57]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- STREAM_PROJECT  |PARTITIONED|
                 subplan {
-                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$57] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            select (eq($$71, 2)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$71, 2)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |LOCAL|
-                              assign [$$71] <- [$$e.getField("y")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$71] <- [$$e.getField("y")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                unnest $$e <- scan-collection($$70) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                unnest $$e <- scan-collection($$70) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- UNNEST  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                       } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- SUBPLAN  |PARTITIONED|
-                  project ([$$70, $$53]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  project ([$$70, $$53]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- STREAM_PROJECT  |PARTITIONED|
                     subplan {
-                              aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              aggregate [$$53] <- [non-empty-stream()] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- AGGREGATE  |LOCAL|
-                                select (eq($$69, 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                select (eq($$69, 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_SELECT  |LOCAL|
-                                  assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$69] <- [$$e.getField("x")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$e <- scan-collection($$68) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$e <- scan-collection($$68) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                           } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                           } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- SUBPLAN  |PARTITIONED|
-                      assign [$$70, $$68] <- [$$c.getField("val2"), $$c.getField("val1")] project: [$$70, $$68] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      assign [$$70, $$68] <- [$$c.getField("val2"), $$c.getField("val1")] project: [$$70, $$68] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        project ([$$c]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                          exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val2:[{y:any}],val1:[{x:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val2")).getField("y"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val2")).getField("y"), 2)) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                            data-scan []<-[$$66, $$c] <- test.ColumnDataset project ({val2:[{y:any}],val1:[{x:any}]}) filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val2")).getField("y"), 2)) range-filter on: or(eq(scan-collection($$c.getField("val1")).getField("x"), 1), eq(scan-collection($$c.getField("val2")).getField("y"), 2)) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.019.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.019.plan
index 02a9cd5..b12dc4e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.019.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.019.plan
@@ -1,20 +1,20 @@
-distribute result [$$31] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$31] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"$1": get-item(get-item(get-item($$32, 0).getField("f2"), 0), 0), "$2": get-item($$47.getField("f3"), 1), "$3": get-item(get-item($$47.getField("f2"), 1), 1)}] project: [$$31] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$31] <- [{"$1": get-item(get-item(get-item($$32, 0).getField("f2"), 0), 0), "$2": get-item($$47.getField("f3"), 1), "$3": get-item(get-item($$47.getField("f2"), 1), 1)}] project: [$$31] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$47] <- [get-item($$32, 1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+      assign [$$47] <- [get-item($$32, 1)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$32] <- [$$c.getField("f1")] project: [$$32] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+        assign [$$32] <- [$$c.getField("f1")] project: [$$32] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+          project ([$$c]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$33, $$c] <- test.ColumnDataset project ({f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+              data-scan []<-[$$33, $$c] <- test.ColumnDataset project ({f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.020.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.020.plan
index 0dfc527..9eb4496 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.020.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.020.plan
@@ -1,45 +1,45 @@
-distribute result [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
-          distinct ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          distinct ([$$64]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (ASC, $$64) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+              order (ASC, $$64) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- STABLE_SORT [$$64(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
-                  select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                  select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$64, $$68]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    project ([$$64, $$68]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- STREAM_PROJECT  |PARTITIONED|
                       subplan {
-                                aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$i <- scan-collection($$70) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$i <- scan-collection($$70) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                             } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- SUBPLAN  |PARTITIONED|
-                        assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$t]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                          project ([$$t]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                              data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.021.plan
index 0dfc527..9eb4496 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.021.plan
@@ -1,45 +1,45 @@
-distribute result [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$66] <- [{"count": $$69}] project: [$$66] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      aggregate [$$69] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- SORT_MERGE_EXCHANGE [$$64(ASC) ]  |PARTITIONED|
-          distinct ([$$64]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          distinct ([$$64]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (ASC, $$64) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+              order (ASC, $$64) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- STABLE_SORT [$$64(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- HASH_PARTITION_EXCHANGE [$$64]  |PARTITIONED|
-                  select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                  select (ge($$68, 3)) project: [$$64] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$64, $$68]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    project ([$$64, $$68]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- STREAM_PROJECT  |PARTITIONED|
                       subplan {
-                                aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$68] <- [agg-sql-sum($$52)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$52] <- [$$i.getField("count")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$i <- scan-collection($$70) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$i <- scan-collection($$70) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                             } [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- SUBPLAN  |PARTITIONED|
-                        assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        assign [$$64, $$70] <- [to-object-var-str($$t).getField(0), $$t.getField("a1")] project: [$$64, $$70] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- ASSIGN  |PARTITIONED|
-                          project ([$$t]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                          project ([$$t]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                              data-scan []<-[$$67, $$t] <- test.ColumnDataset [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.022.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.022.plan
index 1975af3..721bacb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.022.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.022.plan
@@ -1,62 +1,62 @@
-distribute result [$$84] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$84] [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    limit 5 [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$84] <- [{"name": $$93, "phone": $$94, "num_reviews": sql-count($$91), "overall_avg": $#2, "overall_reviews": $$83}] project: [$$84] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      assign [$$84] <- [{"name": $$93, "phone": $$94, "num_reviews": sql-count($$91), "overall_avg": $#2, "overall_reviews": $$83}] project: [$$84] [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        exchange [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
         -- SORT_MERGE_EXCHANGE [$#2(DESC) ]  |PARTITIONED|
-          limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          limit 5 [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 5) (DESC, $#2) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+              order (topK: 5) (DESC, $#2) [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
               -- STABLE_SORT [topK: 5] [$#2(DESC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   subplan {
-                            aggregate [$$83] <- [listify($$82)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$83] <- [listify($$82)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              assign [$$82] <- [$$98.getField("Overall")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$82] <- [$$98.getField("Overall")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |LOCAL|
-                                assign [$$98] <- [$$reviews.getField("ratings")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$98] <- [$$reviews.getField("ratings")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |LOCAL|
-                                  unnest $$reviews <- scan-collection($$91) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  unnest $$reviews <- scan-collection($$91) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- UNNEST  |LOCAL|
-                                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                         } [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                   -- SUBPLAN  |PARTITIONED|
-                    assign [$#2] <- [get-item($$72, 0)] project: [$$93, $$94, $$91, $#2] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                    assign [$#2] <- [get-item($$72, 0)] project: [$$93, $$94, $$91, $#2] [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                     -- ASSIGN  |PARTITIONED|
                       subplan {
-                                aggregate [$$72] <- [listify($$86)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$72] <- [listify($$86)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  aggregate [$$86] <- [agg-sql-min($$69)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  aggregate [$$86] <- [agg-sql-min($$69)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- AGGREGATE  |LOCAL|
-                                    assign [$$69] <- [$$97.getField("Overall")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$69] <- [$$97.getField("Overall")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |LOCAL|
-                                      assign [$$97] <- [$$89.getField("ratings")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      assign [$$97] <- [$$89.getField("ratings")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ASSIGN  |LOCAL|
-                                        unnest $$89 <- scan-collection($$91) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        unnest $$89 <- scan-collection($$91) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- UNNEST  |LOCAL|
-                                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                             } [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                       -- SUBPLAN  |PARTITIONED|
-                        select (eq($$ht.getField("city"), "Los Angeles")) project: [$$93, $$94, $$91] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                        select (eq($$ht.getField("city"), "Los Angeles")) project: [$$93, $$94, $$91] [cardinality: 0.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_SELECT  |PARTITIONED|
-                          assign [$$94, $$91, $$93] <- [$$ht.getField("phone"), $$ht.getField("reviews"), $$ht.getField("name")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                          assign [$$94, $$91, $$93] <- [$$ht.getField("phone"), $$ht.getField("reviews"), $$ht.getField("name")] [cardinality: 2.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                           -- ASSIGN  |PARTITIONED|
-                            project ([$$ht]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                            project ([$$ht]) [cardinality: 2.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                              exchange [cardinality: 2.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$85, $$ht] <- test.ColumnDataset project ({reviews:[{ratings:{Overall:any}}],phone:any,city:any,name:any}) filter on: eq($$ht.getField("city"), "Los Angeles") range-filter on: eq($$ht.getField("city"), "Los Angeles") [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                data-scan []<-[$$85, $$ht] <- test.ColumnDataset project ({reviews:[{ratings:{Overall:any}}],phone:any,city:any,name:any}) filter on: eq($$ht.getField("city"), "Los Angeles") range-filter on: eq($$ht.getField("city"), "Los Angeles") [cardinality: 2.0, doc-size: 3.0, op-cost: 0.0, total-cost: 2.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.023.plan
index 59f8b47..6d688db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.023.plan
@@ -1,24 +1,24 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+    limit 10 [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+      exchange [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$19] <- [{"payload": $$20.getField("payload")}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+        assign [$$19] <- [{"payload": $$20.getField("payload")}] project: [$$19] [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
         -- ASSIGN  |PARTITIONED|
-          limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+          limit 10 [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            assign [$$20] <- [$$o.getField("v")] project: [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+            assign [$$20] <- [$$o.getField("v")] project: [$$20] [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$o]) [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+              project ([$$o]) [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$21, $$o] <- test.ColumnDataset condition (eq($$o.getField("v").getField("type"), "WeMo")) limit 10 project ({v:{payload:any,type:any}}) filter on: eq($$o.getField("v").getField("type"), "WeMo") range-filter on: eq($$o.getField("v").getField("type"), "WeMo") [cardinality: 0.0, op-cost: 2.0, total-cost: 2.0]
+                  data-scan []<-[$$21, $$o] <- test.ColumnDataset condition (eq($$o.getField("v").getField("type"), "WeMo")) limit 10 project ({v:{payload:any,type:any}}) filter on: eq($$o.getField("v").getField("type"), "WeMo") range-filter on: eq($$o.getField("v").getField("type"), "WeMo") [cardinality: 0.0, doc-size: 1.0, op-cost: 0.0, total-cost: 2.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.024.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.024.plan
index 37d3a8d..db24965 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.024.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.024.plan
@@ -1,30 +1,30 @@
-distribute result [$$31] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+distribute result [$$31] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$31] <- [{"$1": get-item(get-item($$36, 0), 0), "$2": get-item($$37, 1), "$3": get-item(get-item($$38, 1), 1)}] project: [$$31] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+    assign [$$31] <- [{"$1": get-item(get-item($$36, 0), 0), "$2": get-item($$37, 1), "$3": get-item(get-item($$38, 1), 1)}] project: [$$31] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$36, $$37, $$38]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+      project ([$$36, $$37, $$38]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+        exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
         -- SORT_MERGE_EXCHANGE [$$35(ASC) ]  |PARTITIONED|
-          order (ASC, $$35) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+          order (ASC, $$35) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
           -- STABLE_SORT [$$35(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$38, $$37] <- [$$49.getField("f2"), $$49.getField("f3")] project: [$$36, $$37, $$38, $$35] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              assign [$$38, $$37] <- [$$49.getField("f2"), $$49.getField("f3")] project: [$$36, $$37, $$38, $$35] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$49, $$36] <- [get-item($$33, 1), get-item($$33, 0).getField("f2")] project: [$$35, $$49, $$36] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                assign [$$49, $$36] <- [get-item($$33, 1), get-item($$33, 0).getField("f2")] project: [$$35, $$49, $$36] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$33, $$35] <- [$$c.getField("f1"), $$c.getField("x")] project: [$$33, $$35] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  assign [$$33, $$35] <- [$$c.getField("f1"), $$c.getField("x")] project: [$$33, $$35] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    project ([$$c]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$34, $$c] <- test.ColumnDataset project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                        data-scan []<-[$$34, $$c] <- test.ColumnDataset project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.025.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.025.plan
index d8a8e6a..69b5e60 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.025.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.025.plan
@@ -1,20 +1,20 @@
-distribute result [$$32] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$32] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"$1": get-item(get-item(get-item($$33, 0).getField("f2"), 0), 0), "$2": get-item($$49.getField("f3"), 1), "$3": get-item(get-item($$49.getField("f2"), 1), 1), "x": $$c.getField("x")}] project: [$$32] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$32] <- [{"$1": get-item(get-item(get-item($$33, 0).getField("f2"), 0), 0), "$2": get-item($$49.getField("f3"), 1), "$3": get-item(get-item($$49.getField("f2"), 1), 1), "x": $$c.getField("x")}] project: [$$32] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$49] <- [get-item($$33, 1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+      assign [$$49] <- [get-item($$33, 1)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$33] <- [$$c.getField("f1")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+        assign [$$33] <- [$$c.getField("f1")] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+          project ([$$c]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$34, $$c] <- test.ColumnDataset project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+              data-scan []<-[$$34, $$c] <- test.ColumnDataset project ({x:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.026.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.026.plan
index 2ecaed1..edd3004 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.026.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.026.plan
@@ -1,30 +1,30 @@
-distribute result [$$32] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+distribute result [$$32] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$32] <- [{"$1": get-item(get-item($$37, 0), 0), "$2": get-item($$38, 1), "$3": get-item(get-item($$39, 1), 1), "x": $$40}] project: [$$32] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+    assign [$$32] <- [{"$1": get-item(get-item($$37, 0), 0), "$2": get-item($$38, 1), "$3": get-item(get-item($$39, 1), 1), "x": $$40}] project: [$$32] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$37, $$38, $$39, $$40]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+      project ([$$37, $$38, $$39, $$40]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+        exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
         -- SORT_MERGE_EXCHANGE [$$36(ASC) ]  |PARTITIONED|
-          order (ASC, $$36) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+          order (ASC, $$36) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 4.0]
           -- STABLE_SORT [$$36(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              assign [$$39, $$38] <- [$$51.getField("f2"), $$51.getField("f3")] project: [$$37, $$38, $$39, $$40, $$36] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              assign [$$39, $$38] <- [$$51.getField("f2"), $$51.getField("f3")] project: [$$37, $$38, $$39, $$40, $$36] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ASSIGN  |PARTITIONED|
-                assign [$$51, $$37] <- [get-item($$34, 1), get-item($$34, 0).getField("f2")] project: [$$36, $$40, $$51, $$37] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                assign [$$51, $$37] <- [get-item($$34, 1), get-item($$34, 0).getField("f2")] project: [$$36, $$40, $$51, $$37] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- ASSIGN  |PARTITIONED|
-                  assign [$$34, $$36, $$40] <- [$$c.getField("f1"), $$c.getField("y"), $$c.getField("x")] project: [$$34, $$36, $$40] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  assign [$$34, $$36, $$40] <- [$$c.getField("f1"), $$c.getField("y"), $$c.getField("x")] project: [$$34, $$36, $$40] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    project ([$$c]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$35, $$c] <- test.ColumnDataset project ({x:any,y:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                        data-scan []<-[$$35, $$c] <- test.ColumnDataset project ({x:any,y:any,f1:[{f2:[[any]],f3:[any]}]}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.027.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.027.plan
index 122a411..dc24af3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.027.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.027.plan
@@ -1,22 +1,22 @@
-distribute result [$$35] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$35] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$35] <- [{"$1": get-item(get-item(get-item($$36, 0).getField("f2"), 0), 0), "$2": get-item($$43, 1), "$3": get-item(get-item($$55.getField("f2"), 1), 1), "f4": $$43.getField("f4")}] project: [$$35] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$35] <- [{"$1": get-item(get-item(get-item($$36, 0).getField("f2"), 0), 0), "$2": get-item($$43, 1), "$3": get-item(get-item($$55.getField("f2"), 1), 1), "f4": $$43.getField("f4")}] project: [$$35] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      assign [$$43] <- [$$55.getField("f3")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+      assign [$$43] <- [$$55.getField("f3")] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
       -- ASSIGN  |PARTITIONED|
-        assign [$$55] <- [get-item($$36, 1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+        assign [$$55] <- [get-item($$36, 1)] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
         -- ASSIGN  |PARTITIONED|
-          assign [$$36] <- [$$c.getField("f1")] project: [$$36] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+          assign [$$36] <- [$$c.getField("f1")] project: [$$36] [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
           -- ASSIGN  |PARTITIONED|
-            project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            project ([$$c]) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              exchange [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$37, $$c] <- test.ColumnDataset project ({f1:[{f2:[[any]],f3:<[any],{f4:any}>}]}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                data-scan []<-[$$37, $$c] <- test.ColumnDataset project ({f1:[{f2:[[any]],f3:<[any],{f4:any}>}]}) [cardinality: 2.0, doc-size: 0.0, op-cost: 0.0, total-cost: 2.0]
                 -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/explain/explain_field_access/explain_field_access.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/explain/explain_field_access/explain_field_access.1.plan
deleted file mode 100644
index b44bf46..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/explain/explain_field_access/explain_field_access.1.plan
+++ /dev/null
@@ -1,38 +0,0 @@
-distribute result [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$50] <- [{"deptId": $#1, "star_cost": $$53}] project: [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$#1 := $$58]) decor ([]) {
-                  aggregate [$$53] <- [agg-global-sql-sum($$57)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_GROUP_BY[$$58]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-            group by ([$$58 := $$51]) decor ([]) {
-                      aggregate [$$57] <- [agg-local-sql-sum($$48)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- SORT_GROUP_BY[$$51]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$51, $$48] <- [substring($$e.getField("dept").getField("department_id"), 0), $$e.getField("salary")] project: [$$48, $$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ASSIGN  |PARTITIONED|
-                  project ([$$e]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$52, $$e] <- gby.Employee [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/explain/explain_field_access_closed/explain_field_access_closed.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/explain/explain_field_access_closed/explain_field_access_closed.1.plan
deleted file mode 100644
index d8a5148..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/explain/explain_field_access_closed/explain_field_access_closed.1.plan
+++ /dev/null
@@ -1,38 +0,0 @@
-distribute result [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$49] <- [{"deptId": $#1, "star_cost": $$52}] project: [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$#1 := $$56]) decor ([]) {
-                  aggregate [$$52] <- [agg-global-sql-sum($$55)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_GROUP_BY[$$56]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-            group by ([$$56 := $$50]) decor ([]) {
-                      aggregate [$$55] <- [agg-local-sql-sum($$47)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- SORT_GROUP_BY[$$50]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$50, $$47] <- [substring($$e.getField(1), 0), $$e.getField(2)] project: [$$47, $$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ASSIGN  |PARTITIONED|
-                  project ([$$e]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$51, $$e] <- gby.Employee [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.04.plan
index 3a398d2..62eeae2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.04.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$19] [cardinality: 1.0, doc-size: 50.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 50.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 1.0, doc-size: 50.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "fsdxv😀"), lt($$20, "fsdxv😁"))) project: [$$ds1] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      select (and(ge($$20, "fsdxv😀"), lt($$20, "fsdxv😁"))) project: [$$ds1] [cardinality: 1.0, doc-size: 50.0, op-cost: 0.0, total-cost: 2.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 1.0, doc-size: 50.0, op-cost: 0.0, total-cost: 2.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          project ([$$ds1]) [cardinality: 1.0, doc-size: 50.0, op-cost: 0.0, total-cost: 2.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 1.0, doc-size: 50.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 1.0, op-cost: 2.0, total-cost: 2.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 1.0, doc-size: 50.0, op-cost: 0.0, total-cost: 2.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["fsdxv😀", "fsdxv😁"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["fsdxv😀", "fsdxv😁"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.06.plan
index cee7f08..83bd6df 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.06.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$19] [cardinality: 1.0, doc-size: 73.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 73.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 1.0, doc-size: 73.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "asdgdh👩‍👩‍👧"), lt($$20, "asdgdh👩‍👩‍👨"))) project: [$$ds1] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      select (and(ge($$20, "asdgdh👩‍👩‍👧"), lt($$20, "asdgdh👩‍👩‍👨"))) project: [$$ds1] [cardinality: 1.0, doc-size: 73.0, op-cost: 0.0, total-cost: 2.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 1.0, doc-size: 73.0, op-cost: 0.0, total-cost: 2.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          project ([$$ds1]) [cardinality: 1.0, doc-size: 73.0, op-cost: 0.0, total-cost: 2.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 1.0, doc-size: 73.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 1.0, op-cost: 2.0, total-cost: 2.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 1.0, doc-size: 73.0, op-cost: 0.0, total-cost: 2.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["asdgdh👩‍👩‍👧", "asdgdh👩‍👩‍👨"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["asdgdh👩‍👩‍👧", "asdgdh👩‍👩‍👨"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.08.plan
index a5d1097..33fdc99 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.08.plan
@@ -1,32 +1,32 @@
-distribute result [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$16] [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      select (eq($$ds1.getField(1), "sxvciis")) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      select (eq($$ds1.getField(1), "sxvciis")) [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 2.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+        project ([$$ds1]) [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 2.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          exchange [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 2.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) [cardinality: 1.0, op-cost: 2.0, total-cost: 2.0]
+            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 2.0]
             -- BTREE_SEARCH  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$19, $$20] <- ["sxvciis", "sxvciis"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$19, $$20] <- ["sxvciis", "sxvciis"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.10.plan
index a2ad9f5..d2fab2f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.10.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$19] [cardinality: 1.0, doc-size: 43.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 43.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 1.0, doc-size: 43.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "Joh"), lt($$20, "Joi"))) project: [$$ds1] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      select (and(ge($$20, "Joh"), lt($$20, "Joi"))) project: [$$ds1] [cardinality: 1.0, doc-size: 43.0, op-cost: 0.0, total-cost: 2.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 1.0, doc-size: 43.0, op-cost: 0.0, total-cost: 2.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          project ([$$ds1]) [cardinality: 1.0, doc-size: 43.0, op-cost: 0.0, total-cost: 2.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 1.0, doc-size: 43.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 1.0, op-cost: 2.0, total-cost: 2.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) [cardinality: 1.0, doc-size: 43.0, op-cost: 0.0, total-cost: 2.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["Joh", "Joi"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["Joh", "Joi"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.12.plan
index 70446b6..790f3e3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.12.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+distribute result [$$16] [cardinality: 1.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+  exchange [cardinality: 1.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "s%vfjs__jiscii%")) [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+      select (like($$ds1.getField(1), "s%vfjs__jiscii%")) [cardinality: 1.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+        project ([$$ds1]) [cardinality: 19.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+          exchange [cardinality: 19.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 19.0, op-cost: 19.0, total-cost: 19.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 19.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.14.plan
index f2386ee..8672bfc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.14.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+distribute result [$$16] [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+  exchange [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvc_is")) [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+      select (like($$ds1.getField(1), "sxvc_is")) [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+        project ([$$ds1]) [cardinality: 19.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+          exchange [cardinality: 19.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 19.0, op-cost: 19.0, total-cost: 19.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 19.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.16.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.16.plan
index abd456d..66c5f7e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.16.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+distribute result [$$16] [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+  exchange [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvc_i%")) [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+      select (like($$ds1.getField(1), "sxvc_i%")) [cardinality: 1.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+        project ([$$ds1]) [cardinality: 19.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+          exchange [cardinality: 19.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 19.0, op-cost: 19.0, total-cost: 19.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 19.0, doc-size: 46.0, op-cost: 0.0, total-cost: 19.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.18.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.18.plan
index 091ce85..6d49223 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.18.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.18.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+distribute result [$$16] [cardinality: 1.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+  exchange [cardinality: 1.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvfjs%jisci%")) [cardinality: 1.0, op-cost: 0.0, total-cost: 19.0]
+      select (like($$ds1.getField(1), "sxvfjs%jisci%")) [cardinality: 1.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+        project ([$$ds1]) [cardinality: 19.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+          exchange [cardinality: 19.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 19.0, op-cost: 19.0, total-cost: 19.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 [cardinality: 19.0, doc-size: 54.0, op-cost: 0.0, total-cost: 19.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.20.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.20.plan
index 24e1def..095c3b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.20.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.20.plan
@@ -1,20 +1,20 @@
-distribute result [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 19.0]
+distribute result [$$19] [cardinality: 2.0, doc-size: 43.0, op-cost: 0.0, total-cost: 19.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 19.0]
+  exchange [cardinality: 2.0, doc-size: 43.0, op-cost: 0.0, total-cost: 19.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 19.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 2.0, doc-size: 43.0, op-cost: 0.0, total-cost: 19.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "J"), lt($$20, "K"))) project: [$$ds1] [cardinality: 2.0, op-cost: 0.0, total-cost: 19.0]
+      select (and(ge($$20, "J"), lt($$20, "K"))) project: [$$ds1] [cardinality: 2.0, doc-size: 43.0, op-cost: 0.0, total-cost: 19.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 19.0, doc-size: 43.0, op-cost: 0.0, total-cost: 19.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+          project ([$$ds1]) [cardinality: 19.0, doc-size: 43.0, op-cost: 0.0, total-cost: 19.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+            exchange [cardinality: 19.0, doc-size: 43.0, op-cost: 0.0, total-cost: 19.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$21, $$ds1] <- test.ds1 [cardinality: 19.0, op-cost: 19.0, total-cost: 19.0]
+              data-scan []<-[$$21, $$ds1] <- test.ds1 [cardinality: 19.0, doc-size: 43.0, op-cost: 0.0, total-cost: 19.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.22.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.22.plan
index d9ac312..efb5ae7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.22.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.22.plan
@@ -1,20 +1,20 @@
-distribute result [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 19.0]
+distribute result [$$19] [cardinality: 2.0, doc-size: 50.0, op-cost: 0.0, total-cost: 19.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 19.0]
+  exchange [cardinality: 2.0, doc-size: 50.0, op-cost: 0.0, total-cost: 19.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 19.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 2.0, doc-size: 50.0, op-cost: 0.0, total-cost: 19.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "sx"), lt($$20, "sy"))) project: [$$ds1] [cardinality: 2.0, op-cost: 0.0, total-cost: 19.0]
+      select (and(ge($$20, "sx"), lt($$20, "sy"))) project: [$$ds1] [cardinality: 2.0, doc-size: 50.0, op-cost: 0.0, total-cost: 19.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 19.0, doc-size: 50.0, op-cost: 0.0, total-cost: 19.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+          project ([$$ds1]) [cardinality: 19.0, doc-size: 50.0, op-cost: 0.0, total-cost: 19.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 19.0, op-cost: 0.0, total-cost: 19.0]
+            exchange [cardinality: 19.0, doc-size: 50.0, op-cost: 0.0, total-cost: 19.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$21, $$ds1] <- test.ds1 [cardinality: 19.0, op-cost: 19.0, total-cost: 19.0]
+              data-scan []<-[$$21, $$ds1] <- test.ds1 [cardinality: 19.0, doc-size: 50.0, op-cost: 0.0, total-cost: 19.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.25.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.25.plan
index 5b0186e..789a3b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.25.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/like-expression/like-expression.25.plan
@@ -1,32 +1,32 @@
-distribute result [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+distribute result [$$16] [cardinality: 1.0, doc-size: 45.0, op-cost: 0.0, total-cost: 2.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+  exchange [cardinality: 1.0, doc-size: 45.0, op-cost: 0.0, total-cost: 2.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 1.0, doc-size: 45.0, op-cost: 0.0, total-cost: 2.0]
     -- ASSIGN  |PARTITIONED|
-      select (eq($$ds1.getField(1), "h\axx%")) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+      select (eq($$ds1.getField(1), "h\axx%")) [cardinality: 1.0, doc-size: 45.0, op-cost: 0.0, total-cost: 2.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+        project ([$$ds1]) [cardinality: 1.0, doc-size: 45.0, op-cost: 0.0, total-cost: 2.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+          exchange [cardinality: 1.0, doc-size: 45.0, op-cost: 0.0, total-cost: 2.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) [cardinality: 1.0, op-cost: 2.0, total-cost: 2.0]
+            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) [cardinality: 1.0, doc-size: 45.0, op-cost: 0.0, total-cost: 2.0]
             -- BTREE_SEARCH  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$19, $$20] <- ["h\axx%", "h\axx%"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$19, $$20] <- ["h\axx%", "h\axx%"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
index d72bdc5..c7bc448 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
@@ -1,60 +1,60 @@
-distribute result [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 819.76]
+distribute result [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 819.76]
+  exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 819.76]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 819.76]
+      exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, op-cost: 339.76, total-cost: 819.76]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 480.0]
+          exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 480.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$58, $$56, $$55]) [cardinality: 58.0, op-cost: 0.0, total-cost: 480.0]
+            project ([$$58, $$56, $$55]) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 480.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 480.0]
+              exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 480.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$55, $$58), eq($$56, $$66))) [cardinality: 58.0, op-cost: 190.0, total-cost: 480.0]
+                join (and(eq($$55, $$58), eq($$56, $$66))) [cardinality: 58.0, doc-size: 15.0, op-cost: 190.0, total-cost: 480.0]
                 -- HYBRID_HASH_JOIN [$$55, $$66][$$58, $$56]  |PARTITIONED|
-                  exchange [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                  exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$66] <- [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                    assign [$$66] <- [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                        project ([$$c]) [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                          exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 10.0, op-cost: 40.0, total-cost: 140.0]
+                  exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 100.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    project ([$$56, $$58]) [cardinality: 10.0, op-cost: 0.0, total-cost: 100.0]
+                    project ([$$56, $$58]) [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 100.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 10.0, op-cost: 40.0, total-cost: 140.0]
+                      exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 100.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$58, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 10.0, op-cost: 50.0, total-cost: 100.0]
+                        unnest-map [$$58, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 100.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            order (ASC, $$56) [cardinality: 10.0, op-cost: 50.0, total-cost: 100.0]
+                            order (ASC, $$56) [cardinality: 10.0, doc-size: 10.0, op-cost: 50.0, total-cost: 100.0]
                             -- STABLE_SORT [$$56(ASC)]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 10.0, op-cost: 10.0, total-cost: 10.0]
+                                      data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 10.0, doc-size: 5.0, op-cost: 10.0, total-cost: 10.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
index d57b4fd..64e78de 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
@@ -1,34 +1,34 @@
-distribute result [$$36] [cardinality: 6016.3, op-cost: 0.0, total-cost: 95054.55]
+distribute result [$$36] [cardinality: 6016.3, doc-size: 10.0, op-cost: 0.0, total-cost: 95054.55]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 6016.3, op-cost: 0.0, total-cost: 95054.55]
+  exchange [cardinality: 6016.3, doc-size: 10.0, op-cost: 0.0, total-cost: 95054.55]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$36] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$42}] project: [$$36] [cardinality: 6016.3, op-cost: 0.0, total-cost: 95054.55]
+    assign [$$36] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$42}] project: [$$36] [cardinality: 6016.3, doc-size: 10.0, op-cost: 0.0, total-cost: 95054.55]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 6016.3, op-cost: 0.0, total-cost: 95054.55]
+      exchange [cardinality: 6016.3, doc-size: 10.0, op-cost: 0.0, total-cost: 95054.55]
       -- SORT_MERGE_EXCHANGE [$$43(ASC), $$44(ASC), $$42(ASC) ]  |PARTITIONED|
-        order (ASC, $$43) (ASC, $$44) (ASC, $$42) [cardinality: 6016.3, op-cost: 75532.61, total-cost: 95054.55]
+        order (ASC, $$43) (ASC, $$44) (ASC, $$42) [cardinality: 6016.3, doc-size: 10.0, op-cost: 0.0, total-cost: 95054.55]
         -- STABLE_SORT [$$43(ASC), $$44(ASC), $$42(ASC)]  |PARTITIONED|
-          exchange [cardinality: 6016.3, op-cost: 0.0, total-cost: 19521.94]
+          exchange [cardinality: 6016.3, doc-size: 10.0, op-cost: 0.0, total-cost: 19521.94]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (eq($$43, $$42)) [cardinality: 6016.3, op-cost: 12016.29, total-cost: 19521.94]
+            select (eq($$43, $$42)) [cardinality: 6016.3, doc-size: 10.0, op-cost: 0.0, total-cost: 19521.94]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$42] <- [$$l.getField(2)] project: [$$43, $$44, $$42] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+              assign [$$42] <- [$$l.getField(2)] project: [$$43, $$44, $$42] [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$43, $$44, $$l]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                project ([$$43, $$44, $$l]) [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                  exchange [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    unnest-map [$$44, $$45, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$43, 1, $$43, true, true, true) [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
+                    unnest-map [$$44, $$45, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", true, true, 1, $$43, 1, $$43, true, true, true) [cardinality: 6010.65, doc-size: 10.0, op-cost: 0.0, total-cost: 6005.0]
                     -- BTREE_SEARCH  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                        project ([$$43]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$43]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$43, $$o] <- tpch.Orders [cardinality: 1500.0, op-cost: 1500.0, total-cost: 1500.0]
+                            data-scan []<-[$$43, $$o] <- tpch.Orders [cardinality: 1500.0, doc-size: 5.0, op-cost: 1500.0, total-cost: 1500.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
index 866663f..f3d8aec 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
@@ -1,46 +1,46 @@
-distribute result [$$38] [cardinality: 1500.0, op-cost: 0.0, total-cost: 77032.61]
+distribute result [$$38] [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 77032.61]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 77032.61]
+  exchange [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 77032.61]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$38] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$47}] project: [$$38] [cardinality: 1500.0, op-cost: 0.0, total-cost: 77032.61]
+    assign [$$38] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$47}] project: [$$38] [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 77032.61]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 77032.61]
+      exchange [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 77032.61]
       -- SORT_MERGE_EXCHANGE [$$43(ASC), $$44(ASC), $$47(ASC) ]  |PARTITIONED|
-        order (ASC, $$43) (ASC, $$44) (ASC, $$47) [cardinality: 1500.0, op-cost: 75532.61, total-cost: 77032.61]
+        order (ASC, $$43) (ASC, $$44) (ASC, $$47) [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 77032.61]
         -- STABLE_SORT [$$43(ASC), $$44(ASC), $$47(ASC)]  |PARTITIONED|
-          exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 1500.0]
+          exchange [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 1500.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$43, $$44, $$47]) [cardinality: 1500.0, op-cost: 0.0, total-cost: 1500.0]
+            project ([$$43, $$44, $$47]) [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 1500.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 1500.0]
+              exchange [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 1500.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                left outer join (and(eq($$43, $$44), eq($$56, $$47))) [cardinality: 6016.3, op-cost: 7512.06, total-cost: 22529.12]
+                left outer join (and(eq($$43, $$44), eq($$56, $$47))) [cardinality: 6016.3, doc-size: 15.0, op-cost: 7512.06, total-cost: 22529.12]
                 -- HYBRID_HASH_JOIN [$$43, $$56][$$44, $$47]  |PARTITIONED|
-                  exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 1500.0]
+                  exchange [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 1500.0]
                   -- HASH_PARTITION_EXCHANGE [$$43, $$56]  |PARTITIONED|
-                    assign [$$56] <- [$$43] [cardinality: 1500.0, op-cost: 0.0, total-cost: 1500.0]
+                    assign [$$56] <- [$$43] [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 1500.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$43]) [cardinality: 1500.0, op-cost: 0.0, total-cost: 1500.0]
+                      project ([$$43]) [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 1500.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 1500.0]
+                        exchange [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 1500.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$43, $$o] <- tpch.Orders [cardinality: 1500.0, op-cost: 1500.0, total-cost: 1500.0]
+                          data-scan []<-[$$43, $$o] <- tpch.Orders [cardinality: 1500.0, doc-size: 5.0, op-cost: 0.0, total-cost: 1500.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$44, $$47]  |PARTITIONED|
-                    assign [$$47] <- [$$l.getField(2)] project: [$$44, $$47] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$47] <- [$$l.getField(2)] project: [$$44, $$47] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$44, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$44, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem [cardinality: 6005.0, op-cost: 6005.0, total-cost: 6005.0]
+                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem [cardinality: 6005.0, doc-size: 10.0, op-cost: 6005.0, total-cost: 6005.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
index fd115a7..a12dde6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
@@ -1,60 +1,60 @@
-distribute result [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 789.76]
+distribute result [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 789.76]
+  exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 789.76]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 789.76]
+      exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, op-cost: 339.76, total-cost: 789.76]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 450.0]
+          exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 450.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$58, $$56, $$55]) [cardinality: 58.0, op-cost: 0.0, total-cost: 450.0]
+            project ([$$58, $$56, $$55]) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 450.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 450.0]
+              exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 450.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$55, $$58), eq($$56, $$66))) [cardinality: 58.0, op-cost: 180.0, total-cost: 450.0]
+                join (and(eq($$55, $$58), eq($$56, $$66))) [cardinality: 58.0, doc-size: 15.0, op-cost: 180.0, total-cost: 450.0]
                 -- HYBRID_HASH_JOIN [$$55, $$66][$$58, $$56]  |PARTITIONED|
-                  exchange [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                  exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                   -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                    assign [$$66] <- [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                    assign [$$66] <- [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                        project ([$$c]) [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                          exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 10.0, op-cost: 30.0, total-cost: 120.0]
+                  exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 90.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    project ([$$56, $$58]) [cardinality: 10.0, op-cost: 0.0, total-cost: 90.0]
+                    project ([$$56, $$58]) [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 90.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 10.0, op-cost: 30.0, total-cost: 120.0]
+                      exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 90.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$58, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 10.0, op-cost: 50.0, total-cost: 90.0]
+                        unnest-map [$$58, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 90.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            order (ASC, $$56) [cardinality: 10.0, op-cost: 50.0, total-cost: 90.0]
+                            order (ASC, $$56) [cardinality: 10.0, doc-size: 10.0, op-cost: 50.0, total-cost: 90.0]
                             -- STABLE_SORT [$$56(ASC)]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 10.0, op-cost: 10.0, total-cost: 10.0]
+                                      data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 10.0, doc-size: 5.0, op-cost: 10.0, total-cost: 10.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
index b1ac963..f440f13 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
@@ -1,58 +1,58 @@
-distribute result [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 914.76]
+distribute result [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 914.76]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 914.76]
+  exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 914.76]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 914.76]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 914.76]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 914.76]
+      exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 914.76]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, op-cost: 339.76, total-cost: 914.76]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 914.76]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 575.0]
+          exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 575.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (eq($$55, $$58)) [cardinality: 58.0, op-cost: 160.0, total-cost: 575.0]
+            join (eq($$55, $$58)) [cardinality: 58.0, doc-size: 15.0, op-cost: 160.0, total-cost: 575.0]
             -- HYBRID_HASH_JOIN [$$58][$$55]  |PARTITIONED|
-              exchange [cardinality: 10.0, op-cost: 10.0, total-cost: 115.0]
+              exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 105.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$56, $$58)) [cardinality: 10.0, op-cost: 35.0, total-cost: 105.0]
+                join (eq($$56, $$58)) [cardinality: 10.0, doc-size: 10.0, op-cost: 35.0, total-cost: 105.0]
                 -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                  exchange [cardinality: 25.0, op-cost: 25.0, total-cost: 50.0]
+                  exchange [cardinality: 25.0, doc-size: 5.0, op-cost: 0.0, total-cost: 25.0]
                   -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                    project ([$$58]) [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                    project ([$$58]) [cardinality: 25.0, doc-size: 5.0, op-cost: 0.0, total-cost: 25.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 25.0, op-cost: 25.0, total-cost: 50.0]
+                      exchange [cardinality: 25.0, doc-size: 5.0, op-cost: 0.0, total-cost: 25.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$58, $$n] <- tpch.Nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                        data-scan []<-[$$58, $$n] <- tpch.Nation [cardinality: 25.0, doc-size: 5.0, op-cost: 0.0, total-cost: 25.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 10.0, op-cost: 10.0, total-cost: 20.0]
+                  exchange [cardinality: 10.0, doc-size: 5.0, op-cost: 0.0, total-cost: 10.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 10.0, op-cost: 0.0, total-cost: 10.0]
+                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 10.0, doc-size: 5.0, op-cost: 0.0, total-cost: 10.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$s]) [cardinality: 10.0, op-cost: 0.0, total-cost: 10.0]
+                      project ([$$s]) [cardinality: 10.0, doc-size: 5.0, op-cost: 0.0, total-cost: 10.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 10.0, op-cost: 10.0, total-cost: 20.0]
+                        exchange [cardinality: 10.0, doc-size: 5.0, op-cost: 0.0, total-cost: 10.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 10.0, op-cost: 10.0, total-cost: 10.0]
+                          data-scan []<-[$$59, $$s] <- tpch.Supplier [cardinality: 10.0, doc-size: 5.0, op-cost: 0.0, total-cost: 10.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 150.0, op-cost: 150.0, total-cost: 300.0]
+              exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
               -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$c]) [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                  project ([$$c]) [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 150.0, op-cost: 150.0, total-cost: 300.0]
+                    exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                      data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
index 1b1c926..681adee 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
@@ -1,60 +1,60 @@
-distribute result [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 819.76]
+distribute result [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 819.76]
+  exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 819.76]
+    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 819.76]
+      exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
       -- SORT_MERGE_EXCHANGE [$$59(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, op-cost: 339.76, total-cost: 819.76]
+        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 819.76]
         -- STABLE_SORT [$$59(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 480.0]
+          exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 480.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$59, $$56, $$55]) [cardinality: 58.0, op-cost: 0.0, total-cost: 480.0]
+            project ([$$59, $$56, $$55]) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 480.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 480.0]
+              exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 480.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 58.0, op-cost: 190.0, total-cost: 480.0]
+                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 58.0, doc-size: 15.0, op-cost: 190.0, total-cost: 480.0]
                 -- HYBRID_HASH_JOIN [$$55, $$66][$$59, $$56]  |PARTITIONED|
-                  exchange [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                  exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$66] <- [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                    assign [$$66] <- [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                        project ([$$c]) [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                          exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 10.0, op-cost: 40.0, total-cost: 140.0]
+                  exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 100.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    project ([$$56, $$59]) [cardinality: 10.0, op-cost: 0.0, total-cost: 100.0]
+                    project ([$$56, $$59]) [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 100.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 10.0, op-cost: 40.0, total-cost: 140.0]
+                      exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 100.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 10.0, op-cost: 50.0, total-cost: 100.0]
+                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 100.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            order (ASC, $$56) [cardinality: 10.0, op-cost: 50.0, total-cost: 100.0]
+                            order (ASC, $$56) [cardinality: 10.0, doc-size: 10.0, op-cost: 50.0, total-cost: 100.0]
                             -- STABLE_SORT [$$56(ASC)]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$58, $$s] <- tpch.Supplier [cardinality: 10.0, op-cost: 10.0, total-cost: 10.0]
+                                      data-scan []<-[$$58, $$s] <- tpch.Supplier [cardinality: 10.0, doc-size: 5.0, op-cost: 10.0, total-cost: 10.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
index 37af1af..f731a7f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
@@ -1,60 +1,60 @@
-distribute result [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 789.76]
+distribute result [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 789.76]
+  exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, op-cost: 0.0, total-cost: 789.76]
+    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 789.76]
+      exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
       -- SORT_MERGE_EXCHANGE [$$59(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, op-cost: 339.76, total-cost: 789.76]
+        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 789.76]
         -- STABLE_SORT [$$59(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 450.0]
+          exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 450.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$59, $$56, $$55]) [cardinality: 58.0, op-cost: 0.0, total-cost: 450.0]
+            project ([$$59, $$56, $$55]) [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 450.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 58.0, op-cost: 0.0, total-cost: 450.0]
+              exchange [cardinality: 58.0, doc-size: 15.0, op-cost: 0.0, total-cost: 450.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 58.0, op-cost: 180.0, total-cost: 450.0]
+                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 58.0, doc-size: 15.0, op-cost: 180.0, total-cost: 450.0]
                 -- HYBRID_HASH_JOIN [$$55, $$66][$$59, $$56]  |PARTITIONED|
-                  exchange [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                  exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                   -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                    assign [$$66] <- [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                    assign [$$66] <- [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                        project ([$$c]) [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 150.0, op-cost: 0.0, total-cost: 150.0]
+                          exchange [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, op-cost: 150.0, total-cost: 150.0]
+                            data-scan []<-[$$60, $$c] <- tpch.Customer [cardinality: 150.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 10.0, op-cost: 30.0, total-cost: 120.0]
+                  exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 90.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    project ([$$56, $$59]) [cardinality: 10.0, op-cost: 0.0, total-cost: 90.0]
+                    project ([$$56, $$59]) [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 90.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 10.0, op-cost: 30.0, total-cost: 120.0]
+                      exchange [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 90.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 10.0, op-cost: 50.0, total-cost: 90.0]
+                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 10.0, doc-size: 10.0, op-cost: 0.0, total-cost: 90.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            order (ASC, $$56) [cardinality: 10.0, op-cost: 50.0, total-cost: 90.0]
+                            order (ASC, $$56) [cardinality: 10.0, doc-size: 10.0, op-cost: 50.0, total-cost: 90.0]
                             -- STABLE_SORT [$$56(ASC)]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$58, $$s] <- tpch.Supplier [cardinality: 10.0, op-cost: 10.0, total-cost: 10.0]
+                                      data-scan []<-[$$58, $$s] <- tpch.Supplier [cardinality: 10.0, doc-size: 5.0, op-cost: 10.0, total-cost: 10.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
index b0c37fa..0195762 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
@@ -1,54 +1,54 @@
-distribute result [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+distribute result [$$52] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+  exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+      exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
       -- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$53) (ASC, $$54) [cardinality: 2.1, op-cost: 2.25, total-cost: 22.35]
+        order (ASC, $$53) (ASC, $$54) [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
         -- STABLE_SORT [$$53(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.1]
+          exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 20.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$62) project: [$$53, $$54] [cardinality: 2.1, op-cost: 10.1, total-cost: 20.1]
+            select ($$62) project: [$$53, $$54] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 20.1]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$53) (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  order (ASC, $$53) (DESC, $$54) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                   -- STABLE_SORT [$$53(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                     -- HASH_PARTITION_EXCHANGE [$$53]  |PARTITIONED|
-                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                          exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, op-cost: 3.0, total-cost: 3.0]
+                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, doc-size: 15.0, op-cost: 3.0, total-cost: 3.0]
                             -- BTREE_SEARCH  |PARTITIONED|
-                              exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                              exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                order (ASC, $$61) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                order (ASC, $$61) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                 -- STABLE_SORT [$$61(ASC)]  |PARTITIONED|
-                                  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                  exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    project ([$$53, $$55, $$61]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                    project ([$$53, $$55, $$61]) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                      exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                          exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                              exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index 6b12972..77e0c34 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -1,82 +1,82 @@
-distribute result [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+distribute result [$$52] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+  exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+      exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 2.1, op-cost: 2.25, total-cost: 22.35]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.1]
+          exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 20.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 2.1, op-cost: 10.1, total-cost: 20.1]
+            select ($$74) project: [$$73, $$54] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 20.1]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                            exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$53, $$55, $$61]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                  project ([$$53, $$55, $$61]) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                    exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      split ($$62) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                      split ($$62) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                       -- SPLIT  |PARTITIONED|
-                                        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                        exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BTREE_SEARCH  |PARTITIONED|
-                                            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                            exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                              assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                              assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                                exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                split ($$62) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                split ($$62) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                 -- SPLIT  |PARTITIONED|
-                                  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                  exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BTREE_SEARCH  |PARTITIONED|
-                                      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                      exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                        assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                        assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                          exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
index 3bcf4ed..f3eb86d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
@@ -1,54 +1,54 @@
-distribute result [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+distribute result [$$52] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+  exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+      exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
       -- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$53) (ASC, $$54) [cardinality: 2.1, op-cost: 2.25, total-cost: 22.35]
+        order (ASC, $$53) (ASC, $$54) [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
         -- STABLE_SORT [$$53(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.1]
+          exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 20.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$62) project: [$$53, $$54] [cardinality: 2.1, op-cost: 10.1, total-cost: 20.1]
+            select ($$62) project: [$$53, $$54] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 20.1]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$53) (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  order (ASC, $$53) (DESC, $$54) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                   -- STABLE_SORT [$$53(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                     -- HASH_PARTITION_EXCHANGE [$$53]  |PARTITIONED|
-                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                          exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, op-cost: 3.0, total-cost: 3.0]
+                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, doc-size: 15.0, op-cost: 3.0, total-cost: 3.0]
                             -- BTREE_SEARCH  |PARTITIONED|
-                              exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                              exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                order (ASC, $$61) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                order (ASC, $$61) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                 -- STABLE_SORT [$$61(ASC)]  |PARTITIONED|
-                                  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                  exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    project ([$$53, $$55, $$61]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                    project ([$$53, $$55, $$61]) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                      exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                          exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                              exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index 6af4bd7..457fddb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -1,82 +1,82 @@
-distribute result [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+distribute result [$$52] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+  exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 22.35]
+      exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 2.1, op-cost: 2.25, total-cost: 22.35]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 22.35]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.1]
+          exchange [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 20.1]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 2.1, op-cost: 10.1, total-cost: 20.1]
+            select ($$74) project: [$$73, $$54] [cardinality: 2.1, doc-size: 15.0, op-cost: 0.0, total-cost: 20.1]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                    exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                        exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                            exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$53, $$55, $$61]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                  project ([$$53, $$55, $$61]) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                    exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      split ($$62) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                      split ($$62) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                       -- SPLIT  |PARTITIONED|
-                                        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                        exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BTREE_SEARCH  |PARTITIONED|
-                                            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                            exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                              assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                              assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                                exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                split ($$62) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                split ($$62) [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                 -- SPLIT  |PARTITIONED|
-                                  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                  exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BTREE_SEARCH  |PARTITIONED|
-                                      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                      exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                        assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                        assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                                          exchange [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, doc-size: 15.0, op-cost: 0.0, total-cost: 2.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/offset_without_limit/offset_without_limit.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/offset_without_limit/offset_without_limit.6.plan
index 0ad749a..5e0c509 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/offset_without_limit/offset_without_limit.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/offset_without_limit/offset_without_limit.6.plan
@@ -1,20 +1,20 @@
-distribute result [$$16] [cardinality: 100.0, op-cost: 0.0, total-cost: 764.39]
+distribute result [$$16] [cardinality: 100.0, doc-size: 9.0, op-cost: 0.0, total-cost: 764.39]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 764.39]
+  exchange [cardinality: 100.0, doc-size: 9.0, op-cost: 0.0, total-cost: 764.39]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit offset 98 [cardinality: 100.0, op-cost: 0.0, total-cost: 764.39]
+    limit offset 98 [cardinality: 100.0, doc-size: 9.0, op-cost: 0.0, total-cost: 764.39]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$16] <- [{"id": $$18, "dblpid": $$paper.getField(1)}] project: [$$16] [cardinality: 100.0, op-cost: 0.0, total-cost: 764.39]
+      assign [$$16] <- [{"id": $$18, "dblpid": $$paper.getField(1)}] project: [$$16] [cardinality: 100.0, doc-size: 9.0, op-cost: 0.0, total-cost: 764.39]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 764.39]
+        exchange [cardinality: 100.0, doc-size: 9.0, op-cost: 0.0, total-cost: 764.39]
         -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-          order (ASC, $$18) [cardinality: 100.0, op-cost: 664.39, total-cost: 764.39]
+          order (ASC, $$18) [cardinality: 100.0, doc-size: 9.0, op-cost: 0.0, total-cost: 764.39]
           -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-            exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+            exchange [cardinality: 100.0, doc-size: 9.0, op-cost: 0.0, total-cost: 100.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$18, $$paper] <- test.DBLP1 [cardinality: 100.0, op-cost: 100.0, total-cost: 100.0]
+              data-scan []<-[$$18, $$paper] <- test.DBLP1 [cardinality: 100.0, doc-size: 9.0, op-cost: 0.0, total-cost: 100.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-external-scan-select/push-limit-to-external-scan-select.2.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-external-scan-select/push-limit-to-external-scan-select.2.plan
deleted file mode 100644
index 82aa37e..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-external-scan-select/push-limit-to-external-scan-select.2.plan
+++ /dev/null
@@ -1,20 +0,0 @@
-distribute result [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- STREAM_LIMIT  |PARTITIONED|
-          assign [$$17] <- [$$t.getField(0)] project: [$$17] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- ASSIGN  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$t] <- test.ds1 condition (gt($$t.getField(0), 2)) limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-external-scan/push-limit-to-external-scan.2.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-external-scan/push-limit-to-external-scan.2.plan
deleted file mode 100644
index 4428df0..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-external-scan/push-limit-to-external-scan.2.plan
+++ /dev/null
@@ -1,20 +0,0 @@
-distribute result [$$14] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$14] <- [$$t.getField(0)] project: [$$14] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- ASSIGN  |PARTITIONED|
-          limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$t] <- test.ds1 limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
index 08a8317..1530da9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$c] [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
+distribute result [$$c] [cardinality: 1152.42, doc-size: 218.44, op-cost: 0.0, total-cost: 6005.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
+  exchange [cardinality: 1152.42, doc-size: 218.44, op-cost: 0.0, total-cost: 6005.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
+    limit 5 offset 5 [cardinality: 1152.42, doc-size: 218.44, op-cost: 0.0, total-cost: 6005.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
+      exchange [cardinality: 1152.42, doc-size: 218.44, op-cost: 0.0, total-cost: 6005.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
+        limit 10 [cardinality: 1152.42, doc-size: 218.44, op-cost: 0.0, total-cost: 6005.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$c]) [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
+          project ([$$c]) [cardinality: 1152.42, doc-size: 218.44, op-cost: 0.0, total-cost: 6005.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
+            exchange [cardinality: 1152.42, doc-size: 218.44, op-cost: 0.0, total-cost: 6005.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$18, $$19, $$c] <- test.LineItem condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10 [cardinality: 1152.42, op-cost: 6005.0, total-cost: 6005.0]
+              data-scan []<-[$$18, $$19, $$c] <- test.LineItem condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10 [cardinality: 1152.42, doc-size: 218.44, op-cost: 0.0, total-cost: 6005.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
index 251dee3..ce3d9ac 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
@@ -1,24 +1,24 @@
-distribute result [$$20] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+distribute result [$$20] [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+  exchange [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+    limit 5 [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+      exchange [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$20] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$21, 0)}] project: [$$20] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+        assign [$$20] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$21, 0)}] project: [$$20] [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
         -- ASSIGN  |PARTITIONED|
-          limit 5 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+          limit 5 [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            assign [$$21] <- [$$c.getField(2)] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+            assign [$$21] <- [$$c.getField(2)] [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$c]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+              project ([$$c]) [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+                exchange [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$22, $$23, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 5 [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
+                  data-scan []<-[$$22, $$23, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 5 [cardinality: 6010.65, doc-size: 21.0, op-cost: 0.0, total-cost: 6005.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
index d6b8239..d420c4b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$c] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+distribute result [$$c] [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+  exchange [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+    limit 5 offset 5 [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+      exchange [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+        limit 10 [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$c]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+          project ([$$c]) [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+            exchange [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$15, $$16, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
+              data-scan []<-[$$15, $$16, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
index f5a335b..eb423ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
@@ -1,20 +1,20 @@
-distribute result [$$c] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+distribute result [$$c] [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+  exchange [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+    limit 5 offset 5 [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+      exchange [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+        limit 10 [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$c]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+          project ([$$c]) [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
+            exchange [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$17, $$18, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
+              data-scan []<-[$$17, $$18, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 6010.65, doc-size: 219.67, op-cost: 0.0, total-cost: 6005.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
index cdc4cc7..022a0ac 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$paper] [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
+distribute result [$$paper] [cardinality: 24.0, doc-size: 284.21, op-cost: 0.0, total-cost: 100.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
+  exchange [cardinality: 24.0, doc-size: 284.21, op-cost: 0.0, total-cost: 100.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
+    limit 5 offset 5 [cardinality: 24.0, doc-size: 284.21, op-cost: 0.0, total-cost: 100.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
+      exchange [cardinality: 24.0, doc-size: 284.21, op-cost: 0.0, total-cost: 100.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
+        limit 10 [cardinality: 24.0, doc-size: 284.21, op-cost: 0.0, total-cost: 100.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$paper]) [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
+          project ([$$paper]) [cardinality: 24.0, doc-size: 284.21, op-cost: 0.0, total-cost: 100.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
+            exchange [cardinality: 24.0, doc-size: 284.21, op-cost: 0.0, total-cost: 100.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$15, $$paper] <- test.DBLP1 condition (contains($$paper.getField(1), "kimL89")) limit 10 [cardinality: 24.0, op-cost: 100.0, total-cost: 100.0]
+              data-scan []<-[$$15, $$paper] <- test.DBLP1 condition (contains($$paper.getField(1), "kimL89")) limit 10 [cardinality: 24.0, doc-size: 284.21, op-cost: 0.0, total-cost: 100.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
index 6b501a7..0a1c6bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
@@ -1,56 +1,56 @@
-distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 308.0]
+distribute result [$$37] [cardinality: 2.1, doc-size: 55.19, op-cost: 0.0, total-cost: 308.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 308.0]
+  exchange [cardinality: 2.1, doc-size: 55.19, op-cost: 0.0, total-cost: 308.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 2 [cardinality: 2.1, op-cost: 0.0, total-cost: 308.0]
+    limit 2 [cardinality: 2.1, doc-size: 55.19, op-cost: 0.0, total-cost: 308.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 308.0]
+      exchange [cardinality: 2.1, doc-size: 55.19, op-cost: 0.0, total-cost: 308.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$37] <- [{"dblpid": $$38}] project: [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 308.0]
+        assign [$$37] <- [{"dblpid": $$38}] project: [$$37] [cardinality: 2.1, doc-size: 55.19, op-cost: 0.0, total-cost: 308.0]
         -- ASSIGN  |PARTITIONED|
-          limit 2 [cardinality: 2.1, op-cost: 0.0, total-cost: 308.0]
+          limit 2 [cardinality: 2.1, doc-size: 55.19, op-cost: 0.0, total-cost: 308.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            project ([$$38]) [cardinality: 2.1, op-cost: 0.0, total-cost: 308.0]
+            project ([$$38]) [cardinality: 2.1, doc-size: 55.19, op-cost: 0.0, total-cost: 308.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 308.0]
+              exchange [cardinality: 2.1, doc-size: 55.19, op-cost: 0.0, total-cost: 308.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$38, $$41)) [cardinality: 2.1, op-cost: 104.0, total-cost: 308.0]
+                join (eq($$38, $$41)) [cardinality: 2.1, doc-size: 55.19, op-cost: 104.0, total-cost: 308.0]
                 -- HYBRID_HASH_JOIN [$$38][$$41]  |PARTITIONED|
-                  exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                  exchange [cardinality: 100.0, doc-size: 27.19, op-cost: 0.0, total-cost: 100.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$38] <- [$$d.getField(1)] project: [$$38] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                    assign [$$38] <- [$$d.getField(1)] project: [$$38] [cardinality: 100.0, doc-size: 27.19, op-cost: 0.0, total-cost: 100.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$d]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                      project ([$$d]) [cardinality: 100.0, doc-size: 27.19, op-cost: 0.0, total-cost: 100.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                        exchange [cardinality: 100.0, doc-size: 27.19, op-cost: 0.0, total-cost: 100.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$39, $$d] <- test.DBLP1 [cardinality: 100.0, op-cost: 100.0, total-cost: 100.0]
+                          data-scan []<-[$$39, $$d] <- test.DBLP1 [cardinality: 100.0, doc-size: 27.19, op-cost: 0.0, total-cost: 100.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 104.0]
+                  exchange [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                    assign [$$41] <- [get-item($$30, 0).getField(0).getField(1)] project: [$$41] [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
+                    assign [$$41] <- [get-item($$30, 0).getField(0).getField(1)] project: [$$41] [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                     -- ASSIGN  |UNPARTITIONED|
-                      aggregate [$$30] <- [listify($$29)] [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
+                      aggregate [$$30] <- [listify($$29)] [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                       -- AGGREGATE  |UNPARTITIONED|
-                        limit 1 [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
+                        limit 1 [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                         -- STREAM_LIMIT  |UNPARTITIONED|
-                          exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 104.0]
+                          exchange [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                           -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                            assign [$$29] <- [{"d": $$d}] project: [$$29] [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
+                            assign [$$29] <- [{"d": $$d}] project: [$$29] [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                             -- ASSIGN  |PARTITIONED|
-                              limit 1 [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
+                              limit 1 [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                               -- STREAM_LIMIT  |PARTITIONED|
-                                project ([$$d]) [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
+                                project ([$$d]) [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 104.0]
+                                  exchange [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$40, $$d] <- test.DBLP1 condition (ends-with($$d.getField(1), "Blakeley95")) limit 1 [cardinality: 1.0, op-cost: 100.0, total-cost: 100.0]
+                                    data-scan []<-[$$40, $$d] <- test.DBLP1 condition (ends-with($$d.getField(1), "Blakeley95")) limit 1 [cardinality: 1.0, doc-size: 28.0, op-cost: 0.0, total-cost: 100.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
index 8f65896..60ea945 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
@@ -1,24 +1,24 @@
-distribute result [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+distribute result [$$19] [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+  exchange [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 1 [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+    limit 1 [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+      exchange [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$19] <- [{"$1": substring($$20, 0, 21)}] project: [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+        assign [$$19] <- [{"$1": substring($$20, 0, 21)}] project: [$$19] [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
         -- ASSIGN  |PARTITIONED|
-          limit 1 [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+          limit 1 [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            assign [$$20] <- [$$DBLP1.getField(1)] project: [$$20] [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+            assign [$$20] <- [$$DBLP1.getField(1)] project: [$$20] [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$DBLP1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+              project ([$$DBLP1]) [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
+                exchange [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$21, $$DBLP1] <- test.DBLP1 condition (gt($$DBLP1.getField(1), "series")) limit 1 [cardinality: 2.0, op-cost: 100.0, total-cost: 100.0]
+                  data-scan []<-[$$21, $$DBLP1] <- test.DBLP1 condition (gt($$DBLP1.getField(1), "series")) limit 1 [cardinality: 2.0, doc-size: 30.5, op-cost: 0.0, total-cost: 100.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
index 7f5d5d3..bb3fa6b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
@@ -1,24 +1,24 @@
-distribute result [$$22] [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+distribute result [$$22] [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+  exchange [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 2 [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+    limit 2 [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+      exchange [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 2 [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+        limit 2 [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          assign [$$22] <- [$$26.getField("lang")] project: [$$22] [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+          assign [$$22] <- [$$26.getField("lang")] project: [$$22] [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
           -- ASSIGN  |PARTITIONED|
-            assign [$$26] <- [$$t.getField("user")] project: [$$26] [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+            assign [$$26] <- [$$t.getField("user")] project: [$$26] [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$t]) [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+              project ([$$t]) [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
+                exchange [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$25, $$t] <- test.TweetMessages condition (and(ge($$t.getField("user").getField("friends_count"), 0), le($$t.getField("user").getField("friends_count"), 150))) limit 2 [cardinality: 3.0, op-cost: 12.0, total-cost: 12.0]
+                  data-scan []<-[$$25, $$t] <- test.TweetMessages condition (and(ge($$t.getField("user").getField("friends_count"), 0), le($$t.getField("user").getField("friends_count"), 150))) limit 2 [cardinality: 3.0, doc-size: 190.0, op-cost: 0.0, total-cost: 12.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.plan
index 44957ae..94ffc06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$paper] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+distribute result [$$paper] [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+  exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+    limit 5 offset 5 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+      exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+        limit 10 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$paper]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+          project ([$$paper]) [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+            exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$13, $$paper] <- test.DBLP1 limit 10 [cardinality: 100.0, op-cost: 100.0, total-cost: 100.0]
+              data-scan []<-[$$13, $$paper] <- test.DBLP1 limit 10 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.plan
index f85eabc..47f0b1b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.5.plan
@@ -1,20 +1,20 @@
-distribute result [$$paper] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+distribute result [$$paper] [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+  exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+    limit 5 offset 5 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+      exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        limit 10 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+        limit 10 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
         -- STREAM_LIMIT  |PARTITIONED|
-          project ([$$paper]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+          project ([$$paper]) [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+            exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$15, $$paper] <- test.DBLP1 limit 10 [cardinality: 100.0, op-cost: 100.0, total-cost: 100.0]
+              data-scan []<-[$$15, $$paper] <- test.DBLP1 limit 10 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.8.plan
index 5024957..ddabf90 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.8.plan
@@ -1,41 +1,41 @@
-distribute result [$$80] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+distribute result [$$80] [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+  exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 offset 5 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+    limit 5 offset 5 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$80] <- [get-item($$78, 0)] project: [$$80] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+      assign [$$80] <- [get-item($$78, 0)] project: [$$80] [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
       -- ASSIGN  |PARTITIONED|
-        project ([$$78]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+        project ([$$78]) [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+          exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
           -- SORT_MERGE_EXCHANGE [$$82(ASC) ]  |PARTITIONED|
-            limit 10 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+            limit 10 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
             -- STREAM_LIMIT  |PARTITIONED|
-              exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+              exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (topK: 10) (ASC, $$82) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                order (topK: 10) (ASC, $$82) [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
                 -- STABLE_SORT [topK: 10] [$$82(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                  exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$78, $$82]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                    project ([$$78, $$82]) [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
                     -- STREAM_PROJECT  |PARTITIONED|
                       subplan {
-                                aggregate [$$78] <- [listify($$77)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$78] <- [listify($$77)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  assign [$$77] <- [object-remove(object-remove(object-remove($$t0, "title"), "authors"), "misc")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$77] <- [object-remove(object-remove(object-remove($$t0, "title"), "authors"), "misc")] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |LOCAL|
-                                    unnest $$t0 <- scan-collection(to-array($$paper)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    unnest $$t0 <- scan-collection(to-array($$paper)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- UNNEST  |LOCAL|
-                                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                             } [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
                       -- SUBPLAN  |PARTITIONED|
-                        exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+                        exchange [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$82, $$paper] <- test.DBLP1 [cardinality: 100.0, op-cost: 100.0, total-cost: 100.0]
+                          data-scan []<-[$$82, $$paper] <- test.DBLP1 [cardinality: 100.0, doc-size: 0.0, op-cost: 0.0, total-cost: 100.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
index 75967bc..03418cb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
@@ -1,34 +1,34 @@
-distribute result [$$18] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+distribute result [$$18] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+  exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"f_1": $$15, "f_2": $$17}] project: [$$18] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+    assign [$$18] <- [{"f_1": $$15, "f_2": $$17}] project: [$$18] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$15, $$17]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+      project ([$$15, $$17]) [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
       -- STREAM_PROJECT  |PARTITIONED|
         subplan {
-                  assign [$$17] <- [array-slice($$20, 0, 2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$17] <- [array-slice($$20, 0, 2)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+               } [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
         -- SUBPLAN  |PARTITIONED|
           subplan {
-                    assign [$$15] <- [array-slice($$20, 0, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$15] <- [array-slice($$20, 0, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                 } [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
           -- SUBPLAN  |PARTITIONED|
-            assign [$$20] <- [$$collection1.getField("array1")] project: [$$20] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+            assign [$$20] <- [$$collection1.getField("array1")] project: [$$20] [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$collection1]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+              project ([$$collection1]) [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
+                exchange [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$19, $$collection1] <- test.collection1 [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
+                  data-scan []<-[$$19, $$collection1] <- test.collection1 [cardinality: 1.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.4.plan
index ffb14f4..76f4fcb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.4.plan
@@ -1,24 +1,24 @@
-distribute result [$$30] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+distribute result [$$30] [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+  exchange [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$md]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+      project ([$$md]) [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+        exchange [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
         -- SORT_MERGE_EXCHANGE [$$32(ASC) ]  |PARTITIONED|
-          order (ASC, $$32) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+          order (ASC, $$32) [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
           -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (neq(uuid(), uuid())) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              select (neq(uuid(), uuid())) [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 2.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                  data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 2.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.6.plan
index 4203276..b4615db 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.6.plan
@@ -1,24 +1,24 @@
-distribute result [$$30] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+distribute result [$$30] [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+  exchange [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$md]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+      project ([$$md]) [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
+        exchange [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
         -- SORT_MERGE_EXCHANGE [$$32(ASC) ]  |PARTITIONED|
-          order (ASC, $$32) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
+          order (ASC, $$32) [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 4.0]
           -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
-            exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+            exchange [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 2.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (neq(current-date(), date: { 1980-09-10 })) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+              select (neq(current-date(), date: { 1980-09-10 })) [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 2.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+                exchange [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 2.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+                  data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 2.0, doc-size: 49.0, op-cost: 0.0, total-cost: 2.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.024.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.024.plan
deleted file mode 100644
index f13eb9e..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.024.plan
+++ /dev/null
@@ -1,18 +0,0 @@
-distribute result [$$v] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$v] <- [{"SK0": $$14, "PK0": $$15}] project: [$$v] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$15(ASC) ]  |PARTITIONED|
-        order (ASC, $$15) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- STABLE_SORT [$$15(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$14, $$15] <- test.ds1.ds1_age.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.025.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.025.plan
deleted file mode 100644
index 2baa9ac..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.025.plan
+++ /dev/null
@@ -1,18 +0,0 @@
-distribute result [$$v] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$v] <- [{"SK0": $$14, "SK1": $$15, "PK0": $$16}] project: [$$v] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$16(ASC) ]  |PARTITIONED|
-        order (ASC, $$16) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- STABLE_SORT [$$16(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$14, $$15, $$16] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.026.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.026.plan
deleted file mode 100644
index c8b01e8..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.026.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-distribute result [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$57] <- [{"age": $$SK0, "dept": $$SK1, "cnt": $$63}] project: [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$SK1(ASC), $$SK0(ASC) ]  |PARTITIONED|
-        group by ([$$SK1 := $$65; $$SK0 := $$66]) decor ([]) {
-                  aggregate [$$63] <- [agg-sql-sum($$64)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_GROUP_BY[$$65, $$66]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- HASH_PARTITION_EXCHANGE [$$65, $$66]  |PARTITIONED|
-            group by ([$$65 := $$61; $$66 := $$60]) decor ([]) {
-                      aggregate [$$64] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- SORT_GROUP_BY[$$61, $$60]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$61, $$60]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$60, $$61, $$62] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.027.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.027.plan
deleted file mode 100644
index f82628d..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.027.plan
+++ /dev/null
@@ -1,20 +0,0 @@
-distribute result [$$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$33] <- [{"cnt": $$36}] project: [$$33] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$36] <- [agg-sql-sum($$37)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$37] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$34, $$35] <- test.ds1.ds1_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.028.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.028.plan
deleted file mode 100644
index ee7953e..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.028.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-distribute result [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$45] <- [{"age": $$SK0, "cnt": $$49}] project: [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$SK0(ASC) ]  |PARTITIONED|
-        group by ([$$SK0 := $$51]) decor ([]) {
-                  aggregate [$$49] <- [agg-sql-sum($$50)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_GROUP_BY[$$51]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- HASH_PARTITION_EXCHANGE [$$51]  |PARTITIONED|
-            group by ([$$51 := $$47]) decor ([]) {
-                      aggregate [$$50] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- PRE_CLUSTERED_GROUP_BY[$$47]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$47]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$47, $$48] <- test.ds1.ds1_age.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.029.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.029.plan
deleted file mode 100644
index 99731ea..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.029.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-distribute result [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$45] <- [{"age": $$SK0, "cnt": $$50}] project: [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$SK0(ASC) ]  |PARTITIONED|
-        group by ([$$SK0 := $$52]) decor ([]) {
-                  aggregate [$$50] <- [agg-sql-sum($$51)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_GROUP_BY[$$52]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
-            group by ([$$52 := $$47]) decor ([]) {
-                      aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- PRE_CLUSTERED_GROUP_BY[$$47]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$47]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$47, $$48, $$49] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.030.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.030.plan
deleted file mode 100644
index 7c9818e..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.030.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-distribute result [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$45] <- [{"age": $$SK1, "cnt": $$50}] project: [$$45] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$SK1(ASC) ]  |PARTITIONED|
-        group by ([$$SK1 := $$52]) decor ([]) {
-                  aggregate [$$50] <- [agg-sql-sum($$51)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_GROUP_BY[$$52]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
-            group by ([$$52 := $$48]) decor ([]) {
-                      aggregate [$$51] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- SORT_GROUP_BY[$$48]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$48]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$47, $$48, $$49] <- test.ds1.ds1_dept_age.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.031.plan
deleted file mode 100644
index 8f01ff7..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/query_index/q01/q01.031.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-distribute result [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$57] <- [{"age": $$SK0, "dept": $$SK1, "cnt": $$63}] project: [$$57] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- SORT_MERGE_EXCHANGE [$$SK0(ASC), $$SK1(ASC) ]  |PARTITIONED|
-        group by ([$$SK0 := $$65; $$SK1 := $$66]) decor ([]) {
-                  aggregate [$$63] <- [agg-sql-sum($$64)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- SORT_GROUP_BY[$$65, $$66]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- HASH_PARTITION_EXCHANGE [$$65, $$66]  |PARTITIONED|
-            group by ([$$65 := $$60; $$66 := $$61]) decor ([]) {
-                      aggregate [$$64] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- PRE_CLUSTERED_GROUP_BY[$$60, $$61]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$60, $$61, $$62] <- test.ds1.ds1_age_dept.query-index [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
index 8d2d305..5763311 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$311] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+distribute result [$$311] [cardinality: 8.0, doc-size: 3.0, op-cost: 0.0, total-cost: 8.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+  exchange [cardinality: 8.0, doc-size: 3.0, op-cost: 0.0, total-cost: 8.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 8.0, doc-size: 3.0, op-cost: 0.0, total-cost: 8.0]
     -- ASSIGN  |PARTITIONED|
-      select (not(is-null($$345))) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+      select (not(is-null($$345))) [cardinality: 8.0, doc-size: 3.0, op-cost: 0.0, total-cost: 8.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$345] <- [string-default-null($$s.getField("id"))] project: [$$345] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+        assign [$$345] <- [string-default-null($$s.getField("id"))] project: [$$345] [cardinality: 8.0, doc-size: 3.0, op-cost: 0.0, total-cost: 8.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$s]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+          project ([$$s]) [cardinality: 8.0, doc-size: 3.0, op-cost: 0.0, total-cost: 8.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+            exchange [cardinality: 8.0, doc-size: 3.0, op-cost: 0.0, total-cost: 8.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$314, $$s] <- test.dat1 [cardinality: 8.0, op-cost: 8.0, total-cost: 8.0]
+              data-scan []<-[$$314, $$s] <- test.dat1 [cardinality: 8.0, doc-size: 3.0, op-cost: 0.0, total-cost: 8.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
index efa194b..26d4afc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
@@ -1,35 +1,35 @@
-distribute result [$$317] [cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
+distribute result [$$317] [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
+  exchange [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$317] <- [{"dat3": {"id": $$351, "a": string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] [cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
+    assign [$$317] <- [{"dat3": {"id": $$351, "a": string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
     -- ASSIGN  |PARTITIONED|
-      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] [cardinality: 4.0, op-cost: 0.0, total-cost: 8.0]
+      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$351, $$345, $$318, $$295]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+        project ([$$351, $$345, $$318, $$295]) [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
         -- STREAM_PROJECT  |PARTITIONED|
           subplan {
-                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        unnest $$333 <- scan-collection($$343) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest $$333 <- scan-collection($$343) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- UNNEST  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+                 } [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
           -- SUBPLAN  |PARTITIONED|
-            select (not(is-null($$351))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (not(is-null($$351))) [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$351, $$345, $$318, $$343] <- [string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), $$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+              assign [$$351, $$345, $$318, $$343] <- [string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), $$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$s]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+                project ([$$s]) [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
+                  exchange [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$319, $$s] <- test.dat1 [cardinality: 8.0, op-cost: 8.0, total-cost: 8.0]
+                    data-scan []<-[$$319, $$s] <- test.dat1 [cardinality: 8.0, doc-size: 0.0, op-cost: 0.0, total-cost: 8.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.03.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.03.plan
index 3645f6b..2f3fe45 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.03.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.03.plan
@@ -1,44 +1,44 @@
-distribute result [$$134] [cardinality: 4.0, op-cost: 0.0, total-cost: 1794944.26]
+distribute result [$$134] [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1794944.26]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 1794944.26]
+  exchange [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1794944.26]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$134] <- [{"$1": 1, "l_returnflag": $$l_returnflag, "l_linestatus": $$l_linestatus, "sum_qty": $$140, "sum_base_price": $$141, "sum_disc_price": $$142, "sum_charge": $$143, "avg_qty": $$144, "avg_price": $$145, "avg_disc": $$146, "count_order": $$147}] project: [$$134] [cardinality: 4.0, op-cost: 0.0, total-cost: 1794944.26]
+    assign [$$134] <- [{"$1": 1, "l_returnflag": $$l_returnflag, "l_linestatus": $$l_linestatus, "sum_qty": $$140, "sum_base_price": $$141, "sum_disc_price": $$142, "sum_charge": $$143, "avg_qty": $$144, "avg_price": $$145, "avg_disc": $$146, "count_order": $$147}] project: [$$134] [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1794944.26]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 1794944.26]
+      exchange [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1794944.26]
       -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ]  |PARTITIONED|
-        order (ASC, $$l_returnflag) (ASC, $$l_linestatus) [cardinality: 4.0, op-cost: 8.0, total-cost: 1794944.26]
+        order (ASC, $$l_returnflag) (ASC, $$l_linestatus) [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1794944.26]
         -- STABLE_SORT [$$l_returnflag(ASC), $$l_linestatus(ASC)]  |PARTITIONED|
-          exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 1794936.26]
+          exchange [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1794936.26]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
             group by ([$$l_returnflag := $$160; $$l_linestatus := $$161]) decor ([]) {
-                      aggregate [$$140, $$141, $$142, $$143, $$144, $$145, $$146, $$147] <- [global-sql-sum-serial($$152), global-sql-sum-serial($$153), global-sql-sum-serial($$154), global-sql-sum-serial($$155), global-sql-avg-serial($$156), global-sql-avg-serial($$157), global-sql-avg-serial($$158), sql-sum-serial($$159)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$140, $$141, $$142, $$143, $$144, $$145, $$146, $$147] <- [global-sql-sum-serial($$152), global-sql-sum-serial($$153), global-sql-sum-serial($$154), global-sql-sum-serial($$155), global-sql-avg-serial($$156), global-sql-avg-serial($$157), global-sql-avg-serial($$158), sql-sum-serial($$159)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 4.0, op-cost: 597182.13, total-cost: 1794936.26]
+                   } [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1794936.26]
             -- EXTERNAL_GROUP_BY[$$160, $$161]  |PARTITIONED|
-              exchange [cardinality: 4.0, op-cost: 0.0, total-cost: 1197754.13]
+              exchange [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1197754.13]
               -- HASH_PARTITION_EXCHANGE [$$160, $$161]  |PARTITIONED|
                 group by ([$$160 := $$135; $$161 := $$136]) decor ([]) {
-                          aggregate [$$152, $$153, $$154, $$155, $$156, $$157, $$158, $$159] <- [local-sql-sum-serial($$88), local-sql-sum-serial($$93), local-sql-sum-serial(numeric-multiply($$93, numeric-subtract(1, $$149))), local-sql-sum-serial(numeric-multiply(numeric-multiply($$93, numeric-subtract(1, $$149)), numeric-add(1, $$151))), local-sql-avg-serial($$88), local-sql-avg-serial($$93), local-sql-avg-serial($$149), sql-count-serial(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$152, $$153, $$154, $$155, $$156, $$157, $$158, $$159] <- [local-sql-sum-serial($$88), local-sql-sum-serial($$93), local-sql-sum-serial(numeric-multiply($$93, numeric-subtract(1, $$149))), local-sql-sum-serial(numeric-multiply(numeric-multiply($$93, numeric-subtract(1, $$149)), numeric-add(1, $$151))), local-sql-avg-serial($$88), local-sql-avg-serial($$93), local-sql-avg-serial($$149), sql-count-serial(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 4.0, op-cost: 597182.13, total-cost: 1197754.13]
+                       } [cardinality: 4.0, doc-size: 0.0, op-cost: 0.0, total-cost: 1197754.13]
                 -- EXTERNAL_GROUP_BY[$$135, $$136]  |PARTITIONED|
-                  exchange [cardinality: 597182.13, op-cost: 0.0, total-cost: 600572.0]
+                  exchange [cardinality: 597182.13, doc-size: 0.0, op-cost: 0.0, total-cost: 600572.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    select (le($$l.getField(10), "1998-09-16")) project: [$$88, $$93, $$149, $$151, $$135, $$136] [cardinality: 597182.13, op-cost: 0.0, total-cost: 600572.0]
+                    select (le($$l.getField(10), "1998-09-16")) project: [$$88, $$93, $$149, $$151, $$135, $$136] [cardinality: 597182.13, doc-size: 0.0, op-cost: 0.0, total-cost: 600572.0]
                     -- STREAM_SELECT  |PARTITIONED|
-                      assign [$$136, $$135, $$88, $$149, $$151, $$93] <- [$$l.getField(9), $$l.getField(8), $$l.getField(4), $$l.getField(6), $$l.getField(7), $$l.getField(5)] [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                      assign [$$136, $$135, $$88, $$149, $$151, $$93] <- [$$l.getField(9), $$l.getField(8), $$l.getField(4), $$l.getField(6), $$l.getField(7), $$l.getField(5)] [cardinality: 600572.0, doc-size: 0.0, op-cost: 0.0, total-cost: 600572.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$l]) [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                        project ([$$l]) [cardinality: 600572.0, doc-size: 0.0, op-cost: 0.0, total-cost: 600572.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                          exchange [cardinality: 600572.0, doc-size: 0.0, op-cost: 0.0, total-cost: 600572.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$138, $$139, $$l] <- tpch.lineitem [cardinality: 600572.0, op-cost: 600572.0, total-cost: 600572.0]
+                            data-scan []<-[$$138, $$139, $$l] <- tpch.lineitem [cardinality: 600572.0, doc-size: 0.0, op-cost: 0.0, total-cost: 600572.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan
index 1bb950f..e17aa34 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan
@@ -1,249 +1,249 @@
-distribute result [$$194] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$194] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$194] <- [{"$1": 2, "s_acctbal": $$237, "s_name": $$239, "n_name": $$238, "p_partkey": $$250, "p_mfgr": $$244, "s_address": $$245, "s_phone": $$246, "s_comment": $$247}] project: [$$194] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$194] <- [{"$1": 2, "s_acctbal": $$237, "s_name": $$239, "n_name": $$238, "p_partkey": $$250, "p_mfgr": $$244, "s_address": $$245, "s_phone": $$246, "s_comment": $$247}] project: [$$194] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$237(DESC), $$238(ASC), $$239(ASC), $$250(ASC) ]  |PARTITIONED|
-          limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 100) (DESC, $$237) (ASC, $$238) (ASC, $$239) (ASC, $$250) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 100) (DESC, $$237) (ASC, $$238) (ASC, $$239) (ASC, $$250) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 100] [$$237(DESC), $$238(ASC), $$239(ASC), $$250(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$221, $$206)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$221, $$206)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$221][$$206]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$221]  |PARTITIONED|
-                          project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247, $$221]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247, $$221]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$225, $$205)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$225, $$205)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$225][$$205]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$225]  |PARTITIONED|
-                                  project ([$$237, $$239, $$250, $$244, $$245, $$246, $$247, $$225]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$237, $$239, $$250, $$244, $$245, $$246, $$247, $$225]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (and(eq($$250, $$203), eq($$202, $$231))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (and(eq($$250, $$203), eq($$202, $$231))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$250, $$231][$$203, $$202]  |PARTITIONED|
-                                        exchange [cardinality: 29.05, op-cost: 0.0, total-cost: 264469.8]
+                                        exchange [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          assign [$$231] <- [get-item($$181, 0)] project: [$$250, $$244, $$231] [cardinality: 29.05, op-cost: 0.0, total-cost: 264469.8]
+                                          assign [$$231] <- [get-item($$181, 0)] project: [$$250, $$244, $$231] [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                           -- ASSIGN  |PARTITIONED|
-                                            exchange [cardinality: 29.05, op-cost: 0.0, total-cost: 264469.8]
+                                            exchange [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                               group by ([$$250 := $$200]) decor ([$$244]) {
-                                                        aggregate [$$181] <- [listify($$215)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        aggregate [$$181] <- [listify($$215)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- AGGREGATE  |LOCAL|
-                                                          aggregate [$$215] <- [agg-sql-min($$208)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          aggregate [$$215] <- [agg-sql-min($$208)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- AGGREGATE  |LOCAL|
-                                                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 264469.8]
+                                                     } [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                               -- PRE_CLUSTERED_GROUP_BY[$$200]  |PARTITIONED|
-                                                exchange [cardinality: 29.05, op-cost: 0.0, total-cost: 264469.8]
+                                                exchange [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  order (ASC, $$200) [cardinality: 29.05, op-cost: 0.0, total-cost: 264469.8]
+                                                  order (ASC, $$200) [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                                   -- STABLE_SORT [$$200(ASC)]  |PARTITIONED|
-                                                    exchange [cardinality: 29.05, op-cost: 0.0, total-cost: 264469.8]
+                                                    exchange [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                                     -- HASH_PARTITION_EXCHANGE [$$200]  |PARTITIONED|
-                                                      project ([$$244, $$208, $$200]) [cardinality: 29.05, op-cost: 0.0, total-cost: 264469.8]
+                                                      project ([$$244, $$208, $$200]) [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                                       -- STREAM_PROJECT  |PARTITIONED|
-                                                        exchange [cardinality: 29.05, op-cost: 0.0, total-cost: 264469.8]
+                                                        exchange [cardinality: 29.05, doc-size: 61.0, op-cost: 0.0, total-cost: 264469.8]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          join (and(eq($$218, $$213), eq($$223, $$212))) [cardinality: 29.05, op-cost: 172.16, total-cost: 264469.8]
+                                                          join (and(eq($$218, $$213), eq($$223, $$212))) [cardinality: 29.05, doc-size: 61.0, op-cost: 172.16, total-cost: 264469.8]
                                                           -- HYBRID_HASH_JOIN [$$213, $$223][$$218, $$212]  |PARTITIONED|
-                                                            exchange [cardinality: 987.0, op-cost: 147.16, total-cost: 1147.16]
+                                                            exchange [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                                                             -- HASH_PARTITION_EXCHANGE [$$213, $$223]  |PARTITIONED|
-                                                              assign [$$223] <- [$$s2.getField(3)] project: [$$244, $$208, $$200, $$213, $$223] [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0]
+                                                              assign [$$223] <- [$$s2.getField(3)] project: [$$244, $$208, $$200, $$213, $$223] [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                                                               -- ASSIGN  |PARTITIONED|
-                                                                project ([$$208, $$213, $$244, $$200, $$s2]) [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0]
+                                                                project ([$$208, $$213, $$244, $$200, $$s2]) [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                  exchange [cardinality: 987.0, op-cost: 147.16, total-cost: 1147.16]
+                                                                  exchange [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    unnest-map [$$211, $$s2] <- index-search("supplier", 0, "Default", "tpch", "supplier", true, true, 1, $$210, 1, $$210, true, true, true) [cardinality: 987.0, op-cost: 1000.0, total-cost: 1000.0]
+                                                                    unnest-map [$$211, $$s2] <- index-search("supplier", 0, "Default", "tpch", "supplier", true, true, 1, $$210, 1, $$210, true, true, true) [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                                                                     -- BTREE_SEARCH  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        order (ASC, $$210) [cardinality: 987.0, op-cost: 1000.0, total-cost: 1000.0]
+                                                                        order (ASC, $$210) [cardinality: 987.0, doc-size: 10.0, op-cost: 1000.0, total-cost: 1000.0]
                                                                         -- STABLE_SORT [$$210(ASC)]  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                                                                            project ([$$208, $$210, $$213, $$244, $$200]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            project ([$$208, $$210, $$213, $$244, $$200]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- STREAM_PROJECT  |PARTITIONED|
-                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                join (eq($$207, $$209)) [cardinality: 150.8, op-cost: 80225.92, total-cost: 262744.94]
+                                                                                join (eq($$207, $$209)) [cardinality: 150.8, doc-size: 41.0, op-cost: 80225.92, total-cost: 262744.94]
                                                                                 -- HYBRID_HASH_JOIN [$$209][$$207]  |PARTITIONED|
-                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                    replicate [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                                                    replicate [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                                                     -- REPLICATE  |PARTITIONED|
-                                                                                      exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                                                      exchange [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        project ([$$208, $$210, $$209]) [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                                                        project ([$$208, $$210, $$209]) [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                                                         -- STREAM_PROJECT  |PARTITIONED|
-                                                                                          exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                                                          exchange [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 80000.0, op-cost: 80000.0, total-cost: 80000.0]
+                                                                                            data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                                                    left outer join (eq($$207, $$200)) [cardinality: 37.67, op-cost: 20169.33, total-cost: 102368.36]
+                                                                                    left outer join (eq($$207, $$200)) [cardinality: 37.67, doc-size: 31.0, op-cost: 20169.33, total-cost: 102368.36]
                                                                                     -- HYBRID_HASH_JOIN [$$207][$$200]  |PARTITIONED|
-                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        join (true) [cardinality: 20018.81, op-cost: 42039.51, total-cost: 62048.51]
+                                                                                        join (true) [cardinality: 20018.81, doc-size: 10.0, op-cost: 42039.51, total-cost: 62048.51]
                                                                                         -- NESTED_LOOP  |PARTITIONED|
-                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            project ([$$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            project ([$$207]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- STREAM_PROJECT  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                data-scan []<-[$$207, $$p2] <- tpch.part [cardinality: 20000.0, op-cost: 20000.0, total-cost: 20000.0]
+                                                                                                data-scan []<-[$$207, $$p2] <- tpch.part [cardinality: 20000.0, doc-size: 5.0, op-cost: 20000.0, total-cost: 20000.0]
                                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                                                            replicate [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                                                                                            replicate [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                                                             -- REPLICATE  |PARTITIONED|
-                                                                                              exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                                                                                              exchange [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                                                                                                select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                                                                 -- STREAM_SELECT  |PARTITIONED|
-                                                                                                  exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 5.0]
+                                                                                                  exchange [cardinality: 5.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 5.0, op-cost: 5.0, total-cost: 5.0]
+                                                                                                    data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 5.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                                                        select (and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) project: [$$244, $$200] [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0]
+                                                                                        select (and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) project: [$$244, $$200] [cardinality: 37.63, doc-size: 21.0, op-cost: 0.0, total-cost: 20000.0]
                                                                                         -- STREAM_SELECT  |PARTITIONED|
-                                                                                          assign [$$244] <- [$$p.getField(2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          assign [$$244] <- [$$p.getField(2)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- ASSIGN  |PARTITIONED|
-                                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                              data-scan []<-[$$200, $$p] <- tpch.part [cardinality: 20000.0, op-cost: 20000.0, total-cost: 20000.0]
+                                                                                              data-scan []<-[$$200, $$p] <- tpch.part [cardinality: 20000.0, doc-size: 21.0, op-cost: 20000.0, total-cost: 20000.0]
                                                                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                            exchange [cardinality: 25.0, op-cost: 25.0, total-cost: 50.0]
+                                                            exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                             -- HASH_PARTITION_EXCHANGE [$$218, $$212]  |PARTITIONED|
-                                                              assign [$$218] <- [$$n2.getField(2)] project: [$$218, $$212] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                                              assign [$$218] <- [$$n2.getField(2)] project: [$$218, $$212] [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                               -- ASSIGN  |PARTITIONED|
-                                                                exchange [cardinality: 25.0, op-cost: 25.0, total-cost: 50.0]
+                                                                exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  replicate [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                                                  replicate [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                                   -- REPLICATE  |PARTITIONED|
-                                                                    exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                                                    exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                                                      data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 78142.08, op-cost: 0.0, total-cost: 168971.26]
+                                        exchange [cardinality: 78142.08, doc-size: 147.18, op-cost: 0.0, total-cost: 168971.26]
                                         -- HASH_PARTITION_EXCHANGE [$$203]  |PARTITIONED|
-                                          project ([$$237, $$239, $$245, $$246, $$247, $$225, $$203, $$202]) [cardinality: 78142.08, op-cost: 0.0, total-cost: 168971.26]
+                                          project ([$$237, $$239, $$245, $$246, $$247, $$225, $$203, $$202]) [cardinality: 78142.08, doc-size: 147.18, op-cost: 0.0, total-cost: 168971.26]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 78142.08, op-cost: 0.0, total-cost: 168971.26]
+                                            exchange [cardinality: 78142.08, doc-size: 147.18, op-cost: 0.0, total-cost: 168971.26]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (eq($$201, $$204)) [cardinality: 78142.08, op-cost: 84023.26, total-cost: 168971.26]
+                                              join (eq($$201, $$204)) [cardinality: 78142.08, doc-size: 147.18, op-cost: 84023.26, total-cost: 168971.26]
                                               -- HYBRID_HASH_JOIN [$$204][$$201]  |PARTITIONED|
-                                                exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                exchange [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  assign [$$202, $$204, $$203] <- [$$208, $$210, $$209] project: [$$202, $$204, $$203] [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                  assign [$$202, $$204, $$203] <- [$$208, $$210, $$209] project: [$$202, $$204, $$203] [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                    exchange [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      replicate [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                      replicate [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                       -- REPLICATE  |PARTITIONED|
-                                                        exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                        exchange [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          project ([$$208, $$210, $$209]) [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                          project ([$$208, $$210, $$209]) [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                           -- STREAM_PROJECT  |PARTITIONED|
-                                                            exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+                                                            exchange [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 80000.0, op-cost: 80000.0, total-cost: 80000.0]
+                                                              data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 80000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 80000.0]
                                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 1000.0, op-cost: 3948.0, total-cost: 4948.0]
+                                                exchange [cardinality: 1000.0, doc-size: 142.18, op-cost: 0.0, total-cost: 1000.0]
                                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                  assign [$$247, $$246, $$245, $$237, $$239, $$225] <- [$$s.getField(6), $$s.getField(4), $$s.getField(2), $$s.getField(5), $$s.getField(1), $$s.getField(3)] project: [$$237, $$239, $$245, $$246, $$247, $$225, $$201] [cardinality: 1000.0, op-cost: 0.0, total-cost: 1000.0]
+                                                  assign [$$247, $$246, $$245, $$237, $$239, $$225] <- [$$s.getField(6), $$s.getField(4), $$s.getField(2), $$s.getField(5), $$s.getField(1), $$s.getField(3)] project: [$$237, $$239, $$245, $$246, $$247, $$225, $$201] [cardinality: 1000.0, doc-size: 142.18, op-cost: 0.0, total-cost: 1000.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 1000.0, op-cost: 3948.0, total-cost: 4948.0]
+                                                    exchange [cardinality: 1000.0, doc-size: 142.18, op-cost: 0.0, total-cost: 1000.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$201, $$s] <- tpch.supplier [cardinality: 1000.0, op-cost: 1000.0, total-cost: 1000.0]
+                                                      data-scan []<-[$$201, $$s] <- tpch.supplier [cardinality: 1000.0, doc-size: 142.18, op-cost: 0.0, total-cost: 1000.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                 -- HASH_PARTITION_EXCHANGE [$$205]  |PARTITIONED|
-                                  assign [$$238, $$221] <- [$$n.getField(1), $$n.getField(2)] project: [$$238, $$221, $$205] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                  assign [$$238, $$221] <- [$$n.getField(1), $$n.getField(2)] project: [$$238, $$221, $$205] [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    assign [$$205, $$n] <- [$$212, $$n2] project: [$$205, $$n] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                    assign [$$205, $$n] <- [$$212, $$n2] project: [$$205, $$n] [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                      exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        replicate [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                        replicate [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                         -- REPLICATE  |PARTITIONED|
-                                          exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                          exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                            data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                        exchange [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                         -- HASH_PARTITION_EXCHANGE [$$206]  |PARTITIONED|
-                          assign [$$206] <- [$$213] project: [$$206] [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                          assign [$$206] <- [$$213] project: [$$206] [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                            exchange [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              replicate [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                              replicate [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                               -- REPLICATE  |PARTITIONED|
-                                exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                                exchange [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                                  select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                   -- STREAM_SELECT  |PARTITIONED|
-                                    exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 5.0]
+                                    exchange [cardinality: 5.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 5.0, op-cost: 5.0, total-cost: 5.0]
+                                      data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 5.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.05.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.05.plan
index 14e91cb..bcc2234 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.05.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.05.plan
@@ -1,92 +1,92 @@
-distribute result [$$122] [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+distribute result [$$122] [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+  exchange [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 10 [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+    limit 10 [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$122] <- [{"$1": 3, "l_orderkey": $$l_orderkey, "revenue": $$134, "o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}] project: [$$122] [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+      assign [$$122] <- [{"$1": 3, "l_orderkey": $$l_orderkey, "revenue": $$134, "o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}] project: [$$122] [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+        exchange [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
         -- SORT_MERGE_EXCHANGE [$$134(DESC), $$o_orderdate(ASC) ]  |PARTITIONED|
-          limit 10 [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+          limit 10 [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+            exchange [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 10) (DESC, $$134) (ASC, $$o_orderdate) [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+              order (topK: 10) (DESC, $$134) (ASC, $$o_orderdate) [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
               -- STABLE_SORT [topK: 10] [$$134(DESC), $$o_orderdate(ASC)]  |PARTITIONED|
-                exchange [cardinality: 30577.54, op-cost: 0.0, total-cost: 1353253.2]
+                exchange [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   group by ([$$l_orderkey := $$142; $$o_orderdate := $$143; $$o_shippriority := $$144]) decor ([]) {
-                            aggregate [$$134] <- [global-sql-sum-serial($$141)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$134] <- [global-sql-sum-serial($$141)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 30577.54, op-cost: 30577.54, total-cost: 1353253.2]
+                         } [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1353253.2]
                   -- EXTERNAL_GROUP_BY[$$142, $$143, $$144]  |PARTITIONED|
-                    exchange [cardinality: 30577.54, op-cost: 0.0, total-cost: 1322675.66]
+                    exchange [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1322675.66]
                     -- HASH_PARTITION_EXCHANGE [$$142, $$143, $$144]  |PARTITIONED|
                       group by ([$$142 := $$131; $$143 := $$127; $$144 := $$125]) decor ([]) {
-                                aggregate [$$141] <- [local-sql-sum-serial(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$141] <- [local-sql-sum-serial(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 30577.54, op-cost: 30577.54, total-cost: 1322675.66]
+                             } [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1322675.66]
                       -- EXTERNAL_GROUP_BY[$$131, $$127, $$125]  |PARTITIONED|
-                        exchange [cardinality: 30577.54, op-cost: 0.0, total-cost: 1292098.12]
+                        exchange [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1292098.12]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$139, $$140, $$131, $$127, $$125]) [cardinality: 30577.54, op-cost: 0.0, total-cost: 1292098.12]
+                          project ([$$139, $$140, $$131, $$127, $$125]) [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1292098.12]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 30577.54, op-cost: 0.0, total-cost: 1292098.12]
+                            exchange [cardinality: 30577.54, doc-size: 20.0, op-cost: 0.0, total-cost: 1292098.12]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$131, $$129)) [cardinality: 30577.54, op-cost: 369779.81, total-cost: 1292098.12]
+                              join (eq($$131, $$129)) [cardinality: 30577.54, doc-size: 20.0, op-cost: 369779.81, total-cost: 1292098.12]
                               -- HYBRID_HASH_JOIN [$$131][$$129]  |PARTITIONED|
-                                exchange [cardinality: 310738.1, op-cost: 0.0, total-cost: 600572.0]
+                                exchange [cardinality: 310738.1, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  select (gt($$l.getField(10), "1995-03-22")) project: [$$139, $$140, $$131] [cardinality: 310738.1, op-cost: 0.0, total-cost: 600572.0]
+                                  select (gt($$l.getField(10), "1995-03-22")) project: [$$139, $$140, $$131] [cardinality: 310738.1, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                   -- STREAM_SELECT  |PARTITIONED|
-                                    assign [$$140, $$139] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                    assign [$$140, $$139] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 600572.0, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$131, $$l]) [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                      project ([$$131, $$l]) [cardinality: 600572.0, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                        exchange [cardinality: 600572.0, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$130, $$131, $$l] <- tpch.lineitem [cardinality: 600572.0, op-cost: 600572.0, total-cost: 600572.0]
+                                          data-scan []<-[$$130, $$131, $$l] <- tpch.lineitem [cardinality: 600572.0, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 14760.43, op-cost: 59041.71, total-cost: 321746.32]
+                                exchange [cardinality: 14760.43, doc-size: 15.0, op-cost: 0.0, total-cost: 262704.61]
                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                  project ([$$127, $$125, $$129]) [cardinality: 14760.43, op-cost: 0.0, total-cost: 262704.61]
+                                  project ([$$127, $$125, $$129]) [cardinality: 14760.43, doc-size: 15.0, op-cost: 0.0, total-cost: 262704.61]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 14760.43, op-cost: 59041.71, total-cost: 321746.32]
+                                    exchange [cardinality: 14760.43, doc-size: 15.0, op-cost: 0.0, total-cost: 262704.61]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$128, $$136)) [cardinality: 14760.43, op-cost: 85682.03, total-cost: 262704.61]
+                                      join (eq($$128, $$136)) [cardinality: 14760.43, doc-size: 15.0, op-cost: 85682.03, total-cost: 262704.61]
                                       -- HYBRID_HASH_JOIN [$$136][$$128]  |PARTITIONED|
-                                        exchange [cardinality: 73659.45, op-cost: 0.0, total-cost: 150000.0]
+                                        exchange [cardinality: 73659.45, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          select (lt($$127, "1995-03-22")) [cardinality: 73659.45, op-cost: 0.0, total-cost: 150000.0]
+                                          select (lt($$127, "1995-03-22")) [cardinality: 73659.45, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$125, $$136, $$127] <- [$$o.getField(7), $$o.getField(1), $$o.getField(4)] project: [$$129, $$125, $$136, $$127] [cardinality: 150000.0, op-cost: 0.0, total-cost: 150000.0]
+                                            assign [$$125, $$136, $$127] <- [$$o.getField(7), $$o.getField(1), $$o.getField(4)] project: [$$129, $$125, $$136, $$127] [cardinality: 150000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 150000.0, op-cost: 0.0, total-cost: 150000.0]
+                                              exchange [cardinality: 150000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$129, $$o] <- tpch.orders [cardinality: 150000.0, op-cost: 150000.0, total-cost: 150000.0]
+                                                data-scan []<-[$$129, $$o] <- tpch.orders [cardinality: 150000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 3005.64, op-cost: 12022.58, total-cost: 27022.58]
+                                        exchange [cardinality: 3005.64, doc-size: 5.0, op-cost: 0.0, total-cost: 15000.0]
                                         -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                          select (eq($$c.getField(6), "BUILDING")) project: [$$128] [cardinality: 3005.64, op-cost: 0.0, total-cost: 15000.0]
+                                          select (eq($$c.getField(6), "BUILDING")) project: [$$128] [cardinality: 3005.64, doc-size: 5.0, op-cost: 0.0, total-cost: 15000.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            exchange [cardinality: 15000.0, op-cost: 12022.58, total-cost: 27022.58]
+                                            exchange [cardinality: 15000.0, doc-size: 5.0, op-cost: 0.0, total-cost: 15000.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              data-scan []<-[$$128, $$c] <- tpch.customer [cardinality: 15000.0, op-cost: 15000.0, total-cost: 15000.0]
+                                              data-scan []<-[$$128, $$c] <- tpch.customer [cardinality: 15000.0, doc-size: 5.0, op-cost: 0.0, total-cost: 15000.0]
                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.06.plan
index e7c52a5..c246478 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.06.plan
@@ -1,92 +1,92 @@
-distribute result [$$74] [cardinality: 997.0, op-cost: 0.0, total-cost: 610643.36]
+distribute result [$$74] [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 997.0, op-cost: 0.0, total-cost: 610643.36]
+  exchange [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$74] <- [{"$1": 4, "o_orderpriority": $$o_orderpriority, "order_count": $$81}] project: [$$74] [cardinality: 997.0, op-cost: 0.0, total-cost: 610643.36]
+    assign [$$74] <- [{"$1": 4, "o_orderpriority": $$o_orderpriority, "order_count": $$81}] project: [$$74] [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 997.0, op-cost: 0.0, total-cost: 610643.36]
+      exchange [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
       -- SORT_MERGE_EXCHANGE [$$o_orderpriority(ASC) ]  |PARTITIONED|
         group by ([$$o_orderpriority := $$91]) decor ([]) {
-                  aggregate [$$81] <- [agg-sql-sum($$90)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$81] <- [agg-sql-sum($$90)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 610643.36]
+               } [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
         -- SORT_GROUP_BY[$$91]  |PARTITIONED|
-          exchange [cardinality: 997.0, op-cost: 0.0, total-cost: 610643.36]
+          exchange [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
           -- HASH_PARTITION_EXCHANGE [$$91]  |PARTITIONED|
             group by ([$$91 := $$75]) decor ([]) {
-                      aggregate [$$90] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$90] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 610643.36]
+                   } [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
             -- SORT_GROUP_BY[$$75]  |PARTITIONED|
-              exchange [cardinality: 997.0, op-cost: 0.0, total-cost: 610643.36]
+              exchange [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (neq($$80, 0)) project: [$$75] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (neq($$80, 0)) project: [$$75] [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
                 -- STREAM_SELECT  |PARTITIONED|
-                  project ([$$80, $$75]) [cardinality: 997.0, op-cost: 0.0, total-cost: 610643.36]
+                  project ([$$80, $$75]) [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 997.0, op-cost: 0.0, total-cost: 610643.36]
+                    exchange [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                       group by ([$$87 := $$89]) decor ([$$75]) {
-                                aggregate [$$80] <- [sum-serial($$88)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$80] <- [sum-serial($$88)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 997.0, op-cost: 15928.9, total-cost: 610643.36]
+                             } [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 610643.36]
                       -- EXTERNAL_GROUP_BY[$$89]  |PARTITIONED|
-                        exchange [cardinality: 997.0, op-cost: 0.0, total-cost: 594714.46]
+                        exchange [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 594714.46]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                           group by ([$$89 := $$77]) decor ([$$75]) {
-                                    aggregate [$$88] <- [agg-count({"l": $$l})] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$88] <- [agg-count({"l": $$l})] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
-                                      select (not(is-missing($$86))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      select (not(is-missing($$86))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_SELECT  |LOCAL|
-                                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                 } [cardinality: 997.0, op-cost: 222357.23, total-cost: 594714.46]
+                                 } [cardinality: 997.0, doc-size: 5.0, op-cost: 0.0, total-cost: 594714.46]
                           -- PRE_CLUSTERED_GROUP_BY[$$77]  |PARTITIONED|
-                            exchange [cardinality: 6349.95, op-cost: 0.0, total-cost: 372357.23]
+                            exchange [cardinality: 6349.95, doc-size: 5.0, op-cost: 0.0, total-cost: 372357.23]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              order (ASC, $$77) [cardinality: 6349.95, op-cost: 222357.23, total-cost: 372357.23]
+                              order (ASC, $$77) [cardinality: 6349.95, doc-size: 5.0, op-cost: 0.0, total-cost: 372357.23]
                               -- STABLE_SORT [$$77(ASC)]  |PARTITIONED|
-                                exchange [cardinality: 6349.95, op-cost: 0.0, total-cost: 150000.0]
+                                exchange [cardinality: 6349.95, doc-size: 5.0, op-cost: 0.0, total-cost: 150000.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$75, $$l, $$86, $$77]) [cardinality: 6349.95, op-cost: 0.0, total-cost: 150000.0]
+                                  project ([$$75, $$l, $$86, $$77]) [cardinality: 6349.95, doc-size: 5.0, op-cost: 0.0, total-cost: 150000.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 6349.95, op-cost: 0.0, total-cost: 150000.0]
+                                    exchange [cardinality: 6349.95, doc-size: 5.0, op-cost: 0.0, total-cost: 150000.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      left outer join (eq($$79, $$77)) [cardinality: 15928.9, op-cost: 382625.54, total-cost: 1515823.09]
+                                      left outer join (eq($$79, $$77)) [cardinality: 15928.9, doc-size: 10.0, op-cost: 382625.54, total-cost: 1515823.09]
                                       -- HYBRID_HASH_JOIN [$$77][$$79]  |PARTITIONED|
-                                        exchange [cardinality: 6349.95, op-cost: 0.0, total-cost: 150000.0]
+                                        exchange [cardinality: 6349.95, doc-size: 5.0, op-cost: 0.0, total-cost: 150000.0]
                                         -- HASH_PARTITION_EXCHANGE [$$77]  |PARTITIONED|
-                                          select (and(ge($$76, "1996-05-01"), lt($$76, "1996-08-01"))) project: [$$75, $$77] [cardinality: 6349.95, op-cost: 0.0, total-cost: 150000.0]
+                                          select (and(ge($$76, "1996-05-01"), lt($$76, "1996-08-01"))) project: [$$75, $$77] [cardinality: 6349.95, doc-size: 5.0, op-cost: 0.0, total-cost: 150000.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$75, $$76] <- [$$o.getField(5), $$o.getField(4)] project: [$$77, $$75, $$76] [cardinality: 150000.0, op-cost: 0.0, total-cost: 150000.0]
+                                            assign [$$75, $$76] <- [$$o.getField(5), $$o.getField(4)] project: [$$77, $$75, $$76] [cardinality: 150000.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150000.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 150000.0, op-cost: 0.0, total-cost: 150000.0]
+                                              exchange [cardinality: 150000.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150000.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$77, $$o] <- tpch.orders [cardinality: 150000.0, op-cost: 150000.0, total-cost: 150000.0]
+                                                data-scan []<-[$$77, $$o] <- tpch.orders [cardinality: 150000.0, doc-size: 5.0, op-cost: 0.0, total-cost: 150000.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
-                                          assign [$$86] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$86] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            select (lt($$l.getField(11), $$l.getField(12))) [cardinality: 376275.59, op-cost: 0.0, total-cost: 600572.0]
+                                            select (lt($$l.getField(11), $$l.getField(12))) [cardinality: 376275.59, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                             -- STREAM_SELECT  |PARTITIONED|
-                                              project ([$$79, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              project ([$$79, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$78, $$79, $$l] <- tpch.lineitem [cardinality: 600572.0, op-cost: 600572.0, total-cost: 600572.0]
+                                                  data-scan []<-[$$78, $$79, $$l] <- tpch.lineitem [cardinality: 600572.0, doc-size: 5.0, op-cost: 600572.0, total-cost: 600572.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.07.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.07.plan
index 033cd54..c7309eb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.07.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.07.plan
@@ -1,144 +1,144 @@
-distribute result [$$149] [cardinality: 25.0, op-cost: 0.0, total-cost: 1552822.75]
+distribute result [$$149] [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1552822.75]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1552822.75]
+  exchange [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1552822.75]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$149] <- [{"$1": 5, "n_name": $$n_name, "revenue": $$165}] project: [$$149] [cardinality: 25.0, op-cost: 0.0, total-cost: 1552822.75]
+    assign [$$149] <- [{"$1": 5, "n_name": $$n_name, "revenue": $$165}] project: [$$149] [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1552822.75]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1552822.75]
+      exchange [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1552822.75]
       -- SORT_MERGE_EXCHANGE [$$165(DESC) ]  |PARTITIONED|
-        order (DESC, $$165) [cardinality: 25.0, op-cost: 116.1, total-cost: 1552822.75]
+        order (DESC, $$165) [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1552822.75]
         -- STABLE_SORT [$$165(DESC)]  |PARTITIONED|
-          exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1552706.65]
+          exchange [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1552706.65]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
             group by ([$$n_name := $$176]) decor ([]) {
-                      aggregate [$$165] <- [global-sql-sum-serial($$175)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$165] <- [global-sql-sum-serial($$175)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 25.0, op-cost: 32681.0, total-cost: 1552706.65]
+                   } [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1552706.65]
             -- EXTERNAL_GROUP_BY[$$176]  |PARTITIONED|
-              exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1520025.65]
+              exchange [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1520025.65]
               -- HASH_PARTITION_EXCHANGE [$$176]  |PARTITIONED|
                 group by ([$$176 := $$150]) decor ([]) {
-                          aggregate [$$175] <- [local-sql-sum-serial(numeric-multiply($$173, numeric-subtract(1, $$174)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$175] <- [local-sql-sum-serial(numeric-multiply($$173, numeric-subtract(1, $$174)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 25.0, op-cost: 32681.0, total-cost: 1520025.65]
+                       } [cardinality: 25.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1520025.65]
                 -- EXTERNAL_GROUP_BY[$$150]  |PARTITIONED|
-                  exchange [cardinality: 32681.0, op-cost: 0.0, total-cost: 1487344.65]
+                  exchange [cardinality: 32681.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1487344.65]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$173, $$174, $$150]) [cardinality: 32681.0, op-cost: 0.0, total-cost: 1487344.65]
+                    project ([$$173, $$174, $$150]) [cardinality: 32681.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1487344.65]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 32681.0, op-cost: 0.0, total-cost: 1487344.65]
+                      exchange [cardinality: 32681.0, doc-size: 55.0, op-cost: 0.0, total-cost: 1487344.65]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (and(eq($$154, $$160), eq($$170, $$159))) [cardinality: 32681.0, op-cost: 21059.51, total-cost: 1487344.65]
+                        join (and(eq($$154, $$160), eq($$170, $$159))) [cardinality: 32681.0, doc-size: 55.0, op-cost: 21059.51, total-cost: 1487344.65]
                         -- HYBRID_HASH_JOIN [$$160, $$170][$$154, $$159]  |PARTITIONED|
-                          exchange [cardinality: 17111.51, op-cost: 0.0, total-cost: 1461337.14]
+                          exchange [cardinality: 17111.51, doc-size: 45.0, op-cost: 0.0, total-cost: 1461337.14]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$173, $$174, $$150, $$160, $$170]) [cardinality: 17111.51, op-cost: 0.0, total-cost: 1461337.14]
+                            project ([$$173, $$174, $$150, $$160, $$170]) [cardinality: 17111.51, doc-size: 45.0, op-cost: 0.0, total-cost: 1461337.14]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 17111.51, op-cost: 0.0, total-cost: 1461337.14]
+                              exchange [cardinality: 17111.51, doc-size: 45.0, op-cost: 0.0, total-cost: 1461337.14]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                join (eq($$158, $$156)) [cardinality: 17111.51, op-cost: 618216.11, total-cost: 1461337.14]
+                                join (eq($$158, $$156)) [cardinality: 17111.51, doc-size: 45.0, op-cost: 618216.11, total-cost: 1461337.14]
                                 -- HYBRID_HASH_JOIN [$$158][$$156]  |PARTITIONED|
-                                  exchange [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                  exchange [cardinality: 600572.0, doc-size: 10.0, op-cost: 0.0, total-cost: 600572.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    assign [$$174, $$173, $$170] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$173, $$174, $$170, $$158] [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                    assign [$$174, $$173, $$170] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$173, $$174, $$170, $$158] [cardinality: 600572.0, doc-size: 10.0, op-cost: 0.0, total-cost: 600572.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$158, $$l]) [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                      project ([$$158, $$l]) [cardinality: 600572.0, doc-size: 10.0, op-cost: 0.0, total-cost: 600572.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                        exchange [cardinality: 600572.0, doc-size: 10.0, op-cost: 0.0, total-cost: 600572.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$157, $$158, $$l] <- tpch.lineitem [cardinality: 600572.0, op-cost: 600572.0, total-cost: 600572.0]
+                                          data-scan []<-[$$157, $$158, $$l] <- tpch.lineitem [cardinality: 600572.0, doc-size: 10.0, op-cost: 0.0, total-cost: 600572.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  exchange [cardinality: 4269.78, op-cost: 17079.13, total-cost: 242549.04]
+                                  exchange [cardinality: 4269.78, doc-size: 35.0, op-cost: 0.0, total-cost: 225469.91]
                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                    project ([$$150, $$160, $$156]) [cardinality: 4269.78, op-cost: 0.0, total-cost: 225469.91]
+                                    project ([$$150, $$160, $$156]) [cardinality: 4269.78, doc-size: 35.0, op-cost: 0.0, total-cost: 225469.91]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 4269.78, op-cost: 17079.13, total-cost: 242549.04]
+                                      exchange [cardinality: 4269.78, doc-size: 35.0, op-cost: 0.0, total-cost: 225469.91]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        join (eq($$155, $$167)) [cardinality: 4269.78, op-cost: 33330.21, total-cost: 225469.91]
+                                        join (eq($$155, $$167)) [cardinality: 4269.78, doc-size: 35.0, op-cost: 33330.21, total-cost: 225469.91]
                                         -- HYBRID_HASH_JOIN [$$167][$$155]  |PARTITIONED|
-                                          exchange [cardinality: 21307.62, op-cost: 0.0, total-cost: 150000.0]
+                                          exchange [cardinality: 21307.62, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            select (and(ge($$151, "1993-01-01"), lt($$151, "1994-01-01"))) project: [$$156, $$167] [cardinality: 21307.62, op-cost: 0.0, total-cost: 150000.0]
+                                            select (and(ge($$151, "1993-01-01"), lt($$151, "1994-01-01"))) project: [$$156, $$167] [cardinality: 21307.62, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                             -- STREAM_SELECT  |PARTITIONED|
-                                              assign [$$167, $$151] <- [$$o.getField(1), $$o.getField(4)] project: [$$156, $$167, $$151] [cardinality: 150000.0, op-cost: 0.0, total-cost: 150000.0]
+                                              assign [$$167, $$151] <- [$$o.getField(1), $$o.getField(4)] project: [$$156, $$167, $$151] [cardinality: 150000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 150000.0, op-cost: 0.0, total-cost: 150000.0]
+                                                exchange [cardinality: 150000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$156, $$o] <- tpch.orders [cardinality: 150000.0, op-cost: 150000.0, total-cost: 150000.0]
+                                                  data-scan []<-[$$156, $$o] <- tpch.orders [cardinality: 150000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                          exchange [cardinality: 3005.65, op-cost: 12022.59, total-cost: 42139.7]
+                                          exchange [cardinality: 3005.65, doc-size: 25.0, op-cost: 0.0, total-cost: 30117.11]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            project ([$$150, $$160, $$155]) [cardinality: 3005.65, op-cost: 0.0, total-cost: 30117.11]
+                                            project ([$$150, $$160, $$155]) [cardinality: 3005.65, doc-size: 25.0, op-cost: 0.0, total-cost: 30117.11]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 3005.65, op-cost: 12022.59, total-cost: 42139.7]
+                                              exchange [cardinality: 3005.65, doc-size: 25.0, op-cost: 0.0, total-cost: 30117.11]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                join (eq($$153, $$160)) [cardinality: 3005.65, op-cost: 15034.11, total-cost: 30117.11]
+                                                join (eq($$153, $$160)) [cardinality: 3005.65, doc-size: 25.0, op-cost: 15034.11, total-cost: 30117.11]
                                                 -- HYBRID_HASH_JOIN [$$153][$$160]  |PARTITIONED|
-                                                  exchange [cardinality: 15000.0, op-cost: 0.0, total-cost: 15000.0]
+                                                  exchange [cardinality: 15000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    assign [$$153] <- [$$c.getField(3)] project: [$$155, $$153] [cardinality: 15000.0, op-cost: 0.0, total-cost: 15000.0]
+                                                    assign [$$153] <- [$$c.getField(3)] project: [$$155, $$153] [cardinality: 15000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      exchange [cardinality: 15000.0, op-cost: 0.0, total-cost: 15000.0]
+                                                      exchange [cardinality: 15000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan []<-[$$155, $$c] <- tpch.customer [cardinality: 15000.0, op-cost: 15000.0, total-cost: 15000.0]
+                                                        data-scan []<-[$$155, $$c] <- tpch.customer [cardinality: 15000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                  exchange [cardinality: 5.0, op-cost: 20.0, total-cost: 83.0]
+                                                  exchange [cardinality: 5.0, doc-size: 15.0, op-cost: 0.0, total-cost: 63.0]
                                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                    project ([$$150, $$160]) [cardinality: 5.0, op-cost: 0.0, total-cost: 63.0]
+                                                    project ([$$150, $$160]) [cardinality: 5.0, doc-size: 15.0, op-cost: 0.0, total-cost: 63.0]
                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                      exchange [cardinality: 5.0, op-cost: 20.0, total-cost: 83.0]
+                                                      exchange [cardinality: 5.0, doc-size: 15.0, op-cost: 0.0, total-cost: 63.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        join (eq($$163, $$161)) [cardinality: 5.0, op-cost: 29.0, total-cost: 63.0]
+                                                        join (eq($$163, $$161)) [cardinality: 5.0, doc-size: 15.0, op-cost: 29.0, total-cost: 63.0]
                                                         -- HYBRID_HASH_JOIN [$$163][$$161]  |PARTITIONED|
-                                                          exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                                          exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            assign [$$150, $$163] <- [$$n.getField(1), $$n.getField(2)] project: [$$150, $$160, $$163] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                                            assign [$$150, $$163] <- [$$n.getField(1), $$n.getField(2)] project: [$$150, $$160, $$163] [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                                              exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$160, $$n] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                                                data-scan []<-[$$160, $$n] <- tpch.nation [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 9.0]
+                                                          exchange [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                            select (eq($$r.getField(1), "AFRICA")) project: [$$161] [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                                                            select (eq($$r.getField(1), "AFRICA")) project: [$$161] [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                              exchange [cardinality: 5.0, op-cost: 4.0, total-cost: 9.0]
+                                                              exchange [cardinality: 5.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$161, $$r] <- tpch.region [cardinality: 5.0, op-cost: 5.0, total-cost: 5.0]
+                                                                data-scan []<-[$$161, $$r] <- tpch.region [cardinality: 5.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 1000.0, op-cost: 3948.0, total-cost: 4948.0]
+                          exchange [cardinality: 1000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                            assign [$$154] <- [$$s.getField(3)] project: [$$154, $$159] [cardinality: 1000.0, op-cost: 0.0, total-cost: 1000.0]
+                            assign [$$154] <- [$$s.getField(3)] project: [$$154, $$159] [cardinality: 1000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 1000.0, op-cost: 3948.0, total-cost: 4948.0]
+                              exchange [cardinality: 1000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$159, $$s] <- tpch.supplier [cardinality: 1000.0, op-cost: 1000.0, total-cost: 1000.0]
+                                data-scan []<-[$$159, $$s] <- tpch.supplier [cardinality: 1000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.08.plan
index 0c0f2e9..e48a4c1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.08.plan
@@ -1,148 +1,148 @@
-distribute result [$$186] [cardinality: 2.52, op-cost: 0.0, total-cost: 981839.91]
+distribute result [$$186] [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981839.91]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.52, op-cost: 0.0, total-cost: 981839.91]
+  exchange [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981839.91]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$186] <- [{"$1": 7, "supp_nation": $$supp_nation, "cust_nation": $$cust_nation, "l_year": $$l_year, "revenue": $$200}] project: [$$186] [cardinality: 2.52, op-cost: 0.0, total-cost: 981839.91]
+    assign [$$186] <- [{"$1": 7, "supp_nation": $$supp_nation, "cust_nation": $$cust_nation, "l_year": $$l_year, "revenue": $$200}] project: [$$186] [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981839.91]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.52, op-cost: 0.0, total-cost: 981839.91]
+      exchange [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981839.91]
       -- SORT_MERGE_EXCHANGE [$$supp_nation(ASC), $$cust_nation(ASC), $$l_year(ASC) ]  |PARTITIONED|
-        order (ASC, $$supp_nation) (ASC, $$cust_nation) (ASC, $$l_year) [cardinality: 2.52, op-cost: 3.36, total-cost: 981839.91]
+        order (ASC, $$supp_nation) (ASC, $$cust_nation) (ASC, $$l_year) [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981839.91]
         -- STABLE_SORT [$$supp_nation(ASC), $$cust_nation(ASC), $$l_year(ASC)]  |PARTITIONED|
-          exchange [cardinality: 2.52, op-cost: 0.0, total-cost: 981836.55]
+          exchange [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981836.55]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
             group by ([$$supp_nation := $$217; $$cust_nation := $$218; $$l_year := $$219]) decor ([]) {
-                      aggregate [$$200] <- [global-sql-sum-serial($$216)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$200] <- [global-sql-sum-serial($$216)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 2.52, op-cost: 552.41, total-cost: 981836.55]
+                   } [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981836.55]
             -- EXTERNAL_GROUP_BY[$$217, $$218, $$219]  |PARTITIONED|
-              exchange [cardinality: 2.52, op-cost: 0.0, total-cost: 981284.14]
+              exchange [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981284.14]
               -- HASH_PARTITION_EXCHANGE [$$217, $$218, $$219]  |PARTITIONED|
                 group by ([$$217 := $$191; $$218 := $$192; $$219 := $$214]) decor ([]) {
-                          aggregate [$$216] <- [local-sql-sum-serial($$184)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$216] <- [local-sql-sum-serial($$184)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 2.52, op-cost: 552.41, total-cost: 981284.14]
+                       } [cardinality: 2.52, doc-size: 68.16, op-cost: 0.0, total-cost: 981284.14]
                 -- EXTERNAL_GROUP_BY[$$191, $$192, $$214]  |PARTITIONED|
-                  exchange [cardinality: 552.41, op-cost: 0.0, total-cost: 980731.73]
+                  exchange [cardinality: 552.41, doc-size: 68.16, op-cost: 0.0, total-cost: 980731.73]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    assign [$$184, $$214] <- [numeric-multiply($$211, numeric-subtract(1, $$212)), get-year(date($$190))] project: [$$184, $$191, $$192, $$214] [cardinality: 552.41, op-cost: 0.0, total-cost: 980731.73]
+                    assign [$$184, $$214] <- [numeric-multiply($$211, numeric-subtract(1, $$212)), get-year(date($$190))] project: [$$184, $$191, $$192, $$214] [cardinality: 552.41, doc-size: 68.16, op-cost: 0.0, total-cost: 980731.73]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$191, $$192, $$211, $$212, $$190]) [cardinality: 552.41, op-cost: 0.0, total-cost: 980731.73]
+                      project ([$$191, $$192, $$211, $$212, $$190]) [cardinality: 552.41, doc-size: 68.16, op-cost: 0.0, total-cost: 980731.73]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 552.41, op-cost: 0.0, total-cost: 980731.73]
+                        exchange [cardinality: 552.41, doc-size: 68.16, op-cost: 0.0, total-cost: 980731.73]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          join (and(eq($$201, $$199), eq($$197, $$210))) [cardinality: 552.41, op-cost: 28797.6, total-cost: 980731.73]
+                          join (and(eq($$201, $$199), eq($$197, $$210))) [cardinality: 552.41, doc-size: 68.16, op-cost: 28797.6, total-cost: 980731.73]
                           -- HYBRID_HASH_JOIN [$$199, $$210][$$201, $$197]  |PARTITIONED|
-                            exchange [cardinality: 150141.11, op-cost: 13783.49, total-cost: 163783.49]
+                            exchange [cardinality: 150141.11, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                             -- HASH_PARTITION_EXCHANGE [$$199, $$210]  |PARTITIONED|
-                              assign [$$210] <- [$$o.getField(1)] project: [$$191, $$192, $$211, $$212, $$190, $$199, $$210] [cardinality: 150141.11, op-cost: 0.0, total-cost: 150000.0]
+                              assign [$$210] <- [$$o.getField(1)] project: [$$191, $$192, $$211, $$212, $$190, $$199, $$210] [cardinality: 150141.11, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                               -- ASSIGN  |PARTITIONED|
-                                project ([$$212, $$211, $$190, $$191, $$192, $$199, $$o]) [cardinality: 150141.11, op-cost: 0.0, total-cost: 150000.0]
+                                project ([$$212, $$211, $$190, $$191, $$192, $$199, $$o]) [cardinality: 150141.11, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 150141.11, op-cost: 13783.49, total-cost: 163783.49]
+                                  exchange [cardinality: 150141.11, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    unnest-map [$$196, $$o] <- index-search("orders", 0, "Default", "tpch", "orders", true, true, 1, $$195, 1, $$195, true, true, true) [cardinality: 150141.11, op-cost: 150000.0, total-cost: 150000.0]
+                                    unnest-map [$$196, $$o] <- index-search("orders", 0, "Default", "tpch", "orders", true, true, 1, $$195, 1, $$195, true, true, true) [cardinality: 150141.11, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                     -- BTREE_SEARCH  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        order (ASC, $$195) [cardinality: 150141.11, op-cost: 150000.0, total-cost: 150000.0]
+                                        order (ASC, $$195) [cardinality: 150141.11, doc-size: 10.0, op-cost: 150000.0, total-cost: 150000.0]
                                         -- STABLE_SORT [$$195(ASC)]  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$195]  |PARTITIONED|
-                                            project ([$$195, $$212, $$211, $$190, $$191, $$192, $$199]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$195, $$212, $$211, $$190, $$191, $$192, $$199]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                join (eq($$193, $$204)) [cardinality: 13770.52, op-cost: 180539.58, total-cost: 784201.87]
+                                                join (eq($$193, $$204)) [cardinality: 13770.52, doc-size: 48.16, op-cost: 180539.58, total-cost: 784201.87]
                                                 -- HYBRID_HASH_JOIN [$$204][$$193]  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    select (and(ge($$190, "1995-01-01"), le($$190, "1996-12-31"))) [cardinality: 180228.1, op-cost: 0.0, total-cost: 600572.0]
+                                                    select (and(ge($$190, "1995-01-01"), le($$190, "1996-12-31"))) [cardinality: 180228.1, doc-size: 10.0, op-cost: 0.0, total-cost: 600572.0]
                                                     -- STREAM_SELECT  |PARTITIONED|
-                                                      assign [$$212, $$211, $$204, $$190] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(10)] project: [$$195, $$212, $$211, $$204, $$190] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      assign [$$212, $$211, $$204, $$190] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(10)] project: [$$195, $$212, $$211, $$204, $$190] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ASSIGN  |PARTITIONED|
-                                                        project ([$$195, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        project ([$$195, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- STREAM_PROJECT  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            data-scan []<-[$$194, $$195, $$l] <- tpch.lineitem [cardinality: 600572.0, op-cost: 600572.0, total-cost: 600572.0]
+                                                            data-scan []<-[$$194, $$195, $$l] <- tpch.lineitem [cardinality: 600572.0, doc-size: 10.0, op-cost: 600572.0, total-cost: 600572.0]
                                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                    project ([$$191, $$192, $$199, $$193]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    project ([$$191, $$192, $$199, $$193]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        join (eq($$205, $$198)) [cardinality: 77.87, op-cost: 995.4, total-cost: 2778.8]
+                                                        join (eq($$205, $$198)) [cardinality: 77.87, doc-size: 38.16, op-cost: 995.4, total-cost: 2778.8]
                                                         -- HYBRID_HASH_JOIN [$$205][$$198]  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            assign [$$205] <- [$$s.getField(3)] project: [$$193, $$205] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$205] <- [$$s.getField(3)] project: [$$193, $$205] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$193, $$s] <- tpch.supplier [cardinality: 1000.0, op-cost: 1000.0, total-cost: 1000.0]
+                                                                data-scan []<-[$$193, $$s] <- tpch.supplier [cardinality: 1000.0, doc-size: 10.0, op-cost: 1000.0, total-cost: 1000.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                            join (or(and(eq($$191, "KENYA"), eq($$192, "PERU")), and(eq($$191, "PERU"), eq($$192, "KENYA")))) [cardinality: 2.1, op-cost: 625.0, total-cost: 775.0]
+                                                            join (or(and(eq($$191, "KENYA"), eq($$192, "PERU")), and(eq($$191, "PERU"), eq($$192, "KENYA")))) [cardinality: 2.1, doc-size: 28.16, op-cost: 625.0, total-cost: 775.0]
                                                             -- NESTED_LOOP  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                assign [$$191, $$198] <- [$$192, $$199] project: [$$191, $$198] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                assign [$$191, $$198] <- [$$192, $$199] project: [$$191, $$198] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ASSIGN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- REPLICATE  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        assign [$$192] <- [$$n2.getField(1)] project: [$$192, $$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        assign [$$192] <- [$$n2.getField(1)] project: [$$192, $$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ASSIGN  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            data-scan []<-[$$199, $$n2] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                                                            data-scan []<-[$$199, $$n2] <- tpch.nation [cardinality: 25.0, doc-size: 14.08, op-cost: 25.0, total-cost: 25.0]
                                                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                                replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- REPLICATE  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    assign [$$192] <- [$$n2.getField(1)] project: [$$192, $$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    assign [$$192] <- [$$n2.getField(1)] project: [$$192, $$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ASSIGN  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        data-scan []<-[$$199, $$n2] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                                                        data-scan []<-[$$199, $$n2] <- tpch.nation [cardinality: 25.0, doc-size: 14.08, op-cost: 25.0, total-cost: 25.0]
                                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            exchange [cardinality: 15000.0, op-cost: 15014.11, total-cost: 30014.11]
+                            exchange [cardinality: 15000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                             -- HASH_PARTITION_EXCHANGE [$$201, $$197]  |PARTITIONED|
-                              assign [$$201] <- [$$c.getField(3)] project: [$$201, $$197] [cardinality: 15000.0, op-cost: 0.0, total-cost: 15000.0]
+                              assign [$$201] <- [$$c.getField(3)] project: [$$201, $$197] [cardinality: 15000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                               -- ASSIGN  |PARTITIONED|
-                                exchange [cardinality: 15000.0, op-cost: 15014.11, total-cost: 30014.11]
+                                exchange [cardinality: 15000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan []<-[$$197, $$c] <- tpch.customer [cardinality: 15000.0, op-cost: 15000.0, total-cost: 15000.0]
+                                  data-scan []<-[$$197, $$c] <- tpch.customer [cardinality: 15000.0, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan
index e8a97fa..daa0f04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan
@@ -1,170 +1,170 @@
-distribute result [$$199] [cardinality: 2.0, op-cost: 0.0, total-cost: 1258937.81]
+distribute result [$$199] [cardinality: 2.0, doc-size: 70.0, op-cost: 0.0, total-cost: 1258937.81]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1258937.81]
+  exchange [cardinality: 2.0, doc-size: 70.0, op-cost: 0.0, total-cost: 1258937.81]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$199] <- [{"$1": 8, "o_year": $$o_year, "mkt_share": numeric-divide($$214, $$215)}] project: [$$199] [cardinality: 2.0, op-cost: 0.0, total-cost: 1258937.81]
+    assign [$$199] <- [{"$1": 8, "o_year": $$o_year, "mkt_share": numeric-divide($$214, $$215)}] project: [$$199] [cardinality: 2.0, doc-size: 70.0, op-cost: 0.0, total-cost: 1258937.81]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1258937.81]
+      exchange [cardinality: 2.0, doc-size: 70.0, op-cost: 0.0, total-cost: 1258937.81]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$$o_year := $$238]) decor ([]) {
-                  aggregate [$$214, $$215] <- [global-sql-sum-serial($$236), global-sql-sum-serial($$237)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$214, $$215] <- [global-sql-sum-serial($$236), global-sql-sum-serial($$237)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 2.0, op-cost: 160.49, total-cost: 1258937.81]
+               } [cardinality: 2.0, doc-size: 70.0, op-cost: 0.0, total-cost: 1258937.81]
         -- EXTERNAL_GROUP_BY[$$238]  |PARTITIONED|
-          exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1258777.32]
+          exchange [cardinality: 2.0, doc-size: 70.0, op-cost: 0.0, total-cost: 1258777.32]
           -- HASH_PARTITION_EXCHANGE [$$238]  |PARTITIONED|
             group by ([$$238 := $$200]) decor ([]) {
-                      aggregate [$$236, $$237] <- [local-sql-sum-serial(switch-case(true, eq($$232, "PERU"), numeric-multiply($$230, numeric-subtract(1, $$231)), 0)), local-sql-sum-serial(numeric-multiply($$230, numeric-subtract(1, $$231)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$236, $$237] <- [local-sql-sum-serial(switch-case(true, eq($$232, "PERU"), numeric-multiply($$230, numeric-subtract(1, $$231)), 0)), local-sql-sum-serial(numeric-multiply($$230, numeric-subtract(1, $$231)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 2.0, op-cost: 160.49, total-cost: 1258777.32]
+                   } [cardinality: 2.0, doc-size: 70.0, op-cost: 0.0, total-cost: 1258777.32]
             -- EXTERNAL_GROUP_BY[$$200]  |PARTITIONED|
-              exchange [cardinality: 160.49, op-cost: 0.0, total-cost: 1258616.83]
+              exchange [cardinality: 160.49, doc-size: 70.0, op-cost: 0.0, total-cost: 1258616.83]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$200] <- [get-year(date($$201))] project: [$$232, $$230, $$231, $$200] [cardinality: 160.49, op-cost: 0.0, total-cost: 1258616.83]
+                assign [$$200] <- [get-year(date($$201))] project: [$$232, $$230, $$231, $$200] [cardinality: 160.49, doc-size: 70.0, op-cost: 0.0, total-cost: 1258616.83]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$230, $$231, $$201, $$232]) [cardinality: 160.49, op-cost: 0.0, total-cost: 1258616.83]
+                  project ([$$230, $$231, $$201, $$232]) [cardinality: 160.49, doc-size: 70.0, op-cost: 0.0, total-cost: 1258616.83]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 160.49, op-cost: 0.0, total-cost: 1258616.83]
+                    exchange [cardinality: 160.49, doc-size: 70.0, op-cost: 0.0, total-cost: 1258616.83]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$216, $$209)) [cardinality: 160.49, op-cost: 262.6, total-cost: 1258616.83]
+                      join (eq($$216, $$209)) [cardinality: 160.49, doc-size: 70.0, op-cost: 262.6, total-cost: 1258616.83]
                       -- HYBRID_HASH_JOIN [$$216][$$209]  |PARTITIONED|
-                        exchange [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0]
+                        exchange [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          assign [$$216] <- [$$s.getField(3)] project: [$$230, $$231, $$201, $$216] [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0]
+                          assign [$$216] <- [$$s.getField(3)] project: [$$230, $$231, $$201, $$216] [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                           -- ASSIGN  |PARTITIONED|
-                            project ([$$230, $$231, $$201, $$s]) [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0]
+                            project ([$$230, $$231, $$201, $$s]) [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0]
+                              exchange [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                unnest-map [$$203, $$s] <- index-search("supplier", 0, "Default", "tpch", "supplier", true, true, 1, $$223, 1, $$223, true, true, true) [cardinality: 987.0, op-cost: 1000.0, total-cost: 1000.0]
+                                unnest-map [$$203, $$s] <- index-search("supplier", 0, "Default", "tpch", "supplier", true, true, 1, $$223, 1, $$223, true, true, true) [cardinality: 987.0, doc-size: 10.0, op-cost: 0.0, total-cost: 1000.0]
                                 -- BTREE_SEARCH  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    order (ASC, $$223) [cardinality: 987.0, op-cost: 1000.0, total-cost: 1000.0]
+                                    order (ASC, $$223) [cardinality: 987.0, doc-size: 10.0, op-cost: 1000.0, total-cost: 1000.0]
                                     -- STABLE_SORT [$$223(ASC)]  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HASH_PARTITION_EXCHANGE [$$223]  |PARTITIONED|
-                                        project ([$$230, $$231, $$201, $$223]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        project ([$$230, $$231, $$201, $$223]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- STREAM_PROJECT  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            join (and(eq($$212, $$210), eq($$218, $$208))) [cardinality: 167.9, op-cost: 938.74, total-cost: 1256721.24]
+                                            join (and(eq($$212, $$210), eq($$218, $$208))) [cardinality: 167.9, doc-size: 55.0, op-cost: 938.74, total-cost: 1256721.24]
                                             -- HYBRID_HASH_JOIN [$$210, $$218][$$212, $$208]  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                assign [$$218] <- [$$c.getField(3)] project: [$$230, $$231, $$201, $$223, $$210, $$218] [cardinality: 838.74, op-cost: 4189.55, total-cost: 1255657.5]
+                                                assign [$$218] <- [$$c.getField(3)] project: [$$230, $$231, $$201, $$223, $$210, $$218] [cardinality: 838.74, doc-size: 45.0, op-cost: 4189.55, total-cost: 1255657.5]
                                                 -- ASSIGN  |PARTITIONED|
-                                                  project ([$$230, $$231, $$223, $$210, $$201, $$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  project ([$$230, $$231, $$223, $$210, $$201, $$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      unnest-map [$$207, $$c] <- index-search("customer", 0, "Default", "tpch", "customer", true, true, 1, $$226, 1, $$226, true, true, true) [cardinality: 15014.11, op-cost: 15000.0, total-cost: 15000.0]
+                                                      unnest-map [$$207, $$c] <- index-search("customer", 0, "Default", "tpch", "customer", true, true, 1, $$226, 1, $$226, true, true, true) [cardinality: 15014.11, doc-size: 10.0, op-cost: 15000.0, total-cost: 15000.0]
                                                       -- BTREE_SEARCH  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          order (ASC, $$226) [cardinality: 15014.11, op-cost: 15000.0, total-cost: 15000.0]
+                                                          order (ASC, $$226) [cardinality: 15014.11, doc-size: 10.0, op-cost: 15000.0, total-cost: 15000.0]
                                                           -- STABLE_SORT [$$226(ASC)]  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- HASH_PARTITION_EXCHANGE [$$226]  |PARTITIONED|
-                                                              select (and(ge($$201, "1995-01-01"), le($$201, "1996-12-31"))) [cardinality: 837.9, op-cost: 14137.91, total-cost: 1248116.35]
+                                                              select (and(ge($$201, "1995-01-01"), le($$201, "1996-12-31"))) [cardinality: 837.9, doc-size: 35.0, op-cost: 14137.91, total-cost: 1248116.35]
                                                               -- STREAM_SELECT  |PARTITIONED|
-                                                                assign [$$226, $$201] <- [$$o.getField(1), $$o.getField(4)] project: [$$230, $$231, $$223, $$210, $$226, $$201] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                assign [$$226, $$201] <- [$$o.getField(1), $$o.getField(4)] project: [$$230, $$231, $$223, $$210, $$226, $$201] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ASSIGN  |PARTITIONED|
-                                                                  project ([$$230, $$231, $$223, $$210, $$o]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  project ([$$230, $$231, $$223, $$210, $$o]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      unnest-map [$$206, $$o] <- index-search("orders", 0, "Default", "tpch", "orders", true, true, 1, $$205, 1, $$205, true, true, true) [cardinality: 44449.67, op-cost: 150000.0, total-cost: 150000.0]
+                                                                      unnest-map [$$206, $$o] <- index-search("orders", 0, "Default", "tpch", "orders", true, true, 1, $$205, 1, $$205, true, true, true) [cardinality: 44449.67, doc-size: 10.0, op-cost: 150000.0, total-cost: 150000.0]
                                                                       -- BTREE_SEARCH  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          order (ASC, $$205) [cardinality: 44449.67, op-cost: 150000.0, total-cost: 150000.0]
+                                                                          order (ASC, $$205) [cardinality: 44449.67, doc-size: 10.0, op-cost: 150000.0, total-cost: 150000.0]
                                                                           -- STABLE_SORT [$$205(ASC)]  |PARTITIONED|
-                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- HASH_PARTITION_EXCHANGE [$$205]  |PARTITIONED|
-                                                                              project ([$$230, $$231, $$223, $$205, $$210]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              project ([$$230, $$231, $$223, $$205, $$210]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- STREAM_PROJECT  |PARTITIONED|
-                                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                  join (eq($$202, $$221)) [cardinality: 2827.58, op-cost: 601513.27, total-cost: 1222668.12]
+                                                                                  join (eq($$202, $$221)) [cardinality: 2827.58, doc-size: 25.0, op-cost: 601513.27, total-cost: 1222668.12]
                                                                                   -- HYBRID_HASH_JOIN [$$221][$$202]  |PARTITIONED|
-                                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                      assign [$$231, $$230, $$223, $$221] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(1)] project: [$$230, $$231, $$223, $$205, $$221] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      assign [$$231, $$230, $$223, $$221] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(1)] project: [$$230, $$231, $$223, $$205, $$221] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- ASSIGN  |PARTITIONED|
-                                                                                        project ([$$205, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        project ([$$205, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- STREAM_PROJECT  |PARTITIONED|
-                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            data-scan []<-[$$204, $$205, $$l] <- tpch.lineitem [cardinality: 600572.0, op-cost: 600572.0, total-cost: 600572.0]
+                                                                                            data-scan []<-[$$204, $$205, $$l] <- tpch.lineitem [cardinality: 600572.0, doc-size: 15.0, op-cost: 600572.0, total-cost: 600572.0]
                                                                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                                                      join (true) [cardinality: 94.07, op-cost: 197.55, total-cost: 20206.55]
+                                                                                      join (true) [cardinality: 94.07, doc-size: 10.0, op-cost: 197.55, total-cost: 20206.55]
                                                                                       -- NESTED_LOOP  |PARTITIONED|
-                                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                          select (eq($$p.getField(4), "ECONOMY BURNISHED NICKEL")) project: [$$202] [cardinality: 94.07, op-cost: 0.0, total-cost: 20000.0]
+                                                                                          select (eq($$p.getField(4), "ECONOMY BURNISHED NICKEL")) project: [$$202] [cardinality: 94.07, doc-size: 5.0, op-cost: 0.0, total-cost: 20000.0]
                                                                                           -- STREAM_SELECT  |PARTITIONED|
-                                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                              data-scan []<-[$$202, $$p] <- tpch.part [cardinality: 20000.0, op-cost: 20000.0, total-cost: 20000.0]
+                                                                                              data-scan []<-[$$202, $$p] <- tpch.part [cardinality: 20000.0, doc-size: 5.0, op-cost: 20000.0, total-cost: 20000.0]
                                                                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                                                          select (eq($$r.getField(1), "AMERICA")) project: [$$210] [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+                                                                                          select (eq($$r.getField(1), "AMERICA")) project: [$$210] [cardinality: 1.0, doc-size: 5.0, op-cost: 0.0, total-cost: 5.0]
                                                                                           -- STREAM_SELECT  |PARTITIONED|
-                                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                              data-scan []<-[$$210, $$r] <- tpch.region [cardinality: 5.0, op-cost: 5.0, total-cost: 5.0]
+                                                                                              data-scan []<-[$$210, $$r] <- tpch.region [cardinality: 5.0, doc-size: 5.0, op-cost: 5.0, total-cost: 5.0]
                                                                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                assign [$$212] <- [$$n1.getField(2)] project: [$$212, $$208] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                assign [$$212] <- [$$n1.getField(2)] project: [$$212, $$208] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ASSIGN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    replicate [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                                    replicate [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                     -- REPLICATE  |PARTITIONED|
-                                                      exchange [cardinality: 25.0, op-cost: 100.0, total-cost: 125.0]
+                                                      exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan []<-[$$208, $$n1] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                                        data-scan []<-[$$208, $$n1] <- tpch.nation [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 25.0, op-cost: 100.0, total-cost: 125.0]
+                        exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                         -- BROADCAST_EXCHANGE  |PARTITIONED|
-                          assign [$$232] <- [$$n2.getField(1)] project: [$$232, $$209] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                          assign [$$232] <- [$$n2.getField(1)] project: [$$232, $$209] [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                           -- ASSIGN  |PARTITIONED|
-                            assign [$$209, $$n2] <- [$$208, $$n1] project: [$$209, $$n2] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                            assign [$$209, $$n2] <- [$$208, $$n1] project: [$$209, $$n2] [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 25.0, op-cost: 100.0, total-cost: 125.0]
+                              exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                replicate [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                replicate [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                 -- REPLICATE  |PARTITIONED|
-                                  exchange [cardinality: 25.0, op-cost: 100.0, total-cost: 125.0]
+                                  exchange [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$208, $$n1] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                    data-scan []<-[$$208, $$n1] <- tpch.nation [cardinality: 25.0, doc-size: 10.0, op-cost: 0.0, total-cost: 25.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.10.plan
index 5013a2b..ce74eef 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.10.plan
@@ -1,114 +1,114 @@
-distribute result [$$122] [cardinality: 25648.6, op-cost: 0.0, total-cost: 1660495.02]
+distribute result [$$122] [cardinality: 25648.6, doc-size: 50.0, op-cost: 0.0, total-cost: 1660495.02]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 25648.6, op-cost: 0.0, total-cost: 1660495.02]
+  exchange [cardinality: 25648.6, doc-size: 50.0, op-cost: 0.0, total-cost: 1660495.02]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$122] <- [{"$1": 9, "$2": $$140}] project: [$$122] [cardinality: 25648.6, op-cost: 0.0, total-cost: 1660495.02]
+    assign [$$122] <- [{"$1": 9, "$2": $$140}] project: [$$122] [cardinality: 25648.6, doc-size: 50.0, op-cost: 0.0, total-cost: 1660495.02]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$140] <- [agg-sql-sum($$144)] [cardinality: 25648.6, op-cost: 0.0, total-cost: 1660495.02]
+      aggregate [$$140] <- [agg-sql-sum($$144)] [cardinality: 25648.6, doc-size: 50.0, op-cost: 0.0, total-cost: 1660495.02]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 25648.6, op-cost: 0.0, total-cost: 1660495.02]
+        exchange [cardinality: 25648.6, doc-size: 50.0, op-cost: 0.0, total-cost: 1660495.02]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$144] <- [agg-sql-count(1)] [cardinality: 25648.6, op-cost: 0.0, total-cost: 1660495.02]
+          aggregate [$$144] <- [agg-sql-count(1)] [cardinality: 25648.6, doc-size: 50.0, op-cost: 0.0, total-cost: 1660495.02]
           -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 25648.6, op-cost: 0.0, total-cost: 1660495.02]
+            exchange [cardinality: 25648.6, doc-size: 50.0, op-cost: 0.0, total-cost: 1660495.02]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$136, $$o] <- index-search("orders", 0, "Default", "tpch", "orders", true, true, 1, $$132, 1, $$132, true, true, true) [cardinality: 25648.6, op-cost: 128122.39, total-cost: 1660495.02]
+              unnest-map [$$136, $$o] <- index-search("orders", 0, "Default", "tpch", "orders", true, true, 1, $$132, 1, $$132, true, true, true) [cardinality: 25648.6, doc-size: 50.0, op-cost: 0.0, total-cost: 1660495.02]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$132) [cardinality: 25648.6, op-cost: 128122.39, total-cost: 1660495.02]
+                  order (ASC, $$132) [cardinality: 25648.6, doc-size: 50.0, op-cost: 128122.39, total-cost: 1660495.02]
                   -- STABLE_SORT [$$132(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$132]  |PARTITIONED|
-                      project ([$$132]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$132]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          join (and(eq($$135, $$128), eq($$134, $$125))) [cardinality: 25624.47, op-cost: 614777.52, total-cost: 1429874.73]
+                          join (and(eq($$135, $$128), eq($$134, $$125))) [cardinality: 25624.47, doc-size: 45.0, op-cost: 614777.52, total-cost: 1429874.73]
                           -- HYBRID_HASH_JOIN [$$128, $$125][$$135, $$134]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$128, $$125] <- [$$l.getField(2), $$l.getField(1)] project: [$$132, $$128, $$125] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$128, $$125] <- [$$l.getField(2), $$l.getField(1)] project: [$$132, $$128, $$125] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                project ([$$132, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$132, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$131, $$132, $$l] <- tpch.lineitem [cardinality: 600572.0, op-cost: 600572.0, total-cost: 600572.0]
+                                    data-scan []<-[$$131, $$132, $$l] <- tpch.lineitem [cardinality: 600572.0, doc-size: 15.0, op-cost: 600572.0, total-cost: 600572.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                              project ([$$134, $$135]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              project ([$$134, $$135]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_PROJECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  join (eq($$138, $$137)) [cardinality: 3410.13, op-cost: 3555.05, total-cost: 200884.68]
+                                  join (eq($$138, $$137)) [cardinality: 3410.13, doc-size: 30.0, op-cost: 3555.05, total-cost: 200884.68]
                                   -- HYBRID_HASH_JOIN [$$138][$$137]  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      project ([$$134, $$135, $$138]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$134, $$135, $$138]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          join (eq($$130, $$135)) [cardinality: 3455.05, op-cost: 4527.53, total-cost: 197204.63]
+                                          join (eq($$130, $$135)) [cardinality: 3455.05, doc-size: 25.0, op-cost: 4527.53, total-cost: 197204.63]
                                           -- HYBRID_HASH_JOIN [$$135][$$130]  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- HASH_PARTITION_EXCHANGE [$$135]  |PARTITIONED|
-                                              project ([$$134, $$135]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              project ([$$134, $$135]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  join (eq($$129, $$134)) [cardinality: 3540.53, op-cost: 83612.42, total-cost: 187149.58]
+                                                  join (eq($$129, $$134)) [cardinality: 3540.53, doc-size: 15.0, op-cost: 83612.42, total-cost: 187149.58]
                                                   -- HYBRID_HASH_JOIN [$$134][$$129]  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      project ([$$134, $$135]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      project ([$$134, $$135]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- STREAM_PROJECT  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          data-scan []<-[$$133, $$134, $$135, $$ps] <- tpch.partsupp [cardinality: 80000.0, op-cost: 80000.0, total-cost: 80000.0]
+                                                          data-scan []<-[$$133, $$134, $$135, $$ps] <- tpch.partsupp [cardinality: 80000.0, doc-size: 10.0, op-cost: 80000.0, total-cost: 80000.0]
                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                      select (like($$p.getField(1), "%green%")) project: [$$129] [cardinality: 884.29, op-cost: 0.0, total-cost: 20000.0]
+                                                      select (like($$p.getField(1), "%green%")) project: [$$129] [cardinality: 884.29, doc-size: 5.0, op-cost: 0.0, total-cost: 20000.0]
                                                       -- STREAM_SELECT  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          data-scan []<-[$$129, $$p] <- tpch.part [cardinality: 20000.0, op-cost: 20000.0, total-cost: 20000.0]
+                                                          data-scan []<-[$$129, $$p] <- tpch.part [cardinality: 20000.0, doc-size: 5.0, op-cost: 20000.0, total-cost: 20000.0]
                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- HASH_PARTITION_EXCHANGE [$$130]  |PARTITIONED|
-                                              assign [$$138] <- [$$s.getField(3)] project: [$$130, $$138] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$138] <- [$$s.getField(3)] project: [$$130, $$138] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$130, $$s] <- tpch.supplier [cardinality: 1000.0, op-cost: 1000.0, total-cost: 1000.0]
+                                                  data-scan []<-[$$130, $$s] <- tpch.supplier [cardinality: 1000.0, doc-size: 10.0, op-cost: 1000.0, total-cost: 1000.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                      project ([$$137]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$137]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$137, $$n] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                          data-scan []<-[$$137, $$n] <- tpch.nation [cardinality: 25.0, doc-size: 5.0, op-cost: 25.0, total-cost: 25.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.11.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.11.plan
index 84c8bbf..9640ac0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.11.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.11.plan
@@ -1,106 +1,106 @@
-distribute result [$$185] [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+distribute result [$$185] [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+  exchange [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 20 [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+    limit 20 [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$185] <- [{"$1": 10, "c_custkey": $$c_custkey, "c_name": $$c_name, "revenue": $$203, "c_acctbal": $$c_acctbal, "n_name": $$n_name, "c_address": $$c_address, "c_phone": $$c_phone, "c_comment": $$c_comment}] project: [$$185] [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+      assign [$$185] <- [{"$1": 10, "c_custkey": $$c_custkey, "c_name": $$c_name, "revenue": $$203, "c_acctbal": $$c_acctbal, "n_name": $$n_name, "c_address": $$c_address, "c_phone": $$c_phone, "c_comment": $$c_comment}] project: [$$185] [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+        exchange [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
         -- SORT_MERGE_EXCHANGE [$$203(DESC) ]  |PARTITIONED|
-          limit 20 [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+          limit 20 [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+            exchange [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 20) (DESC, $$203) [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+              order (topK: 20) (DESC, $$203) [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
               -- STABLE_SORT [topK: 20] [$$203(DESC)]  |PARTITIONED|
-                exchange [cardinality: 4440.72, op-cost: 0.0, total-cost: 990469.45]
+                exchange [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   group by ([$$c_custkey := $$211; $$c_name := $$212; $$c_acctbal := $$213; $$c_phone := $$214; $$n_name := $$215; $$c_address := $$216; $$c_comment := $$217]) decor ([]) {
-                            aggregate [$$203] <- [global-sql-sum-serial($$210)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$203] <- [global-sql-sum-serial($$210)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 4440.72, op-cost: 4440.72, total-cost: 990469.45]
+                         } [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 990469.45]
                   -- EXTERNAL_GROUP_BY[$$211, $$212, $$213, $$214, $$215, $$216, $$217]  |PARTITIONED|
-                    exchange [cardinality: 4440.72, op-cost: 0.0, total-cost: 986028.73]
+                    exchange [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 986028.73]
                     -- HASH_PARTITION_EXCHANGE [$$211, $$212, $$213, $$214, $$215, $$216, $$217]  |PARTITIONED|
                       group by ([$$211 := $$195; $$212 := $$187; $$213 := $$188; $$214 := $$189; $$215 := $$190; $$216 := $$191; $$217 := $$192]) decor ([]) {
-                                aggregate [$$210] <- [local-sql-sum-serial(numeric-multiply($$208, numeric-subtract(1, $$209)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$210] <- [local-sql-sum-serial(numeric-multiply($$208, numeric-subtract(1, $$209)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 4440.72, op-cost: 4440.72, total-cost: 986028.73]
+                             } [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 986028.73]
                       -- EXTERNAL_GROUP_BY[$$195, $$187, $$188, $$189, $$190, $$191, $$192]  |PARTITIONED|
-                        exchange [cardinality: 4440.72, op-cost: 0.0, total-cost: 981588.01]
+                        exchange [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 981588.01]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$208, $$209, $$195, $$187, $$188, $$189, $$190, $$191, $$192]) [cardinality: 4440.72, op-cost: 0.0, total-cost: 981588.01]
+                          project ([$$208, $$209, $$195, $$187, $$188, $$189, $$190, $$191, $$192]) [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 981588.01]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 4440.72, op-cost: 0.0, total-cost: 981588.01]
+                            exchange [cardinality: 4440.72, doc-size: 30.0, op-cost: 0.0, total-cost: 981588.01]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$198, $$196)) [cardinality: 4440.72, op-cost: 169510.74, total-cost: 981588.01]
+                              join (eq($$198, $$196)) [cardinality: 4440.72, doc-size: 30.0, op-cost: 169510.74, total-cost: 981588.01]
                               -- HYBRID_HASH_JOIN [$$198][$$196]  |PARTITIONED|
-                                exchange [cardinality: 151979.18, op-cost: 0.0, total-cost: 600572.0]
+                                exchange [cardinality: 151979.18, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  select (eq($$l.getField(8), "R")) project: [$$208, $$209, $$198] [cardinality: 151979.18, op-cost: 0.0, total-cost: 600572.0]
+                                  select (eq($$l.getField(8), "R")) project: [$$208, $$209, $$198] [cardinality: 151979.18, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                   -- STREAM_SELECT  |PARTITIONED|
-                                    assign [$$209, $$208] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                    assign [$$209, $$208] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 600572.0, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$198, $$l]) [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                      project ([$$198, $$l]) [cardinality: 600572.0, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 600572.0, op-cost: 0.0, total-cost: 600572.0]
+                                        exchange [cardinality: 600572.0, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$197, $$198, $$l] <- tpch.lineitem [cardinality: 600572.0, op-cost: 600572.0, total-cost: 600572.0]
+                                          data-scan []<-[$$197, $$198, $$l] <- tpch.lineitem [cardinality: 600572.0, doc-size: 5.0, op-cost: 0.0, total-cost: 600572.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 4382.89, op-cost: 17531.56, total-cost: 211505.28]
+                                exchange [cardinality: 4382.89, doc-size: 25.0, op-cost: 0.0, total-cost: 193973.72]
                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                  project ([$$195, $$187, $$188, $$189, $$190, $$191, $$192, $$196]) [cardinality: 4382.89, op-cost: 0.0, total-cost: 193973.72]
+                                  project ([$$195, $$187, $$188, $$189, $$190, $$191, $$192, $$196]) [cardinality: 4382.89, doc-size: 25.0, op-cost: 0.0, total-cost: 193973.72]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 4382.89, op-cost: 17531.56, total-cost: 211505.28]
+                                    exchange [cardinality: 4382.89, doc-size: 25.0, op-cost: 0.0, total-cost: 193973.72]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$201, $$199)) [cardinality: 4382.89, op-cost: 4478.77, total-cost: 193973.72]
+                                      join (eq($$201, $$199)) [cardinality: 4382.89, doc-size: 25.0, op-cost: 4478.77, total-cost: 193973.72]
                                       -- HYBRID_HASH_JOIN [$$201][$$199]  |PARTITIONED|
-                                        exchange [cardinality: 15014.11, op-cost: 0.0, total-cost: 15000.0]
+                                        exchange [cardinality: 15014.11, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          assign [$$192, $$191, $$189, $$188, $$187, $$201] <- [$$c.getField(7), $$c.getField(2), $$c.getField(4), $$c.getField(5), $$c.getField(1), $$c.getField(3)] project: [$$195, $$187, $$188, $$189, $$191, $$192, $$196, $$201] [cardinality: 15014.11, op-cost: 0.0, total-cost: 15000.0]
+                                          assign [$$192, $$191, $$189, $$188, $$187, $$201] <- [$$c.getField(7), $$c.getField(2), $$c.getField(4), $$c.getField(5), $$c.getField(1), $$c.getField(3)] project: [$$195, $$187, $$188, $$189, $$191, $$192, $$196, $$201] [cardinality: 15014.11, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$196, $$195, $$c]) [cardinality: 15014.11, op-cost: 0.0, total-cost: 15000.0]
+                                            project ([$$196, $$195, $$c]) [cardinality: 15014.11, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 15014.11, op-cost: 0.0, total-cost: 15000.0]
+                                              exchange [cardinality: 15014.11, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                unnest-map [$$195, $$c] <- index-search("customer", 0, "Default", "tpch", "customer", true, true, 1, $$206, 1, $$206, true, true, true) [cardinality: 15014.11, op-cost: 15000.0, total-cost: 15000.0]
+                                                unnest-map [$$195, $$c] <- index-search("customer", 0, "Default", "tpch", "customer", true, true, 1, $$206, 1, $$206, true, true, true) [cardinality: 15014.11, doc-size: 10.0, op-cost: 0.0, total-cost: 15000.0]
                                                 -- BTREE_SEARCH  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    order (ASC, $$206) [cardinality: 15014.11, op-cost: 15000.0, total-cost: 15000.0]
+                                                    order (ASC, $$206) [cardinality: 15014.11, doc-size: 10.0, op-cost: 15000.0, total-cost: 15000.0]
                                                     -- STABLE_SORT [$$206(ASC)]  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- HASH_PARTITION_EXCHANGE [$$206]  |PARTITIONED|
-                                                        select (and(lt($$193, "1993-10-01"), ge($$193, "1993-07-01"))) project: [$$196, $$206] [cardinality: 4374.41, op-cost: 0.0, total-cost: 150000.0]
+                                                        select (and(lt($$193, "1993-10-01"), ge($$193, "1993-07-01"))) project: [$$196, $$206] [cardinality: 4374.41, doc-size: 10.0, op-cost: 0.0, total-cost: 150000.0]
                                                         -- STREAM_SELECT  |PARTITIONED|
-                                                          assign [$$206, $$193] <- [$$o.getField(1), $$o.getField(4)] project: [$$196, $$206, $$193] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          assign [$$206, $$193] <- [$$o.getField(1), $$o.getField(4)] project: [$$196, $$206, $$193] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ASSIGN  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              data-scan []<-[$$196, $$o] <- tpch.orders [cardinality: 150000.0, op-cost: 150000.0, total-cost: 150000.0]
+                                                              data-scan []<-[$$196, $$o] <- tpch.orders [cardinality: 150000.0, doc-size: 10.0, op-cost: 150000.0, total-cost: 150000.0]
                                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 25.0, op-cost: 100.0, total-cost: 125.0]
+                                        exchange [cardinality: 25.0, doc-size: 5.0, op-cost: 0.0, total-cost: 25.0]
                                         -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                          assign [$$190] <- [$$n.getField(1)] project: [$$190, $$199] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+                                          assign [$$190] <- [$$n.getField(1)] project: [$$190, $$199] [cardinality: 25.0, doc-size: 5.0, op-cost: 0.0, total-cost: 25.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            exchange [cardinality: 25.0, op-cost: 100.0, total-cost: 125.0]
+                                            exchange [cardinality: 25.0, doc-size: 5.0, op-cost: 0.0, total-cost: 25.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              data-scan []<-[$$199, $$n] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0]
+                                              data-scan []<-[$$199, $$n] <- tpch.nation [cardinality: 25.0, doc-size: 5.0, op-cost: 0.0, total-cost: 25.0]
                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.04.plan
deleted file mode 100644
index a5b3307..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.04.plan
+++ /dev/null
@@ -1,30 +0,0 @@
-distribute result [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$94] <- [{"id": $$109, "review": $$114}] project: [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        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 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- STREAM_LIMIT  |UNPARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                assign [$$109] <- [int64-default-null($$d.getField("id"))] project: [$$114, $$109] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ASSIGN  |PARTITIONED|
-                  limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- STREAM_LIMIT  |PARTITIONED|
-                    assign [$$114] <- [string-default-null($$d.getField("review"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                    -- ASSIGN  |PARTITIONED|
-                      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 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.06.plan
deleted file mode 100644
index 98cefbf..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.06.plan
+++ /dev/null
@@ -1,20 +0,0 @@
-distribute result [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$69] <- [{"id": int64-default-null($$d.getField("id")), "review": string-default-null($$d.getField("review"))}] project: [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-        -- ASSIGN  |PARTITIONED|
-          limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-          -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$d] <- test.ExternalDataset limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-              -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.08.plan
index f51f439..0bc4336 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.08.plan
@@ -1,28 +1,28 @@
-distribute result [$$88] [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
+distribute result [$$88] [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
+  exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$88] <- [{"id": $$91, "review": $$95}] project: [$$88] [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
+    assign [$$88] <- [{"id": $$91, "review": $$95}] project: [$$88] [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
+      exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$91) [cardinality: 6.0, op-cost: 15.51, total-cost: 35.51]
+        order (ASC, $$91) [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
         -- STABLE_SORT [$$91(ASC)]  |UNPARTITIONED|
-          exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+          exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            limit 3 [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+            limit 3 [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
             -- STREAM_LIMIT  |UNPARTITIONED|
-              exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+              exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
               -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                limit 3 [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+                limit 3 [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
                 -- STREAM_LIMIT  |PARTITIONED|
-                  assign [$$95] <- [$$d.getField(1)] project: [$$91, $$95] [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+                  assign [$$95] <- [$$d.getField(1)] project: [$$91, $$95] [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+                    exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      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: 6.0, op-cost: 20.0, total-cost: 20.0]
+                      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: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.10.plan
index ac1a8b6..5235d24 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.10.plan
@@ -1,28 +1,28 @@
-distribute result [$$63] [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+distribute result [$$63] [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+  exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+    limit 3 [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$63] <- [{"id": $$65, "review": $$69}] project: [$$63] [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+      assign [$$63] <- [{"id": $$65, "review": $$69}] project: [$$63] [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+        exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
         -- SORT_MERGE_EXCHANGE [$$65(ASC) ]  |PARTITIONED|
-          limit 3 [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+          limit 3 [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+            exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 3) (ASC, $$65) [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+              order (topK: 3) (ASC, $$65) [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
               -- STABLE_SORT [topK: 3] [$$65(ASC)]  |PARTITIONED|
-                exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+                exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$69] <- [$$d.getField(1)] project: [$$65, $$69] [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+                  assign [$$69] <- [$$d.getField(1)] project: [$$65, $$69] [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+                    exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$65, $$d] <- test.DatasetWithKnownField [cardinality: 20.0, op-cost: 20.0, total-cost: 20.0]
+                      data-scan []<-[$$65, $$d] <- test.DatasetWithKnownField [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.12.plan
index a25bb52..77dab84 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.12.plan
@@ -1,28 +1,28 @@
-distribute result [$$94] [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
+distribute result [$$94] [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
+  exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$94] <- [{"id": $$97, "review": $$101}] project: [$$94] [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
+    assign [$$94] <- [{"id": $$97, "review": $$101}] project: [$$94] [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
+      exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$97) [cardinality: 6.0, op-cost: 15.51, total-cost: 35.51]
+        order (ASC, $$97) [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 35.51]
         -- STABLE_SORT [$$97(ASC)]  |UNPARTITIONED|
-          exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+          exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            limit 3 [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+            limit 3 [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
             -- STREAM_LIMIT  |UNPARTITIONED|
-              exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+              exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
               -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                limit 3 [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+                limit 3 [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
                 -- STREAM_LIMIT  |PARTITIONED|
-                  assign [$$101] <- [$$d.getField(1)] project: [$$97, $$101] [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+                  assign [$$101] <- [$$d.getField(1)] project: [$$97, $$101] [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
+                    exchange [cardinality: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      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: 6.0, op-cost: 20.0, total-cost: 20.0]
+                      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: 6.0, doc-size: 15.0, op-cost: 0.0, total-cost: 20.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.14.plan
index f1798fd..548ef18 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.14.plan
@@ -1,28 +1,28 @@
-distribute result [$$69] [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+distribute result [$$69] [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+  exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+    limit 3 [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$69] <- [{"id": $$71, "review": $$75}] project: [$$69] [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+      assign [$$69] <- [{"id": $$71, "review": $$75}] project: [$$69] [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+        exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
         -- SORT_MERGE_EXCHANGE [$$71(ASC) ]  |PARTITIONED|
-          limit 3 [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+          limit 3 [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+            exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 3) (ASC, $$71) [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+              order (topK: 3) (ASC, $$71) [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
               -- STABLE_SORT [topK: 3] [$$71(ASC)]  |PARTITIONED|
-                exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+                exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$75] <- [$$d.getField(1)] project: [$$71, $$75] [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+                  assign [$$75] <- [$$d.getField(1)] project: [$$71, $$75] [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+                    exchange [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$71, $$d] <- test.DatasetWithKnownField [cardinality: 20.0, op-cost: 20.0, total-cost: 20.0]
+                      data-scan []<-[$$71, $$d] <- test.DatasetWithKnownField [cardinality: 20.0, doc-size: 14.55, op-cost: 0.0, total-cost: 20.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/aggregate-sql/count_dataset/count_dataset.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/aggregate-sql/count_dataset/count_dataset.1.plan
index 59eeaf0..4c7ffaf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/aggregate-sql/count_dataset/count_dataset.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/aggregate-sql/count_dataset/count_dataset.1.plan
@@ -1,26 +1,26 @@
-distribute result [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$26] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$26] <- [agg-sql-sum($$29)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$26] <- [agg-sql-sum($$29)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      aggregate [$$29] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$29] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-          order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$27) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet project ({sid:any}) filter on: and(ge($$Tweet.getField(1), 1), le($$Tweet.getField(1), 10)) range-filter on: and(ge($$Tweet.getField(1), 1), le($$Tweet.getField(1), 10)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet project ({sid:any}) filter on: and(ge($$Tweet.getField(1), 1), le($$Tweet.getField(1), 10)) range-filter on: and(ge($$Tweet.getField(1), 1), le($$Tweet.getField(1), 10)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/aggregate/count_dataset/count_dataset.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/aggregate/count_dataset/count_dataset.1.plan
index 2107c0e..a81d5e9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/aggregate/count_dataset/count_dataset.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/aggregate/count_dataset/count_dataset.1.plan
@@ -1,26 +1,26 @@
-distribute result [$$26] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$26] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    aggregate [$$26] <- [agg-sum($$29)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$26] <- [agg-sum($$29)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |UNPARTITIONED|
-      aggregate [$$29] <- [agg-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$29] <- [agg-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$27(ASC) ]  |PARTITIONED|
-          order (ASC, $$27) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$27) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$27(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (and(ge($$25, 1), le($$25, 10))) project: [$$27] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$25] <- [$$Tweet.getField(1)] project: [$$27, $$25] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet project ({sid:any}) filter on: and(ge($$Tweet.getField(1), 1), le($$Tweet.getField(1), 10)) range-filter on: and(ge($$Tweet.getField(1), 1), le($$Tweet.getField(1), 10)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$27, $$Tweet] <- Twitter.Tweet project ({sid:any}) filter on: and(ge($$Tweet.getField(1), 1), le($$Tweet.getField(1), 10)) range-filter on: and(ge($$Tweet.getField(1), 1), le($$Tweet.getField(1), 10)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.3.plan
index 74ee098..2effa02 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.3.plan
@@ -1,46 +1,46 @@
-distribute result [$$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([$$35]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    distinct ([$$35]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        order (ASC, $$35) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$35) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$35(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$35]  |PARTITIONED|
-            assign [$$35] <- [{"l_linenumber": $$37, "l_partkey": $$43, "o_custkey": $$44}] project: [$$35] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$35] <- [{"l_linenumber": $$37, "l_partkey": $$43, "o_custkey": $$44}] project: [$$35] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$37, $$43, $$44]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$37, $$43, $$44]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$36, $$38)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$36, $$38)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$36][$$38]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$36]  |PARTITIONED|
-                      select (gt($$l.getField(4), 10)) project: [$$37, $$43, $$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (gt($$l.getField(4), 10)) project: [$$37, $$43, $$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        assign [$$43] <- [$$l.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$43] <- [$$l.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$36, $$37, $$l] <- tpch.LineItem project ({l_partkey:any,l_quantity:any}) filter on: gt($$l.getField(4), 10) range-filter on: gt($$l.getField(4), 10) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$36, $$37, $$l] <- tpch.LineItem project ({l_partkey:any,l_quantity:any}) filter on: gt($$l.getField(4), 10) range-filter on: gt($$l.getField(4), 10) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-                      assign [$$44] <- [$$o.getField(1)] project: [$$44, $$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$44] <- [$$o.getField(1)] project: [$$44, $$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$38, $$o] <- tpch.Orders project ({o_custkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$38, $$o] <- tpch.Orders project ({o_custkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.4.plan
index b201286..214adfa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.4.plan
@@ -1,46 +1,46 @@
-distribute result [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([$$34]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    distinct ([$$34]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        order (ASC, $$34) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$34) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$34(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-            assign [$$34] <- [{"l_orderkey": $$36, "o_custkey": $$41}] project: [$$34] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$34] <- [{"l_orderkey": $$36, "o_custkey": $$41}] project: [$$34] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$36, $$41]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$36, $$41]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (eq($$36, $$38)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  join (eq($$36, $$38)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HYBRID_HASH_JOIN [$$36][$$38]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$36]  |PARTITIONED|
-                      select (gt($$l.getField(1), 5)) project: [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (gt($$l.getField(1), 5)) project: [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$36, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$36, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$36, $$37, $$l] <- tpch.LineItem project ({l_partkey:any}) filter on: gt($$l.getField(1), 5) range-filter on: gt($$l.getField(1), 5) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$36, $$37, $$l] <- tpch.LineItem project ({l_partkey:any}) filter on: gt($$l.getField(1), 5) range-filter on: gt($$l.getField(1), 5) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-                      assign [$$41] <- [$$o.getField(1)] project: [$$41, $$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$41] <- [$$o.getField(1)] project: [$$41, $$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$38, $$o] <- tpch.Orders project ({o_custkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$38, $$o] <- tpch.Orders project ({o_custkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.5.plan
index dc90a31..47d3ba8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.5.plan
@@ -1,80 +1,80 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$111]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_partkey := $$115; $$o_orderstatus := $$116; $$c_nationkey := $$117]) decor ([]) {
-                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$102; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$102, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$102, $$103, $$104]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$102, $$103, $$104]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$109, $$108)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$109, $$108)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$109]  |PARTITIONED|
-                          project ([$$102, $$103, $$109]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$102, $$103, $$109]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$105, $$107)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$105, $$107)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$105][$$107]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$105]  |PARTITIONED|
-                                  assign [$$102] <- [$$l.getField(1)] project: [$$102, $$105] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$102] <- [$$l.getField(1)] project: [$$102, $$105] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    project ([$$105, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$105, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem project ({l_partkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem project ({l_partkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$107]  |PARTITIONED|
-                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$109, $$107] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$109, $$107] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$107, $$o] <- tpch.Orders project ({o_orderstatus:any,o_custkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$107, $$o] <- tpch.Orders project ({o_orderstatus:any,o_custkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$108]  |PARTITIONED|
-                          assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$108, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$108, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.6.plan
index 65a2966..cd12d6e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.6.plan
@@ -1,78 +1,78 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$111]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_linenumber := $$115; $$o_orderstatus := $$116; $$c_nationkey := $$117]) decor ([]) {
-                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$106; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$106, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$106, $$103, $$104]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$106, $$103, $$104]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$109, $$108)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$109, $$108)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$109]  |PARTITIONED|
-                          project ([$$106, $$103, $$109]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$106, $$103, $$109]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$105, $$107)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$105, $$107)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$105][$$107]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$105]  |PARTITIONED|
-                                  project ([$$106, $$105]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$106, $$105]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$107]  |PARTITIONED|
-                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$109, $$107] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$103, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$103, $$109, $$107] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$107, $$o] <- tpch.Orders project ({o_orderstatus:any,o_custkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$107, $$o] <- tpch.Orders project ({o_orderstatus:any,o_custkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$108]  |PARTITIONED|
-                          assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$104] <- [$$c.getField(3)] project: [$$104, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$108, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$108, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.7.plan
index ba12809..a65c6ce 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.7.plan
@@ -1,78 +1,78 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$101] <- [{"$1": $$111}] project: [$$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$111]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$111]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_linenumber := $$115; $$c_nationkey := $$116; $$o_orderstatus := $$117]) decor ([]) {
-                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$111] <- [agg-sql-sum($$114)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$115, $$116, $$117]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$115, $$116, $$117]  |PARTITIONED|
               group by ([$$115 := $$106; $$116 := $$103; $$117 := $$104]) decor ([]) {
-                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$114] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$106, $$103, $$104]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$106, $$103, $$104]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$106, $$103, $$104]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$109, $$108)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$109, $$108)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$109][$$108]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$109]  |PARTITIONED|
-                          project ([$$106, $$104, $$109]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$106, $$104, $$109]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$105, $$107)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$105, $$107)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$105][$$107]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$105]  |PARTITIONED|
-                                  project ([$$106, $$105]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$106, $$105]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$105, $$106, $$l] <- tpch.LineItem project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$107]  |PARTITIONED|
-                                  assign [$$104, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$104, $$109, $$107] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$104, $$109] <- [$$o.getField(2), $$o.getField(1)] project: [$$104, $$109, $$107] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$107, $$o] <- tpch.Orders project ({o_orderstatus:any,o_custkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$107, $$o] <- tpch.Orders project ({o_orderstatus:any,o_custkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$108]  |PARTITIONED|
-                          assign [$$103] <- [$$c.getField(3)] project: [$$103, $$108] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$103] <- [$$c.getField(3)] project: [$$103, $$108] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$108, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$108, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.8.plan
index b3c4de2..e10648f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.8.plan
@@ -1,120 +1,120 @@
-distribute result [$$119] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$119] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$119] <- [{"n_name": $$n_name, "revenue": $$132}] project: [$$119] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$119] <- [{"n_name": $$n_name, "revenue": $$132}] project: [$$119] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$$n_name := $$142]) decor ([]) {
-                  aggregate [$$132] <- [agg-global-sql-sum($$141)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$132] <- [agg-global-sql-sum($$141)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$142]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$142]  |PARTITIONED|
             group by ([$$142 := $$120]) decor ([]) {
-                      aggregate [$$141] <- [agg-local-sql-sum(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$141] <- [agg-local-sql-sum(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$120]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$139, $$140, $$120]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$139, $$140, $$120]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (and(eq($$130, $$128), eq($$131, $$143))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    join (and(eq($$130, $$128), eq($$131, $$143))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HYBRID_HASH_JOIN [$$130, $$131][$$128, $$143]  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HASH_PARTITION_EXCHANGE [$$130, $$131]  |PARTITIONED|
-                        project ([$$139, $$140, $$130, $$131]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$139, $$140, $$130, $$131]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            join (eq($$133, $$127)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            join (eq($$133, $$127)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- HYBRID_HASH_JOIN [$$133][$$127]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$133]  |PARTITIONED|
-                                project ([$$139, $$140, $$131, $$133]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$139, $$140, $$131, $$133]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    join (eq($$125, $$124)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    join (eq($$125, $$124)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- HYBRID_HASH_JOIN [$$124][$$125]  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HASH_PARTITION_EXCHANGE [$$124]  |PARTITIONED|
-                                        project ([$$131, $$124]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        project ([$$131, $$124]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- STREAM_PROJECT  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            join (eq($$123, $$136)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            join (eq($$123, $$136)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- HYBRID_HASH_JOIN [$$123][$$136]  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HASH_PARTITION_EXCHANGE [$$123]  |PARTITIONED|
-                                                assign [$$131] <- [$$c.getField(3)] project: [$$131, $$123] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                assign [$$131] <- [$$c.getField(3)] project: [$$131, $$123] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ASSIGN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    data-scan []<-[$$123, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    data-scan []<-[$$123, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HASH_PARTITION_EXCHANGE [$$136]  |PARTITIONED|
-                                                select (and(lt($$121, "1994-01-01"), ge($$121, "1993-01-01"))) project: [$$124, $$136] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                select (and(lt($$121, "1994-01-01"), ge($$121, "1993-01-01"))) project: [$$124, $$136] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- STREAM_SELECT  |PARTITIONED|
-                                                  assign [$$136, $$121] <- [$$o.getField(1), $$o.getField(4)] project: [$$124, $$136, $$121] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$136, $$121] <- [$$o.getField(1), $$o.getField(4)] project: [$$124, $$136, $$121] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$124, $$o] <- tpch.Orders project ({o_orderdate:any,o_custkey:any}) filter on: and(lt($$o.getField(4), "1994-01-01"), ge($$o.getField(4), "1993-01-01")) range-filter on: and(lt($$o.getField(4), "1994-01-01"), ge($$o.getField(4), "1993-01-01")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$124, $$o] <- tpch.Orders project ({o_orderdate:any,o_custkey:any}) filter on: and(lt($$o.getField(4), "1994-01-01"), ge($$o.getField(4), "1993-01-01")) range-filter on: and(lt($$o.getField(4), "1994-01-01"), ge($$o.getField(4), "1993-01-01")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HASH_PARTITION_EXCHANGE [$$125]  |PARTITIONED|
-                                        assign [$$140, $$139, $$133] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$139, $$140, $$133, $$125] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$140, $$139, $$133] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$139, $$140, $$133, $$125] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          project ([$$125, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$125, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              data-scan []<-[$$125, $$126, $$l] <- tpch.LineItem project ({l_extendedprice:any,l_suppkey:any,l_discount:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              data-scan []<-[$$125, $$126, $$l] <- tpch.LineItem project ({l_extendedprice:any,l_suppkey:any,l_discount:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$127]  |PARTITIONED|
-                                assign [$$130] <- [$$s.getField(3)] project: [$$130, $$127] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$130] <- [$$s.getField(3)] project: [$$130, $$127] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan []<-[$$127, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    data-scan []<-[$$127, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HASH_PARTITION_EXCHANGE [$$128, $$143]  |PARTITIONED|
-                        assign [$$143, $$120] <- [$$128, $$n.getField(1)] project: [$$120, $$128, $$143] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        assign [$$143, $$120] <- [$$128, $$n.getField(1)] project: [$$120, $$128, $$143] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ASSIGN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$128, $$n] <- tpch.Nation project ({n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$128, $$n] <- tpch.Nation project ({n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
index 17dc387..06e5784 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.3.plan
@@ -1,42 +1,42 @@
-distribute result [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$51]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$51]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$o_custkey := $$54]) decor ([]) {
-                    aggregate [$$51] <- [agg-sql-sum($$53)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$51] <- [agg-sql-sum($$53)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$54]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$54]  |PARTITIONED|
               group by ([$$54 := $$49]) decor ([]) {
-                        aggregate [$$53] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$53] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$49]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$49] <- [$$o.getField(1)] project: [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$49] <- [$$o.getField(1)] project: [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$o]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$o]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) project ({o_custkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) project ({o_custkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$55] <- [2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$55] <- [2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
index c6b8455..aed5501 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
@@ -1,42 +1,42 @@
-distribute result [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$48] <- [{"$1": $$51}] project: [$$48] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$51]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$51]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$o_orderdate := $$54]) decor ([]) {
-                    aggregate [$$51] <- [agg-sql-sum($$53)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$51] <- [agg-sql-sum($$53)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$54]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$54]  |PARTITIONED|
               group by ([$$54 := $$49]) decor ([]) {
-                        aggregate [$$53] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$53] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$49]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$49] <- [$$o.getField(4)] project: [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$49] <- [$$o.getField(4)] project: [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$o]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$o]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) project ({o_orderdate:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$50, $$o] <- index-search("Orders", 0, "Default", "tpch", "Orders", false, false, 1, $$55, 0, false, true, false) project ({o_orderdate:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$55] <- [5] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$55] <- [5] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
index 0a85b2f..1f9820c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.5.plan
@@ -1,40 +1,40 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_orderkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$53]) decor ([]) {
-                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$53]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  select (and(gt($$l.getField(4), 10), gt($$l.getField(1), 1))) project: [$$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (and(gt($$l.getField(4), 10), gt($$l.getField(1), 1))) project: [$$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$53, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$53, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem project ({l_partkey:any,l_quantity:any}) filter on: and(gt($$l.getField(4), 10), gt($$l.getField(1), 1)) range-filter on: and(gt($$l.getField(4), 10), gt($$l.getField(1), 1)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem project ({l_partkey:any,l_quantity:any}) filter on: and(gt($$l.getField(4), 10), gt($$l.getField(1), 1)) range-filter on: and(gt($$l.getField(4), 10), gt($$l.getField(1), 1)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
index 6880089..ae3b9f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.6.plan
@@ -1,38 +1,38 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_orderkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$53]) decor ([]) {
-                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$53]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  select (and(le($$54, 4), gt($$l.getField(4), 10))) project: [$$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (and(le($$54, 4), gt($$l.getField(4), 10))) project: [$$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem project ({l_quantity:any}) filter on: gt($$l.getField(4), 10) range-filter on: gt($$l.getField(4), 10) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$53, $$54, $$l] <- tpch.LineItem project ({l_quantity:any}) filter on: gt($$l.getField(4), 10) range-filter on: gt($$l.getField(4), 10) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
index 50ac4cc..0bd27da 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/single-collection-queries/single-collection-queries.7.plan
@@ -1,42 +1,42 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"$1": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
           group by ([$$l_partkey := $$59]) decor ([]) {
-                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$55] <- [agg-sql-sum($$58)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SORT_GROUP_BY[$$59]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HASH_PARTITION_EXCHANGE [$$59]  |PARTITIONED|
               group by ([$$59 := $$52]) decor ([]) {
-                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- AGGREGATE  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- SORT_GROUP_BY[$$52]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$52] <- [$$l.getField(1)] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$52] <- [$$l.getField(1)] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    select (and(gt($$53, 1), gt($$54, 4))) project: [$$l] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    select (and(gt($$53, 1), gt($$54, 4))) project: [$$l] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_SELECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$53, $$54, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", false, false, 2, $$60, $$61, 0, true, true, false) project ({l_partkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$53, $$54, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", false, false, 2, $$60, $$61, 0, true, true, false) project ({l_partkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$60, $$61] <- [1, 4] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$60, $$61] <- [1, 4] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/explain/explain_field_access/explain_field_access.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/explain/explain_field_access/explain_field_access.1.plan
index b97eae0..5521a71 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/explain/explain_field_access/explain_field_access.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/explain/explain_field_access/explain_field_access.1.plan
@@ -1,38 +1,38 @@
-distribute result [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$50] <- [{"deptId": $#1, "star_cost": $$53}] project: [$$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$50] <- [{"deptId": $#1, "star_cost": $$53}] project: [$$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$#1 := $$58]) decor ([]) {
-                  aggregate [$$53] <- [agg-global-sql-sum($$57)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$53] <- [agg-global-sql-sum($$57)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$58]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
             group by ([$$58 := $$51]) decor ([]) {
-                      aggregate [$$57] <- [agg-local-sql-sum($$48)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$57] <- [agg-local-sql-sum($$48)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$51]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$51, $$48] <- [substring($$e.getField("dept").getField("department_id"), 0), $$e.getField("salary")] project: [$$48, $$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$51, $$48] <- [substring($$e.getField("dept").getField("department_id"), 0), $$e.getField("salary")] project: [$$48, $$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$e]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$e]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$52, $$e] <- gby.Employee project ({dept:{department_id:any},salary:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$52, $$e] <- gby.Employee project ({dept:{department_id:any},salary:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/explain/explain_field_access_closed/explain_field_access_closed.1.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/explain/explain_field_access_closed/explain_field_access_closed.1.plan
index 280b5c4..5717332 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/explain/explain_field_access_closed/explain_field_access_closed.1.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/explain/explain_field_access_closed/explain_field_access_closed.1.plan
@@ -1,38 +1,38 @@
-distribute result [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$49] <- [{"deptId": $#1, "star_cost": $$52}] project: [$$49] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$49] <- [{"deptId": $#1, "star_cost": $$52}] project: [$$49] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$#1 := $$56]) decor ([]) {
-                  aggregate [$$52] <- [agg-global-sql-sum($$55)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$52] <- [agg-global-sql-sum($$55)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$56]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
             group by ([$$56 := $$50]) decor ([]) {
-                      aggregate [$$55] <- [agg-local-sql-sum($$47)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$55] <- [agg-local-sql-sum($$47)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$50]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$50, $$47] <- [substring($$e.getField(1), 0), $$e.getField(2)] project: [$$47, $$50] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$50, $$47] <- [substring($$e.getField(1), 0), $$e.getField(2)] project: [$$47, $$50] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$e]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$e]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$51, $$e] <- gby.Employee project ({department_id:any,salary:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$51, $$e] <- gby.Employee project ({department_id:any,salary:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.04.plan
index cd9242c..4744514 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.04.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "fsdxv😀"), lt($$20, "fsdxv😁"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "fsdxv😀"), lt($$20, "fsdxv😁"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "fsdxv😀"), lt($$ds1.getField(1), "fsdxv😁")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "fsdxv😀"), lt($$ds1.getField(1), "fsdxv😁")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["fsdxv😀", "fsdxv😁"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["fsdxv😀", "fsdxv😁"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.06.plan
index 7f021bb..94e1afe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.06.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "asdgdh👩‍👩‍👧"), lt($$20, "asdgdh👩‍👩‍👨"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "asdgdh👩‍👩‍👧"), lt($$20, "asdgdh👩‍👩‍👨"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "asdgdh👩‍👩‍👧"), lt($$ds1.getField(1), "asdgdh👩‍👩‍👨")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "asdgdh👩‍👩‍👧"), lt($$ds1.getField(1), "asdgdh👩‍👩‍👨")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["asdgdh👩‍👩‍👧", "asdgdh👩‍👩‍👨"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["asdgdh👩‍👩‍👧", "asdgdh👩‍👩‍👨"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.08.plan
index bd94ced..db608fa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.08.plan
@@ -1,32 +1,32 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (eq($$ds1.getField(1), "sxvciis")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (eq($$ds1.getField(1), "sxvciis")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) range-filter on: eq($$ds1.getField(1), "sxvciis") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) range-filter on: eq($$ds1.getField(1), "sxvciis") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- BTREE_SEARCH  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$19, $$20] <- ["sxvciis", "sxvciis"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$19, $$20] <- ["sxvciis", "sxvciis"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.10.plan
index 7f5893e..6cc4d5e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.10.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "Joh"), lt($$20, "Joi"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "Joh"), lt($$20, "Joi"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "Joh"), lt($$ds1.getField(1), "Joi")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "Joh"), lt($$ds1.getField(1), "Joi")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["Joh", "Joi"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["Joh", "Joi"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.12.plan
index af25ff6..af2e0b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.12.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "s%vfjs__jiscii%")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (like($$ds1.getField(1), "s%vfjs__jiscii%")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 filter on: like($$ds1.getField(1), "s%vfjs__jiscii%") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 filter on: like($$ds1.getField(1), "s%vfjs__jiscii%") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.14.plan
index af17a0a..40dd7d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.14.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvc_is")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (like($$ds1.getField(1), "sxvc_is")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 filter on: like($$ds1.getField(1), "sxvc_is") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 filter on: like($$ds1.getField(1), "sxvc_is") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.16.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.16.plan
index 52e0aea..a210f76 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.16.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvc_i%")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (like($$ds1.getField(1), "sxvc_i%")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 filter on: like($$ds1.getField(1), "sxvc_i%") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 filter on: like($$ds1.getField(1), "sxvc_i%") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.18.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.18.plan
index c2401e6..c6a46ae 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.18.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.18.plan
@@ -1,18 +1,18 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (like($$ds1.getField(1), "sxvfjs%jisci%")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (like($$ds1.getField(1), "sxvfjs%jisci%")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$17, $$ds1] <- test.ds1 filter on: like($$ds1.getField(1), "sxvfjs%jisci%") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            data-scan []<-[$$17, $$ds1] <- test.ds1 filter on: like($$ds1.getField(1), "sxvfjs%jisci%") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.20.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.20.plan
index fcbf70a..ade1227 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.20.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.20.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "J"), lt($$20, "K"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "J"), lt($$20, "K"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "J"), lt($$ds1.getField(1), "K")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "J"), lt($$ds1.getField(1), "K")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["J", "K"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["J", "K"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.22.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.22.plan
index ec3afe1..fc606b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.22.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.22.plan
@@ -1,34 +1,34 @@
-distribute result [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$19] <- [{"ds1": $$ds1}] project: [$$19] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (and(ge($$20, "sx"), lt($$20, "sy"))) project: [$$ds1] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (and(ge($$20, "sx"), lt($$20, "sy"))) project: [$$ds1] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [$$ds1.getField(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "sx"), lt($$ds1.getField(1), "sy")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              unnest-map [$$21, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$25, 1, $$25, true, true, true) range-filter on: and(ge($$ds1.getField(1), "sx"), lt($$ds1.getField(1), "sy")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- BTREE_SEARCH  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$25) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$25) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$25]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$25]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          unnest-map [$$24, $$25] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$23, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- BTREE_SEARCH  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              assign [$$22, $$23] <- ["sx", "sy"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              assign [$$22, $$23] <- ["sx", "sy"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ASSIGN  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.25.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.25.plan
index e224c27..cfdee92 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.25.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/like-expression/like-expression.25.plan
@@ -1,32 +1,32 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$16] <- [{"ds1": $$ds1}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (eq($$ds1.getField(1), "h\axx%")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (eq($$ds1.getField(1), "h\axx%")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$ds1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$ds1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) range-filter on: eq($$ds1.getField(1), "h\axx%") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            unnest-map [$$17, $$ds1] <- index-search("ds1", 0, "Default", "test", "ds1", false, false, 1, $$22, 1, $$22, true, true, true) range-filter on: eq($$ds1.getField(1), "h\axx%") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- BTREE_SEARCH  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                order (ASC, $$22) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                order (ASC, $$22) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$22]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$22]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$21, $$22] <- index-search("ds1_name", 0, "Default", "test", "ds1", false, false, 1, $$19, 1, $$20, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$19, $$20] <- ["h\axx%", "h\axx%"] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$19, $$20] <- ["h\axx%", "h\axx%"] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
index a3ad366..ebaaa58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.04.plan
@@ -1,58 +1,58 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (eq($$55, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            join (eq($$55, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HYBRID_HASH_JOIN [$$58][$$55]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$56, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$56, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                    project ([$$58]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$58]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$58, $$n] <- tpch.Nation project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$58, $$n] <- tpch.Nation project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$59, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$59, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
index e3f4ed4..6c9aab9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.06.plan
@@ -1,46 +1,46 @@
-distribute result [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$36] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$42}] project: [$$36] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$36] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$42}] project: [$$36] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$43(ASC), $$44(ASC), $$42(ASC) ]  |PARTITIONED|
-        order (ASC, $$43) (ASC, $$44) (ASC, $$42) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$43) (ASC, $$44) (ASC, $$42) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$43(ASC), $$44(ASC), $$42(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$43, $$44, $$42]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$43, $$44, $$42]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$43, $$44), eq($$49, $$42))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (and(eq($$43, $$44), eq($$49, $$42))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$43, $$49][$$44, $$42]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$43, $$49]  |PARTITIONED|
-                    assign [$$49] <- [$$43] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$49] <- [$$43] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$43]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$43]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$43, $$o] <- tpch.Orders project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$43, $$o] <- tpch.Orders project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$44, $$42]  |PARTITIONED|
-                    assign [$$42] <- [$$l.getField(2)] project: [$$44, $$42] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$42] <- [$$l.getField(2)] project: [$$44, $$42] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$44, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$44, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem project ({l_suppkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem project ({l_suppkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
index dd677dc..80139c7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.08.plan
@@ -1,46 +1,46 @@
-distribute result [$$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$38] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$47}] project: [$$38] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$38] <- [{"o_orderkey": $$43, "l_orderkey": $$44, "l_suppkey": $$47}] project: [$$38] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$43(ASC), $$44(ASC), $$47(ASC) ]  |PARTITIONED|
-        order (ASC, $$43) (ASC, $$44) (ASC, $$47) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$43) (ASC, $$44) (ASC, $$47) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$43(ASC), $$44(ASC), $$47(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$43, $$44, $$47]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$43, $$44, $$47]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                left outer join (and(eq($$43, $$44), eq($$56, $$47))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                left outer join (and(eq($$43, $$44), eq($$56, $$47))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$43, $$56][$$44, $$47]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$43, $$56]  |PARTITIONED|
-                    assign [$$56] <- [$$43] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$43] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$43]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$43]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$43, $$o] <- tpch.Orders project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$43, $$o] <- tpch.Orders project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$44, $$47]  |PARTITIONED|
-                    assign [$$47] <- [$$l.getField(2)] project: [$$44, $$47] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$47] <- [$$l.getField(2)] project: [$$44, $$47] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$44, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$44, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem project ({l_suppkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$44, $$45, $$l] <- tpch.LineItem project ({l_suppkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
index a3ad366..ebaaa58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.10.plan
@@ -1,58 +1,58 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (eq($$55, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            join (eq($$55, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HYBRID_HASH_JOIN [$$58][$$55]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$56, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$56, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                    project ([$$58]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$58]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$58, $$n] <- tpch.Nation project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$58, $$n] <- tpch.Nation project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$59, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$59, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
index a3ad366..ebaaa58 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.12.plan
@@ -1,58 +1,58 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$58, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$58(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$58) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$58(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (eq($$55, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            join (eq($$55, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- HYBRID_HASH_JOIN [$$58][$$55]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (eq($$56, $$58)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (eq($$56, $$58)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                    project ([$$58]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$58]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$58, $$n] <- tpch.Nation project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$58, $$n] <- tpch.Nation project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_PROJECT  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan []<-[$$59, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          data-scan []<-[$$59, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
-                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
index 6097059..6bf9f9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
@@ -1,60 +1,60 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$59(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$59(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$59, $$56, $$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$59, $$56, $$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$59, $$56][$$55, $$66]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$59, $$56]  |PARTITIONED|
-                    project ([$$56, $$59]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$56, $$59]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            order (ASC, $$56) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            order (ASC, $$56) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STABLE_SORT [$$56(ASC)]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$58, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$58, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$55, $$66]  |PARTITIONED|
-                    assign [$$66] <- [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$66] <- [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
index 6097059..6bf9f9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
@@ -1,60 +1,60 @@
-distribute result [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$51] <- [{"n_nationkey": $$59, "s_nationkey": $$56, "c_nationkey": $$55}] project: [$$51] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$59(ASC), $$56(ASC), $$55(ASC) ]  |PARTITIONED|
-        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$59) (ASC, $$56) (ASC, $$55) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$59(ASC), $$56(ASC), $$55(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$59, $$56, $$55]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            project ([$$59, $$56, $$55]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_PROJECT  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                join (and(eq($$55, $$59), eq($$56, $$66))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HYBRID_HASH_JOIN [$$59, $$56][$$55, $$66]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$59, $$56]  |PARTITIONED|
-                    project ([$$56, $$59]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$56, $$59]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- BTREE_SEARCH  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            order (ASC, $$56) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            order (ASC, $$56) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STABLE_SORT [$$56(ASC)]  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                assign [$$56] <- [$$s.getField(3)] project: [$$56] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ASSIGN  |PARTITIONED|
-                                  project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$58, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$58, $$s] <- tpch.Supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- HASH_PARTITION_EXCHANGE [$$55, $$66]  |PARTITIONED|
-                    assign [$$66] <- [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$66] <- [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |PARTITIONED|
-                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      assign [$$55] <- [$$c.getField(3)] project: [$$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ASSIGN  |PARTITIONED|
-                        project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            data-scan []<-[$$60, $$c] <- tpch.Customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
index 6fa2bb0..237cac4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
@@ -1,54 +1,54 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$53) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$53) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$53(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$62) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$62) project: [$$53, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$53) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$53) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$53(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$53]  |PARTITIONED|
-                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- BTREE_SEARCH  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                order (ASC, $$61) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                order (ASC, $$61) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STABLE_SORT [$$61(ASC)]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index 600fbff..d7c06b1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -1,82 +1,82 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$74) project: [$$73, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- SPLIT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BTREE_SEARCH  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                              assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- SPLIT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BTREE_SEARCH  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                        assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
index edcf4e1..9899c6d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
@@ -1,54 +1,54 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$53) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$53) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$53(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$62) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$62) project: [$$53, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$53) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$53) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$53(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$53]  |PARTITIONED|
-                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) project: [$$53, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STREAM_SELECT  |PARTITIONED|
-                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        project ([$$53, $$55, $$54, $$t2]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- STREAM_PROJECT  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- BTREE_SEARCH  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                order (ASC, $$61) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                order (ASC, $$61) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STABLE_SORT [$$61(ASC)]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index 76cd017..15f8446 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -1,82 +1,82 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$74) project: [$$73, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$70, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- SPLIT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BTREE_SEARCH  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                              assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_typed project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$53, $$t1] <- test.ds_outer_typed project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$61, $$53] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- SPLIT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- BTREE_SEARCH  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                        assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_typed project ({c_int32:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$53, $$t1] <- test.ds_outer_typed project ({c_int32:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/offset_without_limit/offset_without_limit.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/offset_without_limit/offset_without_limit.6.plan
index e493a7d..18520ff 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/offset_without_limit/offset_without_limit.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/offset_without_limit/offset_without_limit.6.plan
@@ -1,20 +1,20 @@
-distribute result [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit offset 98 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit offset 98 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$16] <- [{"id": $$18, "dblpid": $$paper.getField(1)}] project: [$$16] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$16] <- [{"id": $$18, "dblpid": $$paper.getField(1)}] project: [$$16] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$18(ASC) ]  |PARTITIONED|
-          order (ASC, $$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$18) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$18(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$18, $$paper] <- test.DBLP1 project ({dblpid:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$18, $$paper] <- test.DBLP1 project ({dblpid:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
index 342bf37..e80fefd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
@@ -1,38 +1,38 @@
-distribute result [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-        assign [$$20] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$21, 0)}] project: [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$20] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$21, 0)}] project: [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 5 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            assign [$$21] <- [$$c.getField(2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$21] <- [$$c.getField(2)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$c]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$c]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  unnest-map [$$22, $$23, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$27, $$28, 2, $$27, $$28, true, true, true) condition (lt($$c.getField(2), 150)) limit 5 project ({l_suppkey:any,l_shipdate:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  unnest-map [$$22, $$23, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$27, $$28, 2, $$27, $$28, true, true, true) condition (lt($$c.getField(2), 150)) limit 5 project ({l_suppkey:any,l_shipdate:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- BTREE_SEARCH  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      order (ASC, $$27) (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      order (ASC, $$27) (ASC, $$28) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- STABLE_SORT [$$27(ASC), $$28(ASC)]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$27, $$28]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$27, $$28]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              unnest-map [$$26, $$27, $$28] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$25, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              unnest-map [$$26, $$27, $$28] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$25, true, false, false) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- BTREE_SEARCH  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  assign [$$25] <- [150] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$25] <- [150] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.7.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.7.plan
index 2289d14..fd009fb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.7.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/limit/push-limit-to-primary-scan/push-limit-to-primary-scan.7.plan
@@ -1,48 +1,48 @@
-distribute result [$$188] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$188] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |LOCAL|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-    aggregate [$$188] <- [agg-sql-sum($$213)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    aggregate [$$188] <- [agg-sql-sum($$213)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- AGGREGATE  |LOCAL|
-      aggregate [$$213] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$213] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |LOCAL|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-          union [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          union [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- UNION_ALL  |UNPARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-              limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_LIMIT  |UNPARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                  limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    project ([]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$128, $$onek1] <- test.onek1 limit 100 project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$128, $$onek1] <- test.onek1 limit 100 project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-              limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_LIMIT  |UNPARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                  limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_LIMIT  |PARTITIONED|
-                    project ([]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$129, $$onek1] <- test.onek1 limit 10 project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$129, $$onek1] <- test.onek1 limit 10 project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
index b2ca6f6..33681de 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/misc/query-ASTERIXDB-3562/query-ASTERIXDB-3562.4.plan
@@ -1,34 +1,34 @@
-distribute result [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$18] <- [{"f_1": $$15, "f_2": $$17}] project: [$$18] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$18] <- [{"f_1": $$15, "f_2": $$17}] project: [$$18] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$15, $$17]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$15, $$17]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
         subplan {
-                  assign [$$17] <- [array-slice($$20, 0, 2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$17] <- [array-slice($$20, 0, 2)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SUBPLAN  |PARTITIONED|
           subplan {
-                    assign [$$15] <- [array-slice($$20, 0, 1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    assign [$$15] <- [array-slice($$20, 0, 1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ASSIGN  |LOCAL|
-                      nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SUBPLAN  |PARTITIONED|
-            assign [$$20] <- [$$collection1.getField("array1")] project: [$$20] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            assign [$$20] <- [$$collection1.getField("array1")] project: [$$20] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ASSIGN  |PARTITIONED|
-              project ([$$collection1]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              project ([$$collection1]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_PROJECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$19, $$collection1] <- test.collection1 project ({array1:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$19, $$collection1] <- test.collection1 project ({array1:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/objects/load-record-fields/load-record-fields.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/objects/load-record-fields/load-record-fields.4.plan
index 698f06d..2d9df30 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/objects/load-record-fields/load-record-fields.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/objects/load-record-fields/load-record-fields.4.plan
@@ -1,24 +1,24 @@
-distribute result [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$md]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$md]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$32(ASC) ]  |PARTITIONED|
-          order (ASC, $$32) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$32) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (neq(uuid(), uuid())) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (neq(uuid(), uuid())) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$32, $$md] <- test.MyDataset project ({name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$32, $$md] <- test.MyDataset project ({name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/objects/load-record-fields/load-record-fields.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/objects/load-record-fields/load-record-fields.6.plan
index 7117b98..3e9b0d9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/objects/load-record-fields/load-record-fields.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/objects/load-record-fields/load-record-fields.6.plan
@@ -1,24 +1,24 @@
-distribute result [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$30] <- [$$md.getField("name")] project: [$$30] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      project ([$$md]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      project ([$$md]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_PROJECT  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$32(ASC) ]  |PARTITIONED|
-          order (ASC, $$32) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          order (ASC, $$32) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STABLE_SORT [$$32(ASC)]  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              select (neq(current-date(), date: { 1980-09-10 })) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              select (neq(current-date(), date: { 1980-09-10 })) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STREAM_SELECT  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$32, $$md] <- test.MyDataset project ({name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  data-scan []<-[$$32, $$md] <- test.MyDataset project ({name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
index 34d7663..2656997 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.3.plan
@@ -1,20 +1,20 @@
-distribute result [$$311] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$311] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$311] <- [{"id": $$345}] project: [$$311] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (not(is-null($$345))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (not(is-null($$345))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        assign [$$345] <- [string-default-null($$s.getField("id"))] project: [$$345] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        assign [$$345] <- [string-default-null($$s.getField("id"))] project: [$$345] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- ASSIGN  |PARTITIONED|
-          project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_PROJECT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan []<-[$$314, $$s] <- test.dat1 project ({id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              data-scan []<-[$$314, $$s] <- test.dat1 project ({id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
index c94e333..0386308 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/subquery/query-ASTERIXDB-3538/query-ASTERIXDB-3538.5.plan
@@ -1,35 +1,35 @@
-distribute result [$$317] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$317] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$317] <- [{"dat3": {"id": $$351, "a": string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$317] <- [{"dat3": {"id": $$351, "a": string-default-null($$345), "d": int64-default-null($$318)}}] project: [$$317] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      select (le($$318, get-item($$295, 0))) project: [$$351, $$345, $$318] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- STREAM_SELECT  |PARTITIONED|
-        project ([$$351, $$345, $$318, $$295]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        project ([$$351, $$345, $$318, $$295]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STREAM_PROJECT  |PARTITIONED|
           subplan {
-                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    aggregate [$$295] <- [listify($$330)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- AGGREGATE  |LOCAL|
-                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$330] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        unnest $$333 <- scan-collection($$343) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        unnest $$333 <- scan-collection($$343) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- UNNEST  |LOCAL|
-                          nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- SUBPLAN  |PARTITIONED|
-            select (not(is-null($$351))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select (not(is-null($$351))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              assign [$$351, $$345, $$318, $$343] <- [string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), $$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              assign [$$351, $$345, $$318, $$343] <- [string-default-null($$s.getField("id")), $$s.getField("a"), $$s.getField("d"), $$s.getField("e")] project: [$$351, $$345, $$318, $$343] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ASSIGN  |PARTITIONED|
-                project ([$$s]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                project ([$$s]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_PROJECT  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan []<-[$$319, $$s] <- test.dat1 project ({a:any,d:any,e:[any],id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    data-scan []<-[$$319, $$s] <- test.dat1 project ({a:any,d:any,e:[any],id:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.03.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.03.plan
index 49dcfab..d5a18b2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.03.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.03.plan
@@ -1,40 +1,40 @@
-distribute result [$$134] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$134] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$134] <- [{"$1": 1, "l_returnflag": $$l_returnflag, "l_linestatus": $$l_linestatus, "sum_qty": $$140, "sum_base_price": $$141, "sum_disc_price": $$142, "sum_charge": $$143, "avg_qty": $$144, "avg_price": $$145, "avg_disc": $$146, "count_order": $$147}] project: [$$134] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$134] <- [{"$1": 1, "l_returnflag": $$l_returnflag, "l_linestatus": $$l_linestatus, "sum_qty": $$140, "sum_base_price": $$141, "sum_disc_price": $$142, "sum_charge": $$143, "avg_qty": $$144, "avg_price": $$145, "avg_disc": $$146, "count_order": $$147}] project: [$$134] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ]  |PARTITIONED|
         group by ([$$l_returnflag := $$160; $$l_linestatus := $$161]) decor ([]) {
-                  aggregate [$$140, $$141, $$142, $$143, $$144, $$145, $$146, $$147] <- [agg-global-sql-sum($$152), agg-global-sql-sum($$153), agg-global-sql-sum($$154), agg-global-sql-sum($$155), agg-global-sql-avg($$156), agg-global-sql-avg($$157), agg-global-sql-avg($$158), agg-sql-sum($$159)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$140, $$141, $$142, $$143, $$144, $$145, $$146, $$147] <- [agg-global-sql-sum($$152), agg-global-sql-sum($$153), agg-global-sql-sum($$154), agg-global-sql-sum($$155), agg-global-sql-avg($$156), agg-global-sql-avg($$157), agg-global-sql-avg($$158), agg-sql-sum($$159)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$160, $$161]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$160, $$161]  |PARTITIONED|
             group by ([$$160 := $$135; $$161 := $$136]) decor ([]) {
-                      aggregate [$$152, $$153, $$154, $$155, $$156, $$157, $$158, $$159] <- [agg-local-sql-sum($$88), agg-local-sql-sum($$93), agg-local-sql-sum(numeric-multiply($$93, numeric-subtract(1, $$149))), agg-local-sql-sum(numeric-multiply(numeric-multiply($$93, numeric-subtract(1, $$149)), numeric-add(1, $$151))), agg-local-sql-avg($$88), agg-local-sql-avg($$93), agg-local-sql-avg($$149), agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$152, $$153, $$154, $$155, $$156, $$157, $$158, $$159] <- [agg-local-sql-sum($$88), agg-local-sql-sum($$93), agg-local-sql-sum(numeric-multiply($$93, numeric-subtract(1, $$149))), agg-local-sql-sum(numeric-multiply(numeric-multiply($$93, numeric-subtract(1, $$149)), numeric-add(1, $$151))), agg-local-sql-avg($$88), agg-local-sql-avg($$93), agg-local-sql-avg($$149), agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$135, $$136]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (le($$l.getField(10), "1998-09-16")) project: [$$88, $$93, $$149, $$151, $$135, $$136] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (le($$l.getField(10), "1998-09-16")) project: [$$88, $$93, $$149, $$151, $$135, $$136] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  assign [$$136, $$135, $$88, $$149, $$151, $$93] <- [$$l.getField(9), $$l.getField(8), $$l.getField(4), $$l.getField(6), $$l.getField(7), $$l.getField(5)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$136, $$135, $$88, $$149, $$151, $$93] <- [$$l.getField(9), $$l.getField(8), $$l.getField(4), $$l.getField(6), $$l.getField(7), $$l.getField(5)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    project ([$$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$138, $$139, $$l] <- tpch.lineitem project ({l_returnflag:any,l_tax:any,l_quantity:any,l_linestatus:any,l_extendedprice:any,l_shipdate:any,l_discount:any}) filter on: le($$l.getField(10), "1998-09-16") range-filter on: le($$l.getField(10), "1998-09-16") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        data-scan []<-[$$138, $$139, $$l] <- tpch.lineitem project ({l_returnflag:any,l_tax:any,l_quantity:any,l_linestatus:any,l_extendedprice:any,l_shipdate:any,l_discount:any}) filter on: le($$l.getField(10), "1998-09-16") range-filter on: le($$l.getField(10), "1998-09-16") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.04.plan
index 757b580..112e012 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.04.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.04.plan
@@ -1,267 +1,267 @@
-distribute result [$$194] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$194] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$194] <- [{"$1": 2, "s_acctbal": $$237, "s_name": $$239, "n_name": $$238, "p_partkey": $$250, "p_mfgr": $$244, "s_address": $$245, "s_phone": $$246, "s_comment": $$247}] project: [$$194] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$194] <- [{"$1": 2, "s_acctbal": $$237, "s_name": $$239, "n_name": $$238, "p_partkey": $$250, "p_mfgr": $$244, "s_address": $$245, "s_phone": $$246, "s_comment": $$247}] project: [$$194] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$237(DESC), $$238(ASC), $$239(ASC), $$250(ASC) ]  |PARTITIONED|
-          limit 100 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 100 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 100) (DESC, $$237) (ASC, $$238) (ASC, $$239) (ASC, $$250) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 100) (DESC, $$237) (ASC, $$238) (ASC, $$239) (ASC, $$250) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 100] [$$237(DESC), $$238(ASC), $$239(ASC), $$250(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$221, $$206)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$221, $$206)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$221][$$206]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$221]  |PARTITIONED|
-                          project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247, $$221]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$237, $$239, $$238, $$250, $$244, $$245, $$246, $$247, $$221]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$225, $$205)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$225, $$205)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$225][$$205]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$225]  |PARTITIONED|
-                                  project ([$$237, $$239, $$250, $$244, $$245, $$246, $$247, $$225]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$237, $$239, $$250, $$244, $$245, $$246, $$247, $$225]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (and(eq($$250, $$203), eq($$202, $$231))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (and(eq($$250, $$203), eq($$202, $$231))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$250, $$231][$$203, $$202]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          assign [$$231] <- [get-item($$181, 0)] project: [$$250, $$244, $$231] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$231] <- [get-item($$181, 0)] project: [$$250, $$244, $$231] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                               group by ([$$250 := $$200]) decor ([$$244]) {
-                                                        aggregate [$$181] <- [listify($$215)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        aggregate [$$181] <- [listify($$215)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- AGGREGATE  |LOCAL|
-                                                          aggregate [$$215] <- [agg-sql-min($$208)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          aggregate [$$215] <- [agg-sql-min($$208)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- AGGREGATE  |LOCAL|
-                                                            select (not(is-missing($$249))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            select (not(is-missing($$249))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_SELECT  |LOCAL|
-                                                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                     } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                     } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- PRE_CLUSTERED_GROUP_BY[$$200]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  order (ASC, $$200) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  order (ASC, $$200) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STABLE_SORT [$$200(ASC)]  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      project ([$$244, $$208, $$249, $$200]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      project ([$$244, $$208, $$249, $$200]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- STREAM_PROJECT  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          left outer join (eq($$207, $$200)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          left outer join (eq($$207, $$200)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HYBRID_HASH_JOIN [$$200][$$207]  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- HASH_PARTITION_EXCHANGE [$$200]  |PARTITIONED|
-                                                              select (and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) project: [$$244, $$200] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              select (and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) project: [$$244, $$200] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- STREAM_SELECT  |PARTITIONED|
-                                                                assign [$$244] <- [$$p.getField(2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                assign [$$244] <- [$$p.getField(2)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ASSIGN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    data-scan []<-[$$200, $$p] <- tpch.part project ({p_type:any,p_mfgr:any,p_size:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    data-scan []<-[$$200, $$p] <- tpch.part project ({p_type:any,p_mfgr:any,p_size:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- HASH_PARTITION_EXCHANGE [$$207]  |PARTITIONED|
-                                                              assign [$$249] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              assign [$$249] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ASSIGN  |PARTITIONED|
-                                                                project ([$$208, $$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                project ([$$208, $$207]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    join (eq($$218, $$213)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    join (eq($$218, $$213)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- HYBRID_HASH_JOIN [$$218][$$213]  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- HASH_PARTITION_EXCHANGE [$$218]  |PARTITIONED|
-                                                                        project ([$$208, $$207, $$218]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        project ([$$208, $$207, $$218]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- STREAM_PROJECT  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            join (eq($$207, $$209)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            join (eq($$207, $$209)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- HYBRID_HASH_JOIN [$$207][$$209]  |PARTITIONED|
-                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- HASH_PARTITION_EXCHANGE [$$207]  |PARTITIONED|
-                                                                                project ([$$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                project ([$$207]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                    data-scan []<-[$$207, $$p2] <- tpch.part project ({p_type:any,p_mfgr:any,p_size:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    data-scan []<-[$$207, $$p2] <- tpch.part project ({p_type:any,p_mfgr:any,p_size:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- HASH_PARTITION_EXCHANGE [$$209]  |PARTITIONED|
-                                                                                project ([$$208, $$218, $$209]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                project ([$$208, $$218, $$209]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                    join (eq($$223, $$212)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    join (eq($$223, $$212)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- HYBRID_HASH_JOIN [$$223][$$212]  |PARTITIONED|
-                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- HASH_PARTITION_EXCHANGE [$$223]  |PARTITIONED|
-                                                                                        project ([$$208, $$209, $$223]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        project ([$$208, $$209, $$223]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- STREAM_PROJECT  |PARTITIONED|
-                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            join (eq($$211, $$210)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            join (eq($$211, $$210)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- HYBRID_HASH_JOIN [$$210][$$211]  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- REPLICATE  |PARTITIONED|
-                                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                                                                                                    project ([$$208, $$209, $$210]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                    project ([$$208, $$209, $$210]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                        data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                        data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- HASH_PARTITION_EXCHANGE [$$211]  |PARTITIONED|
-                                                                                                assign [$$223] <- [$$s2.getField(3)] project: [$$223, $$211] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                assign [$$223] <- [$$s2.getField(3)] project: [$$223, $$211] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- ASSIGN  |PARTITIONED|
-                                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    data-scan []<-[$$211, $$s2] <- tpch.supplier project ({s_comment:any,s_phone:any,s_nationkey:any,s_name:any,s_address:any,s_acctbal:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                    data-scan []<-[$$211, $$s2] <- tpch.supplier project ({s_comment:any,s_phone:any,s_nationkey:any,s_name:any,s_address:any,s_acctbal:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                       -- HASH_PARTITION_EXCHANGE [$$212]  |PARTITIONED|
-                                                                                        assign [$$218] <- [$$n2.getField(2)] project: [$$218, $$212] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                        assign [$$218] <- [$$n2.getField(2)] project: [$$218, $$212] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                         -- ASSIGN  |PARTITIONED|
-                                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                            replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                             -- REPLICATE  |PARTITIONED|
-                                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                data-scan []<-[$$212, $$n2] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                data-scan []<-[$$212, $$n2] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- REPLICATE  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- HASH_PARTITION_EXCHANGE [$$213]  |PARTITIONED|
-                                                                            select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                data-scan []<-[$$213, $$r2] <- tpch.region project ({r_name:any}) filter on: eq($$r2.getField(1), "EUROPE") range-filter on: eq($$r2.getField(1), "EUROPE") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                data-scan []<-[$$213, $$r2] <- tpch.region project ({r_name:any}) filter on: eq($$r2.getField(1), "EUROPE") range-filter on: eq($$r2.getField(1), "EUROPE") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$203]  |PARTITIONED|
-                                          project ([$$237, $$239, $$245, $$246, $$247, $$225, $$203, $$202]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$237, $$239, $$245, $$246, $$247, $$225, $$203, $$202]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (eq($$201, $$204)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              join (eq($$201, $$204)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HYBRID_HASH_JOIN [$$201][$$204]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$201]  |PARTITIONED|
-                                                  assign [$$247, $$246, $$245, $$237, $$239, $$225] <- [$$s.getField(6), $$s.getField(4), $$s.getField(2), $$s.getField(5), $$s.getField(1), $$s.getField(3)] project: [$$237, $$239, $$245, $$246, $$247, $$225, $$201] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$247, $$246, $$245, $$237, $$239, $$225] <- [$$s.getField(6), $$s.getField(4), $$s.getField(2), $$s.getField(5), $$s.getField(1), $$s.getField(3)] project: [$$237, $$239, $$245, $$246, $$247, $$225, $$201] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$201, $$s] <- tpch.supplier project ({s_comment:any,s_phone:any,s_nationkey:any,s_name:any,s_address:any,s_acctbal:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$201, $$s] <- tpch.supplier project ({s_comment:any,s_phone:any,s_nationkey:any,s_name:any,s_address:any,s_acctbal:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  assign [$$202, $$203, $$204] <- [$$208, $$209, $$210] project: [$$202, $$203, $$204] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$202, $$203, $$204] <- [$$208, $$209, $$210] project: [$$202, $$203, $$204] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- REPLICATE  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                                                          project ([$$208, $$209, $$210]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          project ([$$208, $$209, $$210]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- STREAM_PROJECT  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$205]  |PARTITIONED|
-                                  assign [$$238, $$221] <- [$$n.getField(1), $$n.getField(2)] project: [$$238, $$221, $$205] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$238, $$221] <- [$$n.getField(1), $$n.getField(2)] project: [$$238, $$221, $$205] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    assign [$$205, $$n] <- [$$212, $$n2] project: [$$205, $$n] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$205, $$n] <- [$$212, $$n2] project: [$$205, $$n] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- REPLICATE  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$212, $$n2] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$212, $$n2] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          assign [$$206] <- [$$213] project: [$$206] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          assign [$$206] <- [$$213] project: [$$206] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ASSIGN  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- REPLICATE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$213]  |PARTITIONED|
-                                  select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_SELECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$213, $$r2] <- tpch.region project ({r_name:any}) filter on: eq($$r2.getField(1), "EUROPE") range-filter on: eq($$r2.getField(1), "EUROPE") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$213, $$r2] <- tpch.region project ({r_name:any}) filter on: eq($$r2.getField(1), "EUROPE") range-filter on: eq($$r2.getField(1), "EUROPE") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.05.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.05.plan
index 9612d1f..c24a82d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.05.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.05.plan
@@ -1,92 +1,92 @@
-distribute result [$$122] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$122] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$122] <- [{"$1": 3, "l_orderkey": $$l_orderkey, "revenue": $$134, "o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}] project: [$$122] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$122] <- [{"$1": 3, "l_orderkey": $$l_orderkey, "revenue": $$134, "o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}] project: [$$122] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$134(DESC), $$o_orderdate(ASC) ]  |PARTITIONED|
-          limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 10 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 10) (DESC, $$134) (ASC, $$o_orderdate) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 10) (DESC, $$134) (ASC, $$o_orderdate) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 10] [$$134(DESC), $$o_orderdate(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   group by ([$$l_orderkey := $$142; $$o_orderdate := $$143; $$o_shippriority := $$144]) decor ([]) {
-                            aggregate [$$134] <- [agg-global-sql-sum($$141)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$134] <- [agg-global-sql-sum($$141)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SORT_GROUP_BY[$$142, $$143, $$144]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$142, $$143, $$144]  |PARTITIONED|
                       group by ([$$142 := $$131; $$143 := $$127; $$144 := $$125]) decor ([]) {
-                                aggregate [$$141] <- [agg-local-sql-sum(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$141] <- [agg-local-sql-sum(numeric-multiply($$139, numeric-subtract(1, $$140)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SORT_GROUP_BY[$$131, $$127, $$125]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$139, $$140, $$131, $$127, $$125]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$139, $$140, $$131, $$127, $$125]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$131, $$129)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$131, $$129)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$129][$$131]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$129]  |PARTITIONED|
-                                  project ([$$127, $$125, $$129]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$127, $$125, $$129]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$128, $$136)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (eq($$128, $$136)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$128][$$136]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$128]  |PARTITIONED|
-                                          select (eq($$c.getField(6), "BUILDING")) project: [$$128] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          select (eq($$c.getField(6), "BUILDING")) project: [$$128] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              data-scan []<-[$$128, $$c] <- tpch.customer project ({c_mktsegment:any}) filter on: eq($$c.getField(6), "BUILDING") range-filter on: eq($$c.getField(6), "BUILDING") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              data-scan []<-[$$128, $$c] <- tpch.customer project ({c_mktsegment:any}) filter on: eq($$c.getField(6), "BUILDING") range-filter on: eq($$c.getField(6), "BUILDING") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$136]  |PARTITIONED|
-                                          select (lt($$127, "1995-03-22")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          select (lt($$127, "1995-03-22")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$125, $$136, $$127] <- [$$o.getField(7), $$o.getField(1), $$o.getField(4)] project: [$$129, $$125, $$136, $$127] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$125, $$136, $$127] <- [$$o.getField(7), $$o.getField(1), $$o.getField(4)] project: [$$129, $$125, $$136, $$127] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$129, $$o] <- tpch.orders project ({o_orderdate:any,o_shippriority:any,o_custkey:any}) filter on: lt($$o.getField(4), "1995-03-22") range-filter on: lt($$o.getField(4), "1995-03-22") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$129, $$o] <- tpch.orders project ({o_orderdate:any,o_shippriority:any,o_custkey:any}) filter on: lt($$o.getField(4), "1995-03-22") range-filter on: lt($$o.getField(4), "1995-03-22") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$131]  |PARTITIONED|
-                                  select (gt($$l.getField(10), "1995-03-22")) project: [$$139, $$140, $$131] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  select (gt($$l.getField(10), "1995-03-22")) project: [$$139, $$140, $$131] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_SELECT  |PARTITIONED|
-                                    assign [$$140, $$139] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$140, $$139] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      project ([$$131, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$131, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan []<-[$$130, $$131, $$l] <- tpch.lineitem project ({l_extendedprice:any,l_shipdate:any,l_discount:any}) filter on: gt($$l.getField(10), "1995-03-22") range-filter on: gt($$l.getField(10), "1995-03-22") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          data-scan []<-[$$130, $$131, $$l] <- tpch.lineitem project ({l_extendedprice:any,l_shipdate:any,l_discount:any}) filter on: gt($$l.getField(10), "1995-03-22") range-filter on: gt($$l.getField(10), "1995-03-22") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.06.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.06.plan
index 42ea92f..5cbaef2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.06.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.06.plan
@@ -1,92 +1,92 @@
-distribute result [$$74] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$74] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$74] <- [{"$1": 4, "o_orderpriority": $$o_orderpriority, "order_count": $$81}] project: [$$74] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$74] <- [{"$1": 4, "o_orderpriority": $$o_orderpriority, "order_count": $$81}] project: [$$74] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$o_orderpriority(ASC) ]  |PARTITIONED|
         group by ([$$o_orderpriority := $$91]) decor ([]) {
-                  aggregate [$$81] <- [agg-sql-sum($$90)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$81] <- [agg-sql-sum($$90)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$91]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$91]  |PARTITIONED|
             group by ([$$91 := $$75]) decor ([]) {
-                      aggregate [$$90] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$90] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$75]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (neq($$80, 0)) project: [$$75] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                select (neq($$80, 0)) project: [$$75] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_SELECT  |PARTITIONED|
-                  project ([$$80, $$75]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$80, $$75]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                       group by ([$$87 := $$89]) decor ([$$75]) {
-                                aggregate [$$80] <- [agg-sum($$88)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$80] <- [agg-sum($$88)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- PRE_CLUSTERED_GROUP_BY[$$89]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                           group by ([$$89 := $$77]) decor ([$$75]) {
-                                    aggregate [$$88] <- [agg-count({"l": $$l})] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    aggregate [$$88] <- [agg-count({"l": $$l})] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- AGGREGATE  |LOCAL|
-                                      select (not(is-missing($$86))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      select (not(is-missing($$86))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_SELECT  |LOCAL|
-                                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                 } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                 } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- PRE_CLUSTERED_GROUP_BY[$$77]  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              order (ASC, $$77) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              order (ASC, $$77) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STABLE_SORT [$$77(ASC)]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$75, $$l, $$86, $$77]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$75, $$l, $$86, $$77]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      left outer join (eq($$79, $$77)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      left outer join (eq($$79, $$77)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$77][$$79]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$77]  |PARTITIONED|
-                                          select (and(ge($$76, "1996-05-01"), lt($$76, "1996-08-01"))) project: [$$75, $$77] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          select (and(ge($$76, "1996-05-01"), lt($$76, "1996-08-01"))) project: [$$75, $$77] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$75, $$76] <- [$$o.getField(5), $$o.getField(4)] project: [$$77, $$75, $$76] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$75, $$76] <- [$$o.getField(5), $$o.getField(4)] project: [$$77, $$75, $$76] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$77, $$o] <- tpch.orders project ({o_orderdate:any,o_orderpriority:any}) filter on: and(ge($$o.getField(4), "1996-05-01"), lt($$o.getField(4), "1996-08-01")) range-filter on: and(ge($$o.getField(4), "1996-05-01"), lt($$o.getField(4), "1996-08-01")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$77, $$o] <- tpch.orders project ({o_orderdate:any,o_orderpriority:any}) filter on: and(ge($$o.getField(4), "1996-05-01"), lt($$o.getField(4), "1996-08-01")) range-filter on: and(ge($$o.getField(4), "1996-05-01"), lt($$o.getField(4), "1996-08-01")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$79]  |PARTITIONED|
-                                          assign [$$86] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$86] <- [true] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            select (lt($$l.getField(11), $$l.getField(12))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            select (lt($$l.getField(11), $$l.getField(12))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_SELECT  |PARTITIONED|
-                                              project ([$$79, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              project ([$$79, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$78, $$79, $$l] <- tpch.lineitem filter on: lt($$l.getField(11), $$l.getField(12)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$78, $$79, $$l] <- tpch.lineitem filter on: lt($$l.getField(11), $$l.getField(12)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.07.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.07.plan
index 0b3a58b..74cd0c7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.07.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.07.plan
@@ -1,144 +1,144 @@
-distribute result [$$149] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$149] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$149] <- [{"$1": 5, "n_name": $$n_name, "revenue": $$165}] project: [$$149] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$149] <- [{"$1": 5, "n_name": $$n_name, "revenue": $$165}] project: [$$149] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$165(DESC) ]  |PARTITIONED|
-        order (DESC, $$165) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (DESC, $$165) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$165(DESC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
             group by ([$$n_name := $$176]) decor ([]) {
-                      aggregate [$$165] <- [agg-global-sql-sum($$175)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$165] <- [agg-global-sql-sum($$175)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$176]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HASH_PARTITION_EXCHANGE [$$176]  |PARTITIONED|
                 group by ([$$176 := $$150]) decor ([]) {
-                          aggregate [$$175] <- [agg-local-sql-sum(numeric-multiply($$173, numeric-subtract(1, $$174)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          aggregate [$$175] <- [agg-local-sql-sum(numeric-multiply($$173, numeric-subtract(1, $$174)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- AGGREGATE  |LOCAL|
-                            nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                       } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- SORT_GROUP_BY[$$150]  |PARTITIONED|
-                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$173, $$174, $$150]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$173, $$174, $$150]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$163, $$161)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$163, $$161)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$163][$$161]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$163]  |PARTITIONED|
-                            project ([$$173, $$174, $$150, $$163]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$173, $$174, $$150, $$163]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                join (eq($$154, $$160)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                join (eq($$154, $$160)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HYBRID_HASH_JOIN [$$154][$$160]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$154]  |PARTITIONED|
-                                    project ([$$173, $$174, $$154]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$173, $$174, $$154]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        join (and(eq($$153, $$154), eq($$170, $$159))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        join (and(eq($$153, $$154), eq($$170, $$159))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HYBRID_HASH_JOIN [$$153, $$170][$$154, $$159]  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$153, $$170]  |PARTITIONED|
-                                            project ([$$173, $$174, $$153, $$170]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$173, $$174, $$153, $$170]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                join (eq($$158, $$156)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                join (eq($$158, $$156)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HYBRID_HASH_JOIN [$$156][$$158]  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- HASH_PARTITION_EXCHANGE [$$156]  |PARTITIONED|
-                                                    project ([$$153, $$156]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    project ([$$153, $$156]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        join (eq($$155, $$167)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        join (eq($$155, $$167)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HYBRID_HASH_JOIN [$$155][$$167]  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$155]  |PARTITIONED|
-                                                            assign [$$153] <- [$$c.getField(3)] project: [$$153, $$155] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$153] <- [$$c.getField(3)] project: [$$153, $$155] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$155, $$c] <- tpch.customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                data-scan []<-[$$155, $$c] <- tpch.customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$167]  |PARTITIONED|
-                                                            select (and(ge($$151, "1993-01-01"), lt($$151, "1994-01-01"))) project: [$$156, $$167] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            select (and(ge($$151, "1993-01-01"), lt($$151, "1994-01-01"))) project: [$$156, $$167] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                              assign [$$167, $$151] <- [$$o.getField(1), $$o.getField(4)] project: [$$156, $$167, $$151] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              assign [$$167, $$151] <- [$$o.getField(1), $$o.getField(4)] project: [$$156, $$167, $$151] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ASSIGN  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  data-scan []<-[$$156, $$o] <- tpch.orders project ({o_orderdate:any,o_custkey:any}) filter on: and(ge($$o.getField(4), "1993-01-01"), lt($$o.getField(4), "1994-01-01")) range-filter on: and(ge($$o.getField(4), "1993-01-01"), lt($$o.getField(4), "1994-01-01")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  data-scan []<-[$$156, $$o] <- tpch.orders project ({o_orderdate:any,o_custkey:any}) filter on: and(ge($$o.getField(4), "1993-01-01"), lt($$o.getField(4), "1994-01-01")) range-filter on: and(ge($$o.getField(4), "1993-01-01"), lt($$o.getField(4), "1994-01-01")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- HASH_PARTITION_EXCHANGE [$$158]  |PARTITIONED|
-                                                    assign [$$174, $$173, $$170] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$173, $$174, $$170, $$158] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$174, $$173, $$170] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2)] project: [$$173, $$174, $$170, $$158] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      project ([$$158, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      project ([$$158, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- STREAM_PROJECT  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          data-scan []<-[$$157, $$158, $$l] <- tpch.lineitem project ({l_extendedprice:any,l_suppkey:any,l_discount:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          data-scan []<-[$$157, $$158, $$l] <- tpch.lineitem project ({l_extendedprice:any,l_suppkey:any,l_discount:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$154, $$159]  |PARTITIONED|
-                                            assign [$$154] <- [$$s.getField(3)] project: [$$154, $$159] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$154] <- [$$s.getField(3)] project: [$$154, $$159] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$159, $$s] <- tpch.supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$159, $$s] <- tpch.supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$160]  |PARTITIONED|
-                                    assign [$$150, $$163] <- [$$n.getField(1), $$n.getField(2)] project: [$$150, $$163, $$160] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$150, $$163] <- [$$n.getField(1), $$n.getField(2)] project: [$$150, $$163, $$160] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$160, $$n] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        data-scan []<-[$$160, $$n] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$161]  |PARTITIONED|
-                            select (eq($$r.getField(1), "AFRICA")) project: [$$161] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            select (eq($$r.getField(1), "AFRICA")) project: [$$161] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_SELECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                data-scan []<-[$$161, $$r] <- tpch.region project ({r_name:any}) filter on: eq($$r.getField(1), "AFRICA") range-filter on: eq($$r.getField(1), "AFRICA") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                data-scan []<-[$$161, $$r] <- tpch.region project ({r_name:any}) filter on: eq($$r.getField(1), "AFRICA") range-filter on: eq($$r.getField(1), "AFRICA") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.08.plan
index b4e377b..dbff651 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.08.plan
@@ -1,156 +1,156 @@
-distribute result [$$186] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$186] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$186] <- [{"$1": 7, "supp_nation": $$supp_nation, "cust_nation": $$cust_nation, "l_year": $$l_year, "revenue": $$200}] project: [$$186] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$186] <- [{"$1": 7, "supp_nation": $$supp_nation, "cust_nation": $$cust_nation, "l_year": $$l_year, "revenue": $$200}] project: [$$186] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$supp_nation(ASC), $$cust_nation(ASC), $$l_year(ASC) ]  |PARTITIONED|
         group by ([$$supp_nation := $$217; $$cust_nation := $$218; $$l_year := $$219]) decor ([]) {
-                  aggregate [$$200] <- [agg-global-sql-sum($$216)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$200] <- [agg-global-sql-sum($$216)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$217, $$218, $$219]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$217, $$218, $$219]  |PARTITIONED|
             group by ([$$217 := $$191; $$218 := $$192; $$219 := $$214]) decor ([]) {
-                      aggregate [$$216] <- [agg-local-sql-sum($$184)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$216] <- [agg-local-sql-sum($$184)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$191, $$192, $$214]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$184, $$214] <- [numeric-multiply($$211, numeric-subtract(1, $$212)), get-year(date($$190))] project: [$$184, $$191, $$192, $$214] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$184, $$214] <- [numeric-multiply($$211, numeric-subtract(1, $$212)), get-year(date($$190))] project: [$$184, $$191, $$192, $$214] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  select (or(and(eq($$191, "KENYA"), eq($$192, "PERU")), and(eq($$191, "PERU"), eq($$192, "KENYA")))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  select (or(and(eq($$191, "KENYA"), eq($$192, "PERU")), and(eq($$191, "PERU"), eq($$192, "KENYA")))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$191, $$211, $$212, $$190, $$192]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    project ([$$191, $$211, $$212, $$190, $$192]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- STREAM_PROJECT  |PARTITIONED|
-                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (eq($$201, $$199)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        join (eq($$201, $$199)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HYBRID_HASH_JOIN [$$201][$$199]  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- HASH_PARTITION_EXCHANGE [$$201]  |PARTITIONED|
-                            project ([$$191, $$211, $$212, $$190, $$201]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            project ([$$191, $$211, $$212, $$190, $$201]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- STREAM_PROJECT  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                join (eq($$205, $$198)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                join (eq($$205, $$198)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HYBRID_HASH_JOIN [$$205][$$198]  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$205]  |PARTITIONED|
-                                    project ([$$211, $$212, $$190, $$201, $$205]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    project ([$$211, $$212, $$190, $$201, $$205]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- STREAM_PROJECT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        join (eq($$197, $$210)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        join (eq($$197, $$210)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HYBRID_HASH_JOIN [$$210][$$197]  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                                            project ([$$211, $$212, $$190, $$205, $$210]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$211, $$212, $$190, $$205, $$210]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                join (eq($$196, $$195)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                join (eq($$196, $$195)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HYBRID_HASH_JOIN [$$195][$$196]  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- HASH_PARTITION_EXCHANGE [$$195]  |PARTITIONED|
-                                                    project ([$$211, $$212, $$190, $$205, $$195]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    project ([$$211, $$212, $$190, $$205, $$195]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        join (eq($$193, $$204)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        join (eq($$193, $$204)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HYBRID_HASH_JOIN [$$193][$$204]  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$193]  |PARTITIONED|
-                                                            assign [$$205] <- [$$s.getField(3)] project: [$$205, $$193] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$205] <- [$$s.getField(3)] project: [$$205, $$193] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$193, $$s] <- tpch.supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                data-scan []<-[$$193, $$s] <- tpch.supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- HASH_PARTITION_EXCHANGE [$$204]  |PARTITIONED|
-                                                            select (and(ge($$190, "1995-01-01"), le($$190, "1996-12-31"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            select (and(ge($$190, "1995-01-01"), le($$190, "1996-12-31"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- STREAM_SELECT  |PARTITIONED|
-                                                              assign [$$212, $$211, $$204, $$190] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(10)] project: [$$195, $$212, $$211, $$204, $$190] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              assign [$$212, $$211, $$204, $$190] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(10)] project: [$$195, $$212, $$211, $$204, $$190] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ASSIGN  |PARTITIONED|
-                                                                project ([$$195, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                project ([$$195, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- STREAM_PROJECT  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    data-scan []<-[$$194, $$195, $$l] <- tpch.lineitem project ({l_extendedprice:any,l_suppkey:any,l_shipdate:any,l_discount:any}) filter on: and(ge($$l.getField(10), "1995-01-01"), le($$l.getField(10), "1996-12-31")) range-filter on: and(ge($$l.getField(10), "1995-01-01"), le($$l.getField(10), "1996-12-31")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    data-scan []<-[$$194, $$195, $$l] <- tpch.lineitem project ({l_extendedprice:any,l_suppkey:any,l_shipdate:any,l_discount:any}) filter on: and(ge($$l.getField(10), "1995-01-01"), le($$l.getField(10), "1996-12-31")) range-filter on: and(ge($$l.getField(10), "1995-01-01"), le($$l.getField(10), "1996-12-31")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- HASH_PARTITION_EXCHANGE [$$196]  |PARTITIONED|
-                                                    assign [$$210] <- [$$o.getField(1)] project: [$$210, $$196] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$210] <- [$$o.getField(1)] project: [$$210, $$196] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan []<-[$$196, $$o] <- tpch.orders project ({o_custkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        data-scan []<-[$$196, $$o] <- tpch.orders project ({o_custkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- HASH_PARTITION_EXCHANGE [$$197]  |PARTITIONED|
-                                            assign [$$201] <- [$$c.getField(3)] project: [$$201, $$197] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$201] <- [$$c.getField(3)] project: [$$201, $$197] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$197, $$c] <- tpch.customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$197, $$c] <- tpch.customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- REPLICATE  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HASH_PARTITION_EXCHANGE [$$198]  |PARTITIONED|
-                                        assign [$$191] <- [$$n1.getField(1)] project: [$$191, $$198] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        assign [$$191] <- [$$n1.getField(1)] project: [$$191, $$198] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ASSIGN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$198, $$n1] <- tpch.nation project ({n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$198, $$n1] <- tpch.nation project ({n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            assign [$$192, $$199] <- [$$191, $$198] project: [$$192, $$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            assign [$$192, $$199] <- [$$191, $$198] project: [$$192, $$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ASSIGN  |PARTITIONED|
-                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- REPLICATE  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- HASH_PARTITION_EXCHANGE [$$198]  |PARTITIONED|
-                                    assign [$$191] <- [$$n1.getField(1)] project: [$$191, $$198] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$191] <- [$$n1.getField(1)] project: [$$191, $$198] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan []<-[$$198, $$n1] <- tpch.nation project ({n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        data-scan []<-[$$198, $$n1] <- tpch.nation project ({n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.09.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.09.plan
index 0b918a8..3754842 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.09.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.09.plan
@@ -1,188 +1,188 @@
-distribute result [$$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$199] <- [{"$1": 8, "o_year": $$o_year, "mkt_share": numeric-divide($$214, $$215)}] project: [$$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$199] <- [{"$1": 8, "o_year": $$o_year, "mkt_share": numeric-divide($$214, $$215)}] project: [$$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
         group by ([$$o_year := $$238]) decor ([]) {
-                  aggregate [$$214, $$215] <- [agg-global-sql-sum($$236), agg-global-sql-sum($$237)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  aggregate [$$214, $$215] <- [agg-global-sql-sum($$236), agg-global-sql-sum($$237)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- AGGREGATE  |LOCAL|
-                    nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- NESTED_TUPLE_SOURCE  |LOCAL|
-               } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+               } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_GROUP_BY[$$238]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- HASH_PARTITION_EXCHANGE [$$238]  |PARTITIONED|
             group by ([$$238 := $$200]) decor ([]) {
-                      aggregate [$$236, $$237] <- [agg-local-sql-sum(switch-case(true, eq($$232, "PERU"), numeric-multiply($$230, numeric-subtract(1, $$231)), 0)), agg-local-sql-sum(numeric-multiply($$230, numeric-subtract(1, $$231)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      aggregate [$$236, $$237] <- [agg-local-sql-sum(switch-case(true, eq($$232, "PERU"), numeric-multiply($$230, numeric-subtract(1, $$231)), 0)), agg-local-sql-sum(numeric-multiply($$230, numeric-subtract(1, $$231)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- AGGREGATE  |LOCAL|
-                        nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                   } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- SORT_GROUP_BY[$$200]  |PARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                assign [$$200] <- [get-year(date($$201))] project: [$$232, $$230, $$231, $$200] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                assign [$$200] <- [get-year(date($$201))] project: [$$232, $$230, $$231, $$200] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ASSIGN  |PARTITIONED|
-                  project ([$$232, $$230, $$231, $$201]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$232, $$230, $$231, $$201]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$212, $$210)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$212, $$210)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$212][$$210]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$212]  |PARTITIONED|
-                          project ([$$232, $$230, $$231, $$201, $$212]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$232, $$230, $$231, $$201, $$212]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$216, $$209)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$216, $$209)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$216][$$209]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$216]  |PARTITIONED|
-                                  project ([$$230, $$231, $$201, $$212, $$216]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$230, $$231, $$201, $$212, $$216]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$218, $$208)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (eq($$218, $$208)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$218][$$208]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$218]  |PARTITIONED|
-                                          project ([$$230, $$231, $$201, $$216, $$218]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$230, $$231, $$201, $$216, $$218]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (eq($$226, $$207)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              join (eq($$226, $$207)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HYBRID_HASH_JOIN [$$226][$$207]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$226]  |PARTITIONED|
-                                                  project ([$$230, $$231, $$201, $$216, $$226]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  project ([$$230, $$231, $$201, $$216, $$226]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      join (eq($$205, $$206)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      join (eq($$205, $$206)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- HYBRID_HASH_JOIN [$$205][$$206]  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HASH_PARTITION_EXCHANGE [$$205]  |PARTITIONED|
-                                                          project ([$$230, $$231, $$216, $$205]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          project ([$$230, $$231, $$216, $$205]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- STREAM_PROJECT  |PARTITIONED|
-                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              join (and(eq($$202, $$221), eq($$203, $$223))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              join (and(eq($$202, $$221), eq($$203, $$223))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- HYBRID_HASH_JOIN [$$202, $$203][$$221, $$223]  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- HASH_PARTITION_EXCHANGE [$$202, $$203]  |PARTITIONED|
-                                                                  join (true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  join (true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- NESTED_LOOP  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      select (eq($$p.getField(4), "ECONOMY BURNISHED NICKEL")) project: [$$202] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      select (eq($$p.getField(4), "ECONOMY BURNISHED NICKEL")) project: [$$202] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- STREAM_SELECT  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          data-scan []<-[$$202, $$p] <- tpch.part project ({p_type:any}) filter on: eq($$p.getField(4), "ECONOMY BURNISHED NICKEL") range-filter on: eq($$p.getField(4), "ECONOMY BURNISHED NICKEL") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          data-scan []<-[$$202, $$p] <- tpch.part project ({p_type:any}) filter on: eq($$p.getField(4), "ECONOMY BURNISHED NICKEL") range-filter on: eq($$p.getField(4), "ECONOMY BURNISHED NICKEL") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                                      assign [$$216] <- [$$s.getField(3)] project: [$$216, $$203] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      assign [$$216] <- [$$s.getField(3)] project: [$$216, $$203] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ASSIGN  |PARTITIONED|
-                                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          data-scan []<-[$$203, $$s] <- tpch.supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          data-scan []<-[$$203, $$s] <- tpch.supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                              empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                               -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- HASH_PARTITION_EXCHANGE [$$221, $$223]  |PARTITIONED|
-                                                                  assign [$$231, $$230, $$223, $$221] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(1)] project: [$$230, $$231, $$205, $$221, $$223] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  assign [$$231, $$230, $$223, $$221] <- [$$l.getField(6), $$l.getField(5), $$l.getField(2), $$l.getField(1)] project: [$$230, $$231, $$205, $$221, $$223] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ASSIGN  |PARTITIONED|
-                                                                    project ([$$205, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    project ([$$205, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- STREAM_PROJECT  |PARTITIONED|
-                                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        data-scan []<-[$$204, $$205, $$l] <- tpch.lineitem project ({l_partkey:any,l_extendedprice:any,l_suppkey:any,l_discount:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                        data-scan []<-[$$204, $$205, $$l] <- tpch.lineitem project ({l_partkey:any,l_extendedprice:any,l_suppkey:any,l_discount:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- HASH_PARTITION_EXCHANGE [$$206]  |PARTITIONED|
-                                                          select (and(ge($$201, "1995-01-01"), le($$201, "1996-12-31"))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          select (and(ge($$201, "1995-01-01"), le($$201, "1996-12-31"))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- STREAM_SELECT  |PARTITIONED|
-                                                            assign [$$226, $$201] <- [$$o.getField(1), $$o.getField(4)] project: [$$206, $$226, $$201] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            assign [$$226, $$201] <- [$$o.getField(1), $$o.getField(4)] project: [$$206, $$226, $$201] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- ASSIGN  |PARTITIONED|
-                                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan []<-[$$206, $$o] <- tpch.orders project ({o_orderdate:any,o_custkey:any}) filter on: and(ge($$o.getField(4), "1995-01-01"), le($$o.getField(4), "1996-12-31")) range-filter on: and(ge($$o.getField(4), "1995-01-01"), le($$o.getField(4), "1996-12-31")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                data-scan []<-[$$206, $$o] <- tpch.orders project ({o_orderdate:any,o_custkey:any}) filter on: and(ge($$o.getField(4), "1995-01-01"), le($$o.getField(4), "1996-12-31")) range-filter on: and(ge($$o.getField(4), "1995-01-01"), le($$o.getField(4), "1996-12-31")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$207]  |PARTITIONED|
-                                                  assign [$$218] <- [$$c.getField(3)] project: [$$218, $$207] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$218] <- [$$c.getField(3)] project: [$$218, $$207] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$207, $$c] <- tpch.customer project ({c_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$207, $$c] <- tpch.customer project ({c_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$208]  |PARTITIONED|
-                                          assign [$$212] <- [$$n1.getField(2)] project: [$$212, $$208] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$212] <- [$$n1.getField(2)] project: [$$212, $$208] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- REPLICATE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$208, $$n1] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$208, $$n1] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$209]  |PARTITIONED|
-                                  assign [$$232] <- [$$n2.getField(1)] project: [$$232, $$209] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$232] <- [$$n2.getField(1)] project: [$$232, $$209] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    assign [$$209, $$n2] <- [$$208, $$n1] project: [$$209, $$n2] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    assign [$$209, $$n2] <- [$$208, $$n1] project: [$$209, $$n2] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ASSIGN  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        replicate [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- REPLICATE  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$208, $$n1] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            data-scan []<-[$$208, $$n1] <- tpch.nation project ({n_regionkey:any,n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$210]  |PARTITIONED|
-                          select (eq($$r.getField(1), "AMERICA")) project: [$$210] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          select (eq($$r.getField(1), "AMERICA")) project: [$$210] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_SELECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$210, $$r] <- tpch.region project ({r_name:any}) filter on: eq($$r.getField(1), "AMERICA") range-filter on: eq($$r.getField(1), "AMERICA") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$210, $$r] <- tpch.region project ({r_name:any}) filter on: eq($$r.getField(1), "AMERICA") range-filter on: eq($$r.getField(1), "AMERICA") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.10.plan
index e0fc455..ced2e7e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.10.plan
@@ -1,118 +1,118 @@
-distribute result [$$122] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$122] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$122] <- [{"$1": 9, "$2": $$140}] project: [$$122] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$122] <- [{"$1": 9, "$2": $$140}] project: [$$122] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      aggregate [$$140] <- [agg-sql-sum($$144)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      aggregate [$$140] <- [agg-sql-sum($$144)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- AGGREGATE  |UNPARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-          aggregate [$$144] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          aggregate [$$144] <- [agg-sql-count(1)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- AGGREGATE  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (eq($$138, $$137)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              join (eq($$138, $$137)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- HYBRID_HASH_JOIN [$$138][$$137]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$138]  |PARTITIONED|
-                  project ([$$138]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$138]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (eq($$136, $$132)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      join (eq($$136, $$132)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- HYBRID_HASH_JOIN [$$132][$$136]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$132]  |PARTITIONED|
-                          project ([$$138, $$132]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$138, $$132]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (and(eq($$130, $$135), eq($$134, $$125))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (and(eq($$130, $$135), eq($$134, $$125))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$130, $$125][$$135, $$134]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  project ([$$130, $$138, $$132, $$125]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$130, $$138, $$132, $$125]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (and(eq($$130, $$128), eq($$129, $$125))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (and(eq($$130, $$128), eq($$129, $$125))) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$130, $$129][$$128, $$125]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$130, $$129]  |PARTITIONED|
-                                          join (true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          join (true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- NESTED_LOOP  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              select (like($$p.getField(1), "%green%")) project: [$$129] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              select (like($$p.getField(1), "%green%")) project: [$$129] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- STREAM_SELECT  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$129, $$p] <- tpch.part project ({p_name:any}) filter on: like($$p.getField(1), "%green%") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$129, $$p] <- tpch.part project ({p_name:any}) filter on: like($$p.getField(1), "%green%") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                              assign [$$138] <- [$$s.getField(3)] project: [$$130, $$138] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              assign [$$138] <- [$$s.getField(3)] project: [$$130, $$138] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ASSIGN  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$130, $$s] <- tpch.supplier project ({s_nationkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$130, $$s] <- tpch.supplier project ({s_nationkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$128, $$125]  |PARTITIONED|
-                                          assign [$$128, $$125] <- [$$l.getField(2), $$l.getField(1)] project: [$$132, $$128, $$125] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          assign [$$128, $$125] <- [$$l.getField(2), $$l.getField(1)] project: [$$132, $$128, $$125] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- ASSIGN  |PARTITIONED|
-                                            project ([$$132, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            project ([$$132, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- STREAM_PROJECT  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$131, $$132, $$l] <- tpch.lineitem project ({l_partkey:any,l_suppkey:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$131, $$132, $$l] <- tpch.lineitem project ({l_partkey:any,l_suppkey:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$135, $$134]  |PARTITIONED|
-                                  project ([$$134, $$135]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$134, $$135]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$133, $$134, $$135, $$ps] <- tpch.partsupp project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$133, $$134, $$135, $$ps] <- tpch.partsupp project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- HASH_PARTITION_EXCHANGE [$$136]  |PARTITIONED|
-                          project ([$$136]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$136]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan []<-[$$136, $$o] <- tpch.orders project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              data-scan []<-[$$136, $$o] <- tpch.orders project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- HASH_PARTITION_EXCHANGE [$$137]  |PARTITIONED|
-                  project ([$$137]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  project ([$$137]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STREAM_PROJECT  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$137, $$n] <- tpch.nation project ({}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$137, $$n] <- tpch.nation project ({}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.11.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.11.plan
index cf33f7b..139f935 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.11.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.11.plan
@@ -1,112 +1,112 @@
-distribute result [$$185] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$185] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 20 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 20 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$185] <- [{"$1": 10, "c_custkey": $$c_custkey, "c_name": $$c_name, "revenue": $$203, "c_acctbal": $$c_acctbal, "n_name": $$n_name, "c_address": $$c_address, "c_phone": $$c_phone, "c_comment": $$c_comment}] project: [$$185] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$185] <- [{"$1": 10, "c_custkey": $$c_custkey, "c_name": $$c_name, "revenue": $$203, "c_acctbal": $$c_acctbal, "n_name": $$n_name, "c_address": $$c_address, "c_phone": $$c_phone, "c_comment": $$c_comment}] project: [$$185] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$203(DESC) ]  |PARTITIONED|
-          limit 20 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 20 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 20) (DESC, $$203) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 20) (DESC, $$203) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 20] [$$203(DESC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   group by ([$$c_custkey := $$211; $$n_name := $$215]) decor ([$$c_name := $$212; $$c_acctbal := $$213; $$c_phone := $$214; $$c_address := $$216; $$c_comment := $$217]) {
-                            aggregate [$$203] <- [agg-global-sql-sum($$210)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            aggregate [$$203] <- [agg-global-sql-sum($$210)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- AGGREGATE  |LOCAL|
-                              nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                         } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- SORT_GROUP_BY[$$211, $$215]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$211, $$215]  |PARTITIONED|
                       group by ([$$211 := $$195; $$215 := $$190]) decor ([$$212 := $$187; $$213 := $$188; $$214 := $$189; $$216 := $$191; $$217 := $$192]) {
-                                aggregate [$$210] <- [agg-local-sql-sum(numeric-multiply($$208, numeric-subtract(1, $$209)))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                aggregate [$$210] <- [agg-local-sql-sum(numeric-multiply($$208, numeric-subtract(1, $$209)))] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- AGGREGATE  |LOCAL|
-                                  nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  nested tuple source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                             } [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- SORT_GROUP_BY[$$195, $$190]  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$208, $$209, $$195, $$187, $$188, $$189, $$190, $$191, $$192]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$208, $$209, $$195, $$187, $$188, $$189, $$190, $$191, $$192]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (eq($$201, $$199)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              join (eq($$201, $$199)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- HYBRID_HASH_JOIN [$$201][$$199]  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$201]  |PARTITIONED|
-                                  project ([$$208, $$209, $$195, $$187, $$188, $$189, $$191, $$192, $$201]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  project ([$$208, $$209, $$195, $$187, $$188, $$189, $$191, $$192, $$201]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (eq($$198, $$196)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      join (eq($$198, $$196)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- HYBRID_HASH_JOIN [$$196][$$198]  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$196]  |PARTITIONED|
-                                          project ([$$195, $$187, $$188, $$189, $$191, $$192, $$201, $$196]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          project ([$$195, $$187, $$188, $$189, $$191, $$192, $$201, $$196]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (eq($$195, $$206)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              join (eq($$195, $$206)) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- HYBRID_HASH_JOIN [$$195][$$206]  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$195]  |PARTITIONED|
-                                                  assign [$$192, $$191, $$189, $$188, $$187, $$201] <- [$$c.getField(7), $$c.getField(2), $$c.getField(4), $$c.getField(5), $$c.getField(1), $$c.getField(3)] project: [$$195, $$187, $$188, $$189, $$191, $$192, $$201] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$192, $$191, $$189, $$188, $$187, $$201] <- [$$c.getField(7), $$c.getField(2), $$c.getField(4), $$c.getField(5), $$c.getField(1), $$c.getField(3)] project: [$$195, $$187, $$188, $$189, $$191, $$192, $$201] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$195, $$c] <- tpch.customer project ({c_phone:any,c_acctbal:any,c_address:any,c_nationkey:any,c_name:any,c_comment:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$195, $$c] <- tpch.customer project ({c_phone:any,c_acctbal:any,c_address:any,c_nationkey:any,c_name:any,c_comment:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- HASH_PARTITION_EXCHANGE [$$206]  |PARTITIONED|
-                                                  select (and(lt($$193, "1993-10-01"), ge($$193, "1993-07-01"))) project: [$$196, $$206] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  select (and(lt($$193, "1993-10-01"), ge($$193, "1993-07-01"))) project: [$$196, $$206] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- STREAM_SELECT  |PARTITIONED|
-                                                    assign [$$206, $$193] <- [$$o.getField(1), $$o.getField(4)] project: [$$196, $$206, $$193] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    assign [$$206, $$193] <- [$$o.getField(1), $$o.getField(4)] project: [$$196, $$206, $$193] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ASSIGN  |PARTITIONED|
-                                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan []<-[$$196, $$o] <- tpch.orders project ({o_orderdate:any,o_custkey:any}) filter on: and(lt($$o.getField(4), "1993-10-01"), ge($$o.getField(4), "1993-07-01")) range-filter on: and(lt($$o.getField(4), "1993-10-01"), ge($$o.getField(4), "1993-07-01")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        data-scan []<-[$$196, $$o] <- tpch.orders project ({o_orderdate:any,o_custkey:any}) filter on: and(lt($$o.getField(4), "1993-10-01"), ge($$o.getField(4), "1993-07-01")) range-filter on: and(lt($$o.getField(4), "1993-10-01"), ge($$o.getField(4), "1993-07-01")) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                            empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- HASH_PARTITION_EXCHANGE [$$198]  |PARTITIONED|
-                                          select (eq($$l.getField(8), "R")) project: [$$208, $$209, $$198] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          select (eq($$l.getField(8), "R")) project: [$$208, $$209, $$198] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- STREAM_SELECT  |PARTITIONED|
-                                            assign [$$209, $$208] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$209, $$208] <- [$$l.getField(6), $$l.getField(5)] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              project ([$$198, $$l]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              project ([$$198, $$l]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  data-scan []<-[$$197, $$198, $$l] <- tpch.lineitem project ({l_returnflag:any,l_extendedprice:any,l_discount:any}) filter on: eq($$l.getField(8), "R") range-filter on: eq($$l.getField(8), "R") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  data-scan []<-[$$197, $$198, $$l] <- tpch.lineitem project ({l_returnflag:any,l_extendedprice:any,l_discount:any}) filter on: eq($$l.getField(8), "R") range-filter on: eq($$l.getField(8), "R") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- HASH_PARTITION_EXCHANGE [$$199]  |PARTITIONED|
-                                  assign [$$190] <- [$$n.getField(1)] project: [$$190, $$199] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  assign [$$190] <- [$$n.getField(1)] project: [$$190, $$199] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ASSIGN  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      data-scan []<-[$$199, $$n] <- tpch.nation project ({n_name:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      data-scan []<-[$$199, $$n] <- tpch.nation project ({n_name:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.08.plan
index e131968..696d1f8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.08.plan
@@ -1,28 +1,28 @@
-distribute result [$$88] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$88] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$88] <- [{"id": $$91, "review": $$95}] project: [$$88] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$88] <- [{"id": $$91, "review": $$95}] project: [$$88] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$91) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$91) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$91(ASC)]  |UNPARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_LIMIT  |UNPARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_LIMIT  |PARTITIONED|
-                  assign [$$95] <- [$$d.getField(1)] project: [$$91, $$95] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$95] <- [$$d.getField(1)] project: [$$91, $$95] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      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 project ({year:any,review:any,quarter:any}) filter on: eq($$d.getField(1), "good") range-filter on: eq($$d.getField(1), "good") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      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 project ({year:any,review:any,quarter:any}) filter on: eq($$d.getField(1), "good") range-filter on: eq($$d.getField(1), "good") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.10.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.10.plan
index f3c702a..e7ac1aa 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.10.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.10.plan
@@ -1,28 +1,28 @@
-distribute result [$$63] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$63] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$63] <- [{"id": $$65, "review": $$69}] project: [$$63] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$63] <- [{"id": $$65, "review": $$69}] project: [$$63] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$65(ASC) ]  |PARTITIONED|
-          limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 3) (ASC, $$65) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 3) (ASC, $$65) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 3] [$$65(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$69] <- [$$d.getField(1)] project: [$$65, $$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$69] <- [$$d.getField(1)] project: [$$65, $$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$65, $$d] <- test.DatasetWithKnownField project ({review:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$65, $$d] <- test.DatasetWithKnownField project ({review:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.12.plan
index 2d2888a..a011995 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.12.plan
@@ -1,28 +1,28 @@
-distribute result [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$94] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    assign [$$94] <- [{"id": $$97, "review": $$101}] project: [$$94] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$94] <- [{"id": $$97, "review": $$101}] project: [$$94] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |UNPARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        order (ASC, $$97) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$97) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$97(ASC)]  |UNPARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-            limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_LIMIT  |UNPARTITIONED|
-              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
-                limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- STREAM_LIMIT  |PARTITIONED|
-                  assign [$$101] <- [$$d.getField(1)] project: [$$97, $$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$101] <- [$$d.getField(1)] project: [$$97, $$101] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      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 project ({year:any,review:any,quarter:any}) filter on: eq($$d.getField(1), "good") range-filter on: eq($$d.getField(1), "good") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      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 project ({year:any,review:any,quarter:any}) filter on: eq($$d.getField(1), "good") range-filter on: eq($$d.getField(1), "good") [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.14.plan
index 3b7489f..7d20083 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_column/view/view-pushdown/view-pushdown.14.plan
@@ -1,28 +1,28 @@
-distribute result [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |UNPARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-    limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- STREAM_LIMIT  |UNPARTITIONED|
-      assign [$$69] <- [{"id": $$71, "review": $$75}] project: [$$69] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      assign [$$69] <- [{"id": $$71, "review": $$75}] project: [$$69] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- ASSIGN  |PARTITIONED|
-        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- SORT_MERGE_EXCHANGE [$$71(ASC) ]  |PARTITIONED|
-          limit 3 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          limit 3 [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- STREAM_LIMIT  |PARTITIONED|
-            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              order (topK: 3) (ASC, $$71) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              order (topK: 3) (ASC, $$71) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- STABLE_SORT [topK: 3] [$$71(ASC)]  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  assign [$$75] <- [$$d.getField(1)] project: [$$71, $$75] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  assign [$$75] <- [$$d.getField(1)] project: [$$71, $$75] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- ASSIGN  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan []<-[$$71, $$d] <- test.DatasetWithKnownField project ({review:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      data-scan []<-[$$71, $$d] <- test.DatasetWithKnownField project ({review:any}) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index 88abba5..3b03225 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -1,90 +1,90 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$74) project: [$$73, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$70, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$70, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                              select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$53, $$61, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$53, $$61, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- SPLIT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- BTREE_SEARCH  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                  assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$61, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$61, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                              select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$53, $$61] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$53, $$61] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |PARTITIONED|
-                                project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- SPLIT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index fe416df..6d8c0c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -1,90 +1,90 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$74) project: [$$73, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$70, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$70, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                              select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$53, $$61, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$53, $$61, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- SPLIT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- BTREE_SEARCH  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                  assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$61, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$61, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                              select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$53, $$61] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$53, $$61] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |PARTITIONED|
-                                project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- SPLIT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index 88abba5..3b03225 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -1,90 +1,90 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$74) project: [$$73, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$70, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$70, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                              select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$53, $$61, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$53, $$61, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- SPLIT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- BTREE_SEARCH  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                  assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$61, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$61, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                              select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$53, $$61] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$53, $$61] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |PARTITIONED|
-                                project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- SPLIT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$55] <- [int32($$t1.getField("c_int32"))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index fe416df..6d8c0c2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -1,90 +1,90 @@
-distribute result [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+distribute result [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
 -- DISTRIBUTE_RESULT  |PARTITIONED|
-  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+    assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] project: [$$52] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
     -- ASSIGN  |PARTITIONED|
-      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
       -- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ]  |PARTITIONED|
-        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+        order (ASC, $$73) (ASC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
         -- STABLE_SORT [$$73(ASC), $$54(ASC)]  |PARTITIONED|
-          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select ($$74) project: [$$73, $$54] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+            select ($$74) project: [$$73, $$54] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
             -- STREAM_SELECT  |PARTITIONED|
-              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+              window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
               -- WINDOW_STREAM  |PARTITIONED|
-                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                  order (ASC, $$73) (DESC, $$54) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                   -- STABLE_SORT [$$73(ASC), $$54(DESC)]  |PARTITIONED|
-                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                     -- HASH_PARTITION_EXCHANGE [$$73]  |PARTITIONED|
-                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                      union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                       -- UNION_ALL  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$70, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$70, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                              select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$53, $$61, $$70] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) project: [$$53, $$61, $$70] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |PARTITIONED|
-                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- BTREE_SEARCH  |PARTITIONED|
-                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      project ([$$53, $$55, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      project ([$$53, $$55, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- SPLIT  |PARTITIONED|
-                                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- BTREE_SEARCH  |PARTITIONED|
-                                                exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                                  assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ASSIGN  |PARTITIONED|
-                                                    exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                      data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                          empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                        exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$61, $$53]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                          project ([$$61, $$53]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                           -- STREAM_PROJECT  |PARTITIONED|
-                            exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                            exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                             -- RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
-                              select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$53, $$61] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                              select (eq($$55, $$60)) retain-untrue ($$61 <- missing) project: [$$53, $$61] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                               -- STREAM_SELECT  |PARTITIONED|
-                                project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                project ([$$53, $$55, $$60, $$61]) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                 -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    split ($$62) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                    split ($$62) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                     -- SPLIT  |PARTITIONED|
-                                      exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                      exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                        left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                         -- BTREE_SEARCH  |PARTITIONED|
-                                          exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                          exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                           -- BROADCAST_EXCHANGE  |PARTITIONED|
-                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                            assign [$$55] <- [int32($$t1.getField(1))] project: [$$53, $$55] [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                             -- ASSIGN  |PARTITIONED|
-                                              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                              exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                 -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                  exchange [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+                                                    empty-tuple-source [cardinality: 0.0, doc-size: 0.0, op-cost: 0.0, total-cost: 0.0]
                                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
index ac038d2..2271272 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
@@ -31,6 +31,8 @@
     // Integer
     String OP_INPUT_CARDINALITY = "INPUT_CARDINALITY";
     String OP_OUTPUT_CARDINALITY = "OUTPUT_CARDINALITY";
+    String OP_INPUT_DOCSIZE = "INPUT_DOCSIZE";
+    String OP_OUTPUT_DOCSIZE = "OUTPUT_DOCSIZE";
     String OP_COST_TOTAL = "TOTAL_COST";
     String OP_COST_LOCAL = "OP_COST";
     String OP_LEFT_EXCHANGE_COST = "LEFT_EXCHANGE_COST";
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/AbstractLogicalOperatorPrettyPrintVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/AbstractLogicalOperatorPrettyPrintVisitor.java
index 8a08161..fde4a08 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/AbstractLogicalOperatorPrettyPrintVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/AbstractLogicalOperatorPrettyPrintVisitor.java
@@ -36,6 +36,7 @@
 public abstract class AbstractLogicalOperatorPrettyPrintVisitor<T> implements ILogicalOperatorVisitor<Void, T> {
 
     protected static final String CARDINALITY = "cardinality";
+    protected static final String DOCSIZE = "doc-size";
     protected static final String OP_COST_LOCAL = "op-cost";
     protected static final String OP_COST_TOTAL = "total-cost";
     protected final ILogicalExpressionVisitor<String, T> exprVisitor;
@@ -89,6 +90,11 @@
         return (opCard != null) ? opCard : 0.0;
     }
 
+    protected double getOpDocSize(ILogicalOperator op) {
+        Double opDocSize = (Double) getAnnotationValue(op, OperatorAnnotations.OP_OUTPUT_DOCSIZE);
+        return (opDocSize != null) ? opDocSize : 0.0;
+    }
+
     protected double getOpLocalCost(ILogicalOperator op) {
         Double opLocalCost = (Double) getAnnotationValue(op, OperatorAnnotations.OP_COST_LOCAL);
         return (opLocalCost != null) ? opLocalCost : 0.0;
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
index f904c56..caf4774 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
@@ -131,11 +131,12 @@
 
     private void printOperatorImpl(AbstractLogicalOperator op, int indent, boolean printInputs,
             boolean printOptimizerEstimates) throws AlgebricksException {
-        double opCard, opLocalCost, opTotalCost;
+        double opCard, opDocSize, opLocalCost, opTotalCost;
 
         op.accept(this, indent);
         if (printOptimizerEstimates) {
             opCard = getOpCardinality(op);
+            opDocSize = getOpDocSize(op);
             opLocalCost = getOpLocalCost(op);
             opTotalCost = getOpTotalCost(op);
             buffer.append(" [");
@@ -143,6 +144,10 @@
             buffer.append(": ");
             buffer.append(Double.toString(opCard));
             buffer.append(", ");
+            buffer.append(DOCSIZE);
+            buffer.append(": ");
+            buffer.append(Double.toString(opDocSize));
+            buffer.append(", ");
             buffer.append(OP_COST_LOCAL);
             buffer.append(": ");
             buffer.append(Double.toString(opLocalCost));
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
index ee125bf..f358ef5 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
@@ -482,14 +482,16 @@
 
     private void generateCardCostFields(AbstractLogicalOperator op, boolean printOptimizerEstimates)
             throws AlgebricksException {
-        double opCard, opLocalCost, opTotalCost;
+        double opCard, opDocSize, opLocalCost, opTotalCost;
         if (printOptimizerEstimates) {
             opCard = getOpCardinality(op);
+            opDocSize = getOpDocSize(op);
             opLocalCost = getOpLocalCost(op);
             opTotalCost = getOpTotalCost(op);
             try {
                 jsonGenerator.writeObjectFieldStart(OPTIMIZER_ESTIMATES);
                 jsonGenerator.writeNumberField(CARDINALITY, opCard);
+                jsonGenerator.writeNumberField(DOCSIZE, opDocSize);
                 jsonGenerator.writeNumberField(OP_COST_LOCAL, opLocalCost);
                 jsonGenerator.writeNumberField(OP_COST_TOTAL, opTotalCost);
                 jsonGenerator.writeEndObject();
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
index f8fb6c2..9427aa0 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
@@ -554,6 +554,8 @@
                     case OperatorAnnotations.OP_COST_TOTAL:
                     case OperatorAnnotations.OP_INPUT_CARDINALITY:
                     case OperatorAnnotations.OP_OUTPUT_CARDINALITY:
+                    case OperatorAnnotations.OP_INPUT_DOCSIZE:
+                    case OperatorAnnotations.OP_OUTPUT_DOCSIZE:
                     case OperatorAnnotations.OP_LEFT_EXCHANGE_COST:
                     case OperatorAnnotations.OP_RIGHT_EXCHANGE_COST:
                         destOp.getAnnotations().put(annotation, annotationVal);