Latest Results
Add more scalar literal types to the Python and JNI bindings
Python (`vx.scalar` and anything that accepts an expression):
- `datetime.time` as `vortex.time`, `datetime.date` as `vortex.date` and
`datetime.datetime` as `vortex.timestamp`, taking the unit (and timezone)
from a dtype hint and defaulting to microseconds (days for dates).
Timezone-aware values store the UTC instant and take their zone name from
`zoneinfo.ZoneInfo`, pytz or `datetime.timezone.utc`; pandas.Timestamp
nanoseconds are kept for nanosecond timestamps.
- `decimal.Decimal`, inferring precision and scale or rescaling exactly to
a decimal dtype hint.
- `uuid.UUID` as `vortex.uuid`.
- Conversions that would lose precision raise ValueError instead of
truncating.
- Fix list and dict values with a list/struct dtype hint: the list was never
returned, and struct fields were not cast to the field dtypes, which
panicked. Both now cast each element/field to its dtype.
- Document `vx.scalar`.
JNI (`dev.vortex.api.Expression`):
- `literalTime`/`nullLiteralTime` and `literalGeometry` (WKB decoded into the
native spatial extension type).
- `literalU8/U16/U32/U64`, `literalF16`, and U8-U64 and F16 null literals.
- `literalList`, `literalFixedSizeList`, `literalStruct` and `literalMap`
(plus null variants), assembled from literal expressions with a type
prototype literal for element, key and value dtypes.
- `Expression.spatial(SpatialFunction, ...)` for area, collect, contains,
convex hull, distance, envelope, intersects, length and make-line, with
the function codes pinned by the tag parity test.
Signed-off-by: Robert Kruszewski <robert@spiraldb.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012A8yJW1z27J5b5N5TW2QMeclaude/sleepy-tesla-7juwu4 Gate compat fixture writes with editions (#10077)
## Summary
Compat fixtures are written with `disable_editions()`, so a fixture can
record an encoding with no read-compatibility guarantee. Once published,
the additive-only manifest rule makes that encoding permanent. This PR
writes fixtures under the default session's enabled editions
(`core2026.08.3`), so a fixture can only emit encodings an edition
already guarantees.
## Changes
- **Gated writes.** `adapter::write_compressed` and
`adapter::write_compressed_to_bytes_with_session` no longer call
`disable_editions()`. `check` regenerates its comparison files through
the same path, so it is gated too.
- **Dataset compressor.** TPC-H and ClickBench fixtures build their
compressor and write strategy from `VortexSession::default()`, the
session the file is written with, instead of from `array_session()` with
`disable_editions()`. Since #10067,
`BtrBlocksCompressorBuilder::from_session` keeps only schemes whose
encodings the session registers and its editions allow. The compressor
therefore can't choose an encoding the gated write would reject, such as
`vortex.patched` under `VORTEX_EXPERIMENTAL_PATCHES`. The regular and
compact variants now share one code path.
- **`decimal_byte_parts_v2.vortex` disabled**, like `delta` and
`patched`. It writes `vortex.decimal_byte_parts.v2`, which no edition
includes yet. It isn't in any published manifest (checked through
0.86.1), so removing it doesn't break the additive-only rule. It comes
back once DBP v2 joins an edition.
- **`DESIGN.md`** notes that new fixtures must use encodings from an
enabled edition.
Every fixture in the 0.86.1 manifest uses `core` encodings. That comes
from reading the code, not from a run, so the published fixture set
should be unchanged.
## Checks
- [x] `cargo clippy -p vortex-compat --all-targets --all-features -- -D
warnings`
- [x] `cargo +nightly-2026-09-10 fmt -p vortex-compat --check`
- [ ] `cargo nextest run -p vortex-compat`
- [ ] `cargo run -p vortex-compat --release -- generate --output
/tmp/compat --exclude clickbench`: confirms every remaining fixture
writes under `core`
---------
Signed-off-by: Matt Katz <mhkatz97@gmail.com> Latest Branches
0%
claude/sleepy-tesla-7juwu4 -12%
rk/compressor-constant-fastpath -10%
ct/btrblocks-test-cleanup © 2026 CodSpeed Technology