Skip to content

Conversation

@XuQianJin-Stars
Copy link
Contributor

Purpose

Linked issue: close #1973

Introduce MAP type support for INDEXED format, achieving feature parity with ARROW and COMPACTED formats for MAP data type handling.

Brief change log

  • Added readMap() method to IndexedRowReader for MAP type deserialization, following the same pattern as readArray()
  • Removed UnsupportedOperationException for MAP type in IndexedRowReader.createFieldReader()
  • Added missing InternalMap import to IndexedRowReader
  • Updated BinaryWriterTest.testCreateValueSetterForMapThrowsException() to testValueSetterWithMapType() - changed from exception test to positive validation test
  • Extended IndexedRowTest.assertAllTypeEquals() to include MAP type assertions (validates size, key array, value array, and null handling)
  • Extended IndexedRowReaderTest.assertAllTypeEqualsForReader() to verify MAP reading

Tests

Unit Tests:

  • IndexedRowTest (7 tests) - Validates MAP read/write operations with IndexedRow
  • IndexedRowReaderTest (2 tests) - Validates MAP deserialization with IndexedRowReader
  • BinaryWriterTest (18 tests) - Validates MAP type ValueWriter creation and usage
  • ArrowReaderWriterTest (2 tests) - Confirms ARROW format MAP support continues to work
  • CompactedRowTest (20 tests) - Confirms COMPACTED format MAP support continues to work

Test Results: All 49 tests passed successfully (0 failures, 0 errors, 0 skipped)

Test Command:
mvn test -pl fluss-common -Dtest=IndexedRowTest,IndexedRowReaderTest,BinaryWriterTest,ArrowReaderWriterTest,CompactedRowTest -Dcheckstyle.skip=true -Dspotless.check.skip=true### API and Format

API: No breaking changes. This is purely additive functionality that removes an UnsupportedOperationException and enables existing MAP type infrastructure for INDEXED format.

Storage Format: No format changes. The MAP storage format in INDEXED rows was already defined and uses the same BinaryMap serialization mechanism as other formats. This change only enables reading MAP data that was already writeable.

Documentation

No documentation changes required. This change brings INDEXED format to feature parity with ARROW and COMPACTED formats for MAP type support. MAP type usage is already documented in existing Fluss documentation. The change completes internal implementation of existing functionality rather than introducing new user-facing features.

@XuQianJin-Stars
Copy link
Contributor Author

Do not review or merge this PR before merging this PR: #2079.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support Map type in log table (Arrow row format)

1 participant