Gabriel39 opened a new pull request, #69967:
URL: https://github.com/apache/doris/pull/69967

   ### What problem does this PR solve?
   
   Issue Number: N/A
   
   Problem Summary:
   
   The native Parquet reader rejects every BOOLEAN dictionary page, although 
PLAIN dictionaries with RLE_DICTIONARY or legacy PLAIN_DICTIONARY data pages 
are valid. Reading a nullable BOOLEAN interoperability fixture fails with 
`Boolean type cannot have a dictionary page`.
   
   Create the existing fixed-length dictionary decoder for BOOLEAN and expand 
its LSB-first packed entries into tracked, contiguous one-byte values for 
SerDe. Validate the packed extent before allocation and preserve the common 
dictionary-index checks for reads, selections, and skips.
   
   The 257-byte interoperability fixture comes from 
[StarRocks/starrocks#81788](https://github.com/StarRocks/starrocks/pull/81788). 
Tests also cover byte boundaries, invalid extents, dictionary replacement, both 
dictionary encoding enums, V1/V2 pages, skipped/filtered values, and 
dictionary-to-PLAIN transitions.
   
   ### Release note
   
   Support reading dictionary-encoded BOOLEAN columns from Parquet files.
   
   ### Check List (For Author)
   
   - Test
       - [ ] Regression test
       - [x] Unit Test: ASAN BE tests; all 199 tests in 
`ParquetV2NativeDecoderTest.*:NewParquetReaderTest.*` pass. The five new tests 
fail before the fix and pass after it.
       - [ ] Manual test
   - Behavior changed:
       - [x] Yes. Valid BOOLEAN dictionaries are readable instead of being 
rejected.
   - Does this need documentation?
       - [x] No. Compatibility fix for existing Parquet reads.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to