SP
Add nullable column support (NullableBigInt) [#183]
spaceandtimefdn/sxt-proof-of-sql#1120

/claim #183

Summary

  • End-to-end nullable bigint proof using NaiveEvaluationProof mixing nullable and non-nullable columns with validity filtering.
  • Canonical null enforcement preserved while supporting nullable plus non-nullable arithmetic helpers.
  • PoC repro, logs, and unicode control scan captured in deliverables for reviewers.
  • Changes scoped to nullable column path and validity handling to reduce blast radius.

Acceptance criteria (Issue #183)

  • Nullable mechanism: NullableOwnedColumn/NullableColumn with validity masks and canonical null checks in crates/proof-of-sql/src/base/database/validity.rs.
  • Nullable arithmetic: helpers for nullable columns and mixed nullable plus non-nullable sums live in crates/proof-of-sql/src/base/database/owned_column.rs and related tests cover both paths.
  • Non-trivial proof: PoC below proves a query over nullable bigint data plus a non-nullable column with validity-driven filtering.

Non-trivial proof PoC

  • Location: crates/proof-of-sql/src/base/database/nullable_column_proof_test.rs::test_nullable_bigint_proof_with_nulls_and_nonnullable_mix.
  • Command: cargo test -p proof-of-sql –no-default-features –features=“arrow cpu-perf test” – test_nullable_bigint_proof_with_nulls_and_nonnullable_mix –nocapture
  • Expectation: proof builds and verifies; summed outputs for valid rows are 10, 16, 22.

Notes on canonical null invariant + validity masks

Canonical nulls stay represented by a fixed sentinel value and every nullable column carries a validity mask; arithmetic helpers gate contributions by this mask so nulls never affect aggregates, and mixed nullable plus non-nullable operations honor the mask before combining values.

Claim

Total prize pool $10,000
Total paid $0
Status Pending
Submitted January 16, 2026
Last updated January 16, 2026

Contributors

NT

ntoledo319

@ntoledo319

100%

Sponsors

SP

Space and Time

@spaceandtimelabs

$10,000