[MINOR] CUMSUM on empty matrix
In aggregateUnaryMatrixEmpty cumulative sum on an empty matrix is a no-op.
I added the switch case to this since i ran into an edge case where
spark would say unsupported aggregation type.
Also added is a test that verify this bug.
diff --git a/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixAgg.java b/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixAgg.java
index d9578ae..722eeca 100644
--- a/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixAgg.java
+++ b/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixAgg.java
@@ -1639,7 +1639,9 @@
out.quickSetValue(2, j, in.rlen); //count
break;
}
-
+ case CUM_SUM_PROD:{
+ break;
+ }
default:
throw new DMLRuntimeException("Unsupported aggregation type: "+optype);
}
diff --git a/src/test/java/org/apache/sysds/test/component/matrix/CumsumprodTest.java b/src/test/java/org/apache/sysds/test/component/matrix/CumsumprodTest.java
index 3ad96fe..2aa9fb9 100644
--- a/src/test/java/org/apache/sysds/test/component/matrix/CumsumprodTest.java
+++ b/src/test/java/org/apache/sysds/test/component/matrix/CumsumprodTest.java
@@ -62,4 +62,13 @@
MatrixBlock B = A.unaryOperations(uop, new MatrixBlock());
assertEquals(1000, B.getNumRows());
}
+
+ @Test
+ public void testCumsumprodEmpty() {
+ MatrixBlock A = MatrixBlock.randOperations(1000, 2, 0.00, 0, 10, "uniform", 7);
+ A = new MatrixBlock(A, SparseBlock.Type.MCSR, true);
+ UnaryOperator uop = new UnaryOperator(Builtin.getBuiltinFnObject("ucumk+*"), 1, false);
+ MatrixBlock B = A.unaryOperations(uop, new MatrixBlock());
+ assertEquals(1000, B.getNumRows());
+ }
}