DRILL-958: Fix Parquet bug with fixed width nullable column.
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/c022b403 Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/c022b403 Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/c022b403 Branch: refs/heads/master Commit: c022b403e8fef15797f0ad6b9290a304f6de0c5c Parents: 9e7b14a Author: Jason Altekruse <[email protected]> Authored: Sat Jun 14 22:30:16 2014 -0500 Committer: Jacques Nadeau <[email protected]> Committed: Mon Jun 16 12:44:32 2014 -0700 ---------------------------------------------------------------------- .../drill/exec/store/parquet/NullableColumnReader.java | 3 ++- .../exec/store/parquet/ParquetRecordReaderTest.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c022b403/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/NullableColumnReader.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/NullableColumnReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/NullableColumnReader.java index eeb0344..585fd66 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/NullableColumnReader.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/NullableColumnReader.java @@ -63,7 +63,7 @@ abstract class NullableColumnReader<V extends ValueVector> extends ColumnReader< // are located and copied together, rather than copying individual values long runStart = pageReadStatus.readPosInBytes; - int runLength = 0; + int runLength; int currentDefinitionLevel = 0; int currentValueIndexInVector = (int) recordsReadInThisIteration; boolean lastValueWasNull = true; @@ -73,6 +73,7 @@ abstract class NullableColumnReader<V extends ValueVector> extends ColumnReader< definitionLevelsRead = 0; lastValueWasNull = true; nullsFound = 0; + runLength = 0; if (currentValueIndexInVector == recordsToReadInThisPass || currentValueIndexInVector >= valueVec.getValueCapacity()) { break; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c022b403/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/ParquetRecordReaderTest.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/ParquetRecordReaderTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/ParquetRecordReaderTest.java index ad63dc9..fbe037b 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/ParquetRecordReaderTest.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/ParquetRecordReaderTest.java @@ -392,6 +392,17 @@ public class ParquetRecordReaderTest extends BaseTestQuery{ "unused, no file is generated", 1, props, true); } + @Ignore + @Test + public void drill_958bugTest() throws Exception { + HashMap<String, FieldInfo> fields = new HashMap<>(); + ParquetTestProperties props = new ParquetTestProperties(5, 300000, DEFAULT_BYTES_PER_PAGE, fields); + TestFileGenerator.populatePigTPCHCustomerFields(props); + String readEntries = "\"/tmp/store_sales\""; + testParquetFullEngineEventBased(false, false, "/parquet/parquet_scan_screen_read_entry_replace.json", readEntries, + "unused, no file is generated", 1, props, true); + } + @Test public void testMultipleRowGroupsEvent() throws Exception { HashMap<String, FieldInfo> fields = new HashMap<>();
