---
title: "HeliosDB Nano v3.19.1 Release Notes"
---

# HeliosDB Nano v3.19.1 Release Notes

**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

| Component | Version |
|-----------|---------|
| PostgreSQL wire | 14, 15, 16 |
| MySQL wire | 5.7, 8.0 |
| MCP protocol | 1.0 |
