Skip to content

Commit

Permalink
Fix String Frame Readers to read String Arrays correctly (#16885)
Browse files Browse the repository at this point in the history
While writing to a frame, String arrays are written by setting the multivalue byte.
But while reading, it was hardcoded to false.
  • Loading branch information
sreemanamala authored Sep 10, 2024
1 parent 72fbaf2 commit c7c3307
Show file tree
Hide file tree
Showing 7 changed files with 603 additions and 274 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -480,9 +480,8 @@ public int numRows()
public boolean isNull(int rowNum)
{
final long fieldPosition = coach.computeFieldPosition(rowNum);
byte[] nullBytes = new byte[3];
dataRegion.getByteArray(fieldPosition, nullBytes, 0, 3);
return Arrays.equals(nullBytes, EXPECTED_BYTES_FOR_NULL);
return dataRegion.getByte(fieldPosition) == StringFieldWriter.NULL_ROW
&& dataRegion.getByte(fieldPosition + 1) == StringFieldWriter.ROW_TERMINATOR;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@ public static FrameColumnReader create(
return new DoubleFrameColumnReader(columnNumber);

case STRING:
return new StringFrameColumnReader(columnNumber, false);
return new StringFrameColumnReader(columnNumber);

case COMPLEX:
return new ComplexFrameColumnReader(columnNumber);

case ARRAY:
switch (columnType.getElementType().getType()) {
case STRING:
return new StringFrameColumnReader(columnNumber, true);
return new StringArrayFrameColumnReader(columnNumber);
case LONG:
return new LongArrayFrameColumnReader(columnNumber);
case FLOAT:
Expand Down
Loading

0 comments on commit c7c3307

Please sign in to comment.