You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/src/format/table/versioning.md
+61Lines changed: 61 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,3 +36,64 @@ they should return an "unsupported" error on any read or write operation.
36
36
</div>
37
37
38
38
Flags with bit values 512 and above are unknown and will cause implementations to reject the dataset with an "unsupported" error. The paired mixed-version reader and writer bits must either both be set or both be clear; a half-set manifest is invalid.
39
+
40
+
## Mixed V2 Data File Versions
41
+
42
+
The manifest data storage version is the default for operations that do not
43
+
select an exact output version. It is a fallback, not a summary, minimum,
44
+
maximum, or profile of the data files referenced by the snapshot. Once
45
+
`FLAG_MIXED_DATA_FILE_VERSIONS` is enabled, each base data file and data overlay
46
+
file is decoded according to its own normalized version identity.
47
+
48
+
Mixed snapshots have the following invariants:
49
+
50
+
- Only exact V2.0, V2.1, V2.2, and V2.3 data file versions may be mixed.
51
+
- V1 and V2 data files may not appear in the same snapshot.
52
+
- A commit that first produces a mixed snapshot derives and sets both the reader
53
+
and writer capability bits from its final manifest. The bits remain set on all
54
+
later snapshots, even if a later compaction makes the files homogeneous again.
55
+
- A snapshot without the capability may only reference files matching its
56
+
manifest fallback. The only repair exception is an unambiguous, homogeneous
57
+
historical V2 snapshot whose legacy manifest metadata is stale.
58
+
- An operation-level `data_storage_version` selects the exact output version
59
+
for that operation. Omitting it uses the manifest fallback. Neither case
60
+
changes the fallback.
61
+
62
+
For example, a dataset whose fallback is V2.1 can append V2.2 files by setting
63
+
`data_storage_version="2.2"`. The same commit adds both mixed-version capability
64
+
bits. Reads then dispatch V2.1 files to the V2.1 decoder and V2.2 files to the
65
+
V2.2 decoder. Compaction can deliberately rewrite selected fragments to any
66
+
supported exact V2 target; binary copy is only valid when every selected input
67
+
file already has that exact target version.
68
+
69
+
### Compatibility Matrix
70
+
71
+
| Dataset state | Mixed-aware client | Client without bit 256 support |
72
+
| --- | --- | --- |
73
+
| Historical homogeneous V1 | Reads and writes through legacy paths | Unchanged |
0 commit comments