Skip to content

Add result-verified QuestDB adapter#32

Merged
frahlg merged 1 commit into
mainfrom
codex/m4-questdb-adapter
Jul 21, 2026
Merged

Add result-verified QuestDB adapter#32
frahlg merged 1 commit into
mainfrom
codex/m4-questdb-adapter

Conversation

@frahlg

@frahlg frahlg commented Jul 21, 2026

Copy link
Copy Markdown
Member

Summary

  • validate the portable summary, CSV header, counts, CRC32, and every numeric point field
  • pin summary.txt and points.csv with SHA-256 from validation through import
  • refuse a QuestDB volume that already contains any table before creating or writing data
  • store every point through ILP/HTTP with valid time as QuestDB's designated timestamp
  • wait for the exact visible row count, then verify site-0 grid count/sum/min/max with SAMPLE BY 5m ALIGN TO FIRST OBSERVATION
  • report the stored-revision subset, image, settings, timings, checksums, durability limit, and adapter gaps in one JSON line
  • run the Python unit tests on Ubuntu and macOS CI

Real QuestDB 9.4.3 checks

Pinned image: questdb/questdb:9.4.3@sha256:3fd139f9f16015afc1b064fe4591b271be26cdec10315415e5511e9d80a5919e

  • unaligned start 1767225601234567: 9,438 visible rows, 288 exact buckets, result CRC32 82607103
  • standard seven-day bundle: 65,958 visible rows, 2,016 exact buckets, result CRC32 cc32df51
  • every stored field was non-null on all 65,958 standard rows; the live schema matched the declared TIMESTAMP, LONG, and VARCHAR types
  • a second run against the same volume stopped before ingest
  • a changed query bucket fails result verification

The query uses [first,last), so it excludes the generator's final closing point. It uses ALIGN TO FIRST OBSERVATION; it does not round the start with WITH OFFSET.

Tests

  • python3 -m unittest -v bench.adapters.test_questdb
  • cargo fmt --all -- --check
  • cargo clippy --all-targets --all-features --locked --offline -- -D warnings
  • cargo test --all-targets --all-features --locked --offline
  • cargo test --doc --all-features --locked --offline
  • emulator build, fmt, Clippy, and all-target tests with --locked --offline
  • docker compose -f bench/compose.yml config --quiet

Scope

QuestDB stores all portable point rows and the three revision times. This adapter verifies only site-0 grid actuals. Catalog import, plan-record import, and a DST calendar query remain not_implemented; this does not claim that QuestDB lacks those features. WAL plus ILP/HTTP acknowledgement is not claimed equal to FTWDB sync durability.

@frahlg
frahlg force-pushed the codex/m4-questdb-adapter branch from 221d28e to 0a9ac42 Compare July 21, 2026 16:51
@frahlg
frahlg marked this pull request as ready for review July 21, 2026 16:55
@frahlg
frahlg merged commit 0b14906 into main Jul 21, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant