[MINOR] Improve robustness in partial reuse.
diff --git a/src/main/java/org/apache/sysds/runtime/lineage/LineageCacheConfig.java b/src/main/java/org/apache/sysds/runtime/lineage/LineageCacheConfig.java
index b610a96..3bc4689 100644
--- a/src/main/java/org/apache/sysds/runtime/lineage/LineageCacheConfig.java
+++ b/src/main/java/org/apache/sysds/runtime/lineage/LineageCacheConfig.java
@@ -39,7 +39,7 @@
"rightIndex", "leftIndex", "groupedagg", "r'", "solve", "spoof",
"uamean", "max", "min", "ifelse", "-", "sqrt", ">", "uak+", "<=",
"^", "uamax", "uark+", "uacmean", "eigen", "ctableexpand", "replace",
- "^2", "uack+", "tak+*", "uacsqk+", "uark+"
+ "^2", "uack+", "tak+*", "uacsqk+", "uark+", "n+"
//TODO: Reuse everything.
};
private static String[] REUSE_OPCODES = new String[] {};
diff --git a/src/main/java/org/apache/sysds/runtime/lineage/LineageRewriteReuse.java b/src/main/java/org/apache/sysds/runtime/lineage/LineageRewriteReuse.java
index 829ab43..978ffda 100644
--- a/src/main/java/org/apache/sysds/runtime/lineage/LineageRewriteReuse.java
+++ b/src/main/java/org/apache/sysds/runtime/lineage/LineageRewriteReuse.java
@@ -800,7 +800,7 @@
if (LineageCache.probe(tmp))
inCache.put("lastMatrix", LineageCache.getMatrix(tmp));
// look for the appended column in cache
- if (LineageCache.probe(source.getInputs()[1]))
+ if (source.getInputs().length>1 && LineageCache.probe(source.getInputs()[1]))
inCache.put("deltaX", LineageCache.getMatrix(source.getInputs()[1]));
}
}
@@ -1105,11 +1105,17 @@
}
private static LineageItem reduceColByOne(LineageItem cu) {
- String data = cu.getData(); //xx·SCALAR·INT64·true
- String[] parts = data.split(Instruction.VALUETYPE_PREFIX);
- int cuNum = Integer.valueOf(parts[0]);
- parts[0] = String.valueOf(cuNum-1);
- String old_data = InstructionUtils.concatOperandParts(parts);
+ String old_data = null;
+ try {
+ String data = cu.getData(); //xx·SCALAR·INT64·true
+ String[] parts = data.split(Instruction.VALUETYPE_PREFIX);
+ float cuNum = Float.valueOf(parts[0]);
+ parts[0] = String.valueOf((int)cuNum-1);
+ old_data = InstructionUtils.concatOperandParts(parts);
+ }
+ catch (Exception e) {
+ throw new DMLRuntimeException("Error reading 'cu' from RightIndex instruction" , e);
+ }
return(new LineageItem(old_data));
}