Lance
Docs /Specification /Table Format /Versioning

Format Versioning

Feature Flags

As the table format evolves, new feature flags are added to the format. There are two separate fields for checking for feature flags, depending on whether you are trying to read or write the table. Readers should check the reader_feature_flags to see if there are any flag it is not aware of. Writers should check writer_feature_flags. If either sees a flag they don't know, they should return an "unsupported" error on any read or write operation.

Current Feature Flags

Flag Bit Flag Name Reader Required Writer Required Description
1 FLAG_DELETION_FILES Yes Yes Fragments may contain deletion files, which record the tombstones of soft-deleted rows.
2 FLAG_STABLE_ROW_IDS Yes Yes Row IDs are stable for both moves and updates. Fragments contain an index mapping row IDs to row addresses.
4 FLAG_USE_V2_FORMAT_DEPRECATED No No Files are written with the new v2 format. This flag is deprecated and no longer used.
8 FLAG_TABLE_CONFIG No Yes Table config is present in the manifest.
16 FLAG_BASE_PATHS Yes Yes Dataset uses multiple base paths (for shallow clones or multi-base datasets).
32 FLAG_DISABLE_TRANSACTION_FILE No Yes Transactions are recorded in the manifest rather than in a separate transaction file.
64 FLAG_UNSTABLE_DATA_OVERLAY_FILES Yes Yes Fragments may carry data overlay files. Unstable: release builds reject it unless explicitly opted in.
128 FLAG_MEM_WAL_INDEX_CATCHUP Yes Yes index_catchup is maintained on this table, so an index absent from it is not caught up. See MemWAL.

Flags with bit values 256 and above are unknown and will cause implementations to reject the dataset with an "unsupported" error.