Supported formats (version floor)
Issue #1249 codified this as a hard rule after roborev repeatedly raised
“regression for older SSTable versions” findings on pre-na (Cassandra 3.x)
formats — formats CQLite does not read at all. The churn came from dead version-gate
modeling surface that looked like pre-na support. This page is the single
authoritative statement of the support floor.
The rule
Section titled “The rule”CQLite targets Cassandra 5.0. na+/nb BIG and oa/da BTI are in scope.
Pre-na (ma–me, Cassandra 3.x) is out of scope and SHALL NOT be introduced,
supported, or reviewed for correctness.
| Format | In scope | Out of scope |
|---|---|---|
| BIG | na, nb, oa | ma–me (Cassandra 3.x) and anything < na |
| BTI | da | any version other than da |
For reviewers (including roborev)
Section titled “For reviewers (including roborev)”- Do not re-litigate pre-
nacorrectness. A branch, gate, or test that touchesma–meis not a regression surface — pre-nareads are unsupported by design. - Do not request changes that “fix” pre-
nabehaviour, add pre-nagates, or restore deleted pre-namodeling code. The floor is the contract.
How it is enforced
Section titled “How it is enforced”The floor lives in version parsing and is propagated by the reader:
BigVersionGates::from_versionreturnsError::UnsupportedVersion { version, floor: "na" }for any BIG version< na. It never constructs gates for a below-floor version.BtiVersionGates::from_versionreturnsError::UnsupportedVersion { version, floor: "da" }for any BTI version other thanda.SSTableReader::openpropagatesError::UnsupportedVersioninstead of degrading to thenbfallback. Only a structurally-unparseable descriptor (not a parsed-but-below-floor one) may use the fallback.
The rejection happens before any row data is read. Error::UnsupportedVersion maps to the
non-recoverable ErrorCategory::Data.