Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions adr/0002-pluggable-dtype-layout-compute.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@
- **Deciders:** project maintainer
- **Related:** [ADR 0001 — Split read and write runtimes](0001-split-read-and-write-runtimes.md)

> **Update (2026-10-20):** the "Java status today" table below predates several changes.
> Encodings are registered on the builder-only `ReadRegistry`/`WriteRegistry`, with no
> `ServiceLoader` and no auto-discovery (as in Rust). Layout decoding is pluggable through
> `LayoutRegistry` (unknown layouts always fail, no allow-unknown). `DType` is still sealed and
> extensible only through `DType.Extension` with a registered `ExtensionDecoder`/`ExtensionEncoder`
> (the Rust `ExtVTable` model). A compute layer now exists in `reader.compute`
> (ADR 0013, ADR 0019) but has no registration SPI. Of this ADR's decision, "keep `DType` sealed"
> and "no compute SPI" still hold; "keep `Layout` sealed" no longer does.

## Context

The Rust reference implementation
Expand Down
9 changes: 9 additions & 0 deletions adr/0005-vector-api-adoption.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@
- **Deciders:** project maintainer
- **Related:** [CLAUDE.md §Memory model — Hot-loop rule](../CLAUDE.md)

> **Update (2026-10-20):** the Vector API was adopted regardless of condition 1 (PR #524). The
> kernels shared by reader and writer sit behind `SimdOperations` in `core.simd`, with
> `AutoVectorizedSimdOperations` (C2-shaped loops, the default) and `VectorApiSimdOperations`
> (opt-in via `--add-modules jdk.incubator.vector`); `SimdOperationsSupport#preferred()` picks one.
> Both give Rust-parity results, `scripts/simd-benchmark.sh` (also a CI job) measures the
> speedups, and the module's incubating status is the only reason it is opt-in. This is
> Strategy A by module detection, not the rejected Strategy B (`DecodeContext` flag). The
> decision text below is kept as written for the record.

## Context

Two TODO items describe Vector API adoption:
Expand Down
9 changes: 9 additions & 0 deletions adr/0018-calcite-sql-adapter.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@
[ADR 0016 — vortex-arrow bridge](0016-vortex-arrow-bridge.md),
[ADR 0005 — Vector API adoption](0005-vector-api-adoption.md)

> **Update (2026-10-20):** the adapter has grown past the phases recorded here, so treat
> "not yet" and "still scans for now" below as dated. It now also pushes down `ORDER BY` and
> `ORDER BY ... LIMIT` (`VortexSortPushDownRule`), `GROUP BY` on dictionary-encoded string,
> boolean and integer columns (`Compute.groupedAggregate`), `COUNT(DISTINCT)`, `SELECT DISTINCT`
> and `LIKE 'prefix%'`, reports table row counts to the planner, and exposes a directory of
> `.vortex` files as tables (`VortexCalcite.connect(Path)`, `VortexSchemaFactory`). The
> `jdbc-driver` module wraps that as a `jdbc:vortex:<dir>` JDBC driver. See `CHANGELOG.md` for
> the per-release detail.

## Context

The reader exposes typed zero-copy columns and (ADR 0013) a path to filter/aggregate
Expand Down
7 changes: 7 additions & 0 deletions adr/0019-columnar-transducer-facade.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@
- **Supersedes:** —
- **Superseded by:** —

> **Update (2026-10-20):** the façade is still unbuilt, but the bespoke-static-method path this
> ADR warns about kept growing, and some of the blockers named below are gone. `Compute` now has
> `matches`, `matcher(Chunk, RowFilter)` and `matcher(RowFilter)` (a per-scan row test returning a
> `RowSelection` with `nextSelected(long)`) and `groupedAggregate`, and `GROUP BY` push-down
> (ADR 0018's Phase 3) shipped through it. Status stays Proposed: nothing composes a chunk-level
> computation yet, and each new capability is still another static entry point.

## Context

ADR 0013 shipped the compute primitives as two fused kernels behind `reader.compute.Compute`:
Expand Down
14 changes: 7 additions & 7 deletions adr/0020-jazzer-fuzz-infrastructure.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# ADR 0020: Jazzer fuzz testing infrastructure

- **Status:** Accepted — fuzz mode landed as a dedicated `fuzz` module with one target
(`VortexReader` full-file open), seeded with a handful of existing small reader fixtures so the
mutator starts past the trailer magic instead of having to guess it; direct
`PostscriptParser.parseBlobs` fuzzing is deferred (it is package-private, so a separate module
needs a cross-module access seam); automated per-encoding corpus extraction, per-encoding
targets, differential fuzzing, regression-corpus wiring, nightly CI, and OSS-Fuzz submission
still pending
- **Status:** Accepted — implemented in a dedicated `fuzz` module (reader `open`, `scan`,
`filter` and metadata-blob targets, plus an FSST round-trip) and in `integration`
(`WriteReadFuzzIntegrationTest`: write→read round-trip and the vortex-jni differential). Each
target replays its saved inputs (seeds plus every past finding) in the routine build, and the
weekly `Fuzz` workflow explores new ones. Still pending: automated per-encoding corpus
extraction, per-encoding targets, and OSS-Fuzz submission. The detail below describes the first
cut (one target, five hand-picked seeds) and is kept as written.
- **Date:** 2026-07-12
- **Deciders:** project maintainer
- **Related:** [ADR 0003 — VortexException sanitization](0003-vortex-exception-sanitization.md),
Expand Down
Loading