Skip to content

Commit f7af63f

Browse files
committed
[SYSTEMDS-3818] Fix parsing of indexing operations (scalar datatype)
This patch fixes an edge case of print(X[1,]) where the indexing is mistakenly created with scalar data type because the print accepts scalar. However, later we introduce print(toString(X[1,])). We now simply make the parsing more robust as indexing is never scalar other than forced by internal rewrites.
1 parent 615cd9a commit f7af63f

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

src/main/java/org/apache/sysds/parser/DMLTranslator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1686,11 +1686,13 @@ private Hop processIndexingExpression(IndexedIdentifier source, DataIdentifier t
16861686
if (target == null) {
16871687
target = createTarget(source);
16881688
}
1689+
16891690
//unknown nnz after range indexing (applies to indexing op but also
16901691
//data dependent operations)
16911692
target.setNnz(-1);
16921693

1693-
Hop indexOp = new IndexingOp(target.getName(), target.getDataType(), target.getValueType(),
1694+
DataType dt = target.getDataType().isScalar() ? DataType.MATRIX : target.getDataType();
1695+
Hop indexOp = new IndexingOp(target.getName(), dt, target.getValueType(),
16941696
hops.get(source.getName()), ixRange[0], ixRange[1], ixRange[2], ixRange[3],
16951697
source.getRowLowerEqualsUpper(), source.getColLowerEqualsUpper());
16961698

src/test/scripts/functions/rewrite/RewriteNonScalarPrint.dml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ else if(type==3){ # standard list case
3636
print(A_list)
3737
}
3838
else if(type==4){ # slice row from matrix
39-
A_row = A[1,]
40-
print(A_row) # print(A[1,]) produces incorrect output
39+
print(A[1,])
4140
}
4241
else if(type==5){ # slice column from matrix
4342
A_col = A[,1]

0 commit comments

Comments
 (0)