Skip to content

HeliosDB Nano v3.19.1 Release Notes

HeliosDB Nano v3.19.1 Release Notes

Release Date: 2026-04-25 Theme: UUID literal coercion fix at PK index lookup (#205)


Highlights

Resolves the CloudV2 admin_db “INSERT-then-SELECT-misses-the-row” bug. Root cause was a planner literal-typing bug: SELECT … WHERE id = '<uuid>' against a UUID-typed PK emitted Value::String("<uuid>") regardless of the column’s declared type. The ART point-lookup encoded the search key by Value variant, so Value::String and Value::Uuid produced different encoded keys → the lookup missed every row.


Fixed

Three patches land the fix:

  • src/sql/executor/mod.rs::try_index_point_lookup — coerces the literal to the PK column’s type before the ART lookup. New helper coerce_literal_to_column_type handles String → UUID / Date / Timestamp.
  • src/lib.rs::fast_parse_one_value — same coercion at the fast-select parse layer for SELECT * queries.
  • src/storage/simd_filter.rs::compare_eq — Uuid ↔ String cross-type case so the SIMD post-walk filter also matches.

Regression Coverage

Two new tests:

  • tests/uuid_where_repro.rs — direct API.
  • tests/persistence_repro.rs — wire protocol, no longer #[ignore]d.

All 1842 lib tests + every prior integration suite remain green.


CloudV2 Follow-Ups

With this fix in place:

  • Revert admin_db SELECT-all workarounds.
  • Drop the daily restart cron.
  • Graduate cloud-v2.heliosdb.com to production.

Migration

No breaking changes. Drop-in upgrade from v3.19.0.

If you were applying client-side workarounds for missed UUID PK lookups (broad SELECT then filter, daily restart cron, manual UUID coercion in the application layer), those can be removed.


Compatibility Matrix

ComponentVersion
PostgreSQL wire14, 15, 16
MySQL wire5.7, 8.0
MCP protocol1.0