You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2017/02/20 07:40:36 UTC

incubator-systemml git commit: [SYSTEMML-1337] Fix frame left indexing w/ heterogeneous column schemas

Repository: incubator-systemml
Updated Branches:
  refs/heads/master 9d1816131 -> e1cad8a8b


[SYSTEMML-1337] Fix frame left indexing w/ heterogeneous column schemas

Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/e1cad8a8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/e1cad8a8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/e1cad8a8

Branch: refs/heads/master
Commit: e1cad8a8b76d2600f6771928df2af25aadfcbcf9
Parents: 9d18161
Author: Matthias Boehm <mb...@gmail.com>
Authored: Sun Feb 19 23:40:53 2017 -0800
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Sun Feb 19 23:40:53 2017 -0800

----------------------------------------------------------------------
 .../apache/sysml/runtime/matrix/data/FrameBlock.java   | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/e1cad8a8/src/main/java/org/apache/sysml/runtime/matrix/data/FrameBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/FrameBlock.java b/src/main/java/org/apache/sysml/runtime/matrix/data/FrameBlock.java
index 3420e32..99a6f3f 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/FrameBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/FrameBlock.java
@@ -756,8 +756,17 @@ public class FrameBlock implements Writable, CacheBlock, Externalizable
 		//copy data to output and partial overwrite w/ rhs
 		for( int j=0; j<getNumColumns(); j++ ) {
 			Array tmp = _coldata[j].clone();
-			if( j>=cl && j<=cu )
-				tmp.set(rl, ru, rhsFrame._coldata[j-cl]);
+			if( j>=cl && j<=cu ) {
+				//fast-path for homogeneous column schemas
+				if( _schema[j]==rhsFrame._schema[j-cl] )
+					tmp.set(rl, ru, rhsFrame._coldata[j-cl]);
+				//general-path for heterogeneous column schemas
+				else {
+					for( int i=rl; i<=ru; i++ )
+						tmp.set(i, UtilFunctions.objectToObject(
+							_schema[j], rhsFrame._coldata[j-cl].get(i-rl)));
+				}
+			}
 			ret._coldata[j] = tmp;
 		}