Skip to content

test: cover semantic type compatibility and failure semantics - #9497

Draft
Xuanwo wants to merge 4 commits into
xuanwo/semantic-type-extensionsfrom
xuanwo/semantic-type-compat
Draft

Xuanwo wants to merge 4 commits into
xuanwo/semantic-type-extensionsfrom
xuanwo/semantic-type-compat

Conversation

@Xuanwo

@Xuanwo Xuanwo commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

Stacked on #9496; like the rest of the stack it should wait for #9485.

This covers the compatibility promises and the failure table of #7073 across the stack.

  • test_data/v12.0.0/legacy_aliases is a table written by Lance 12.0.0 on data storage 2.2 with large_string, a string dictionary, decimal:256:10:2, large_list, and large_binary columns; datagen.py asserts the version. It stays a legacy table with exact types until migrated. Migrating it keeps the read types, values, and field IDs, and then accepts appends in other layouts. No 2.3 fixture is added, because 2.3 was unstable in every released version.
  • A compat test writes a table with the current build and checks that released Lance versions refuse to read or write it. In the other direction, a table an older version wrote stays readable by that version after the current build appends to it, which shows the current build never sets the flag implicitly.
  • Each row of the failure table has a test:
    • An input that is not an accepted input fails before any data file is written.
    • Invalid JSON input names the field path and the row. This PR adds both to the error; before, it named neither.
    • A layout mismatch at the encoder is the feat: check write inputs against the data file schema at a single boundary #9478 check.
    • A value that does not fit the requested layout fails the read with its size.
    • An invalid output encoding entry is rejected when set.
    • An unknown entry is ignored on read and kept on write.

This branch has not been deployed

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

Labels

A-python Python bindings chore

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant