Releases: tableau/hyper-api-rust
Releases · tableau/hyper-api-rust
v0.3.1
What's Changed
Patch release that fixes two related but distinct bugs surfaced by #84 — wrong NUMERIC values in MCP query results and Node bindings.
Bug Fixes
- Core:
Numeric::Displayno longer drops the sign for sub-unit negatives. Values in the open interval(-1, 0)previously rendered without the minus sign —Numeric::new(-5000, 4).to_string()returned"0.5000"instead of"-0.5000". The Display impl now computes the sign explicitly and formats the magnitude viaunsigned_abs(), which also removes a latenti128::MINoverflow panic. This silently flipped the sign of any correlation, 0-1 index, or regression residual that crossed the stringify path — including the MCPquerytool's JSON serialization. (#84, #86) - Node bindings:
NUMERICcolumns no longer decode as garbage / NaN.extract_rowand the columnar fast path were callingrow.get_f64()forSqlType::Numericcolumns, which reinterpreted the unscaled-integer bytes as IEEE-754 doubles. Every NUMERIC cell was wrong, regardless of sign. The bindings now use schema-awarerow.get_numeric(), which honors the column scale and dispatches on wire form.getStringreturns the exact decimal text (preserving scale and sign),getFloat64returns the lossy-but-correct double,getInt32/getInt64return the truncated integer, and the columnargetFloat64Columnreturns correctf64values. Related to #84. - Node bindings:
getBigIntnow preserves precision onNUMERIC(p, 0)columns. PreviouslygetBigIntreturnednullfor any NUMERIC cell. It now preserves the full 128-bit unscaled value for integer-shaped numerics — use it instead ofgetInt64for NUMERIC integer values aboveNumber.MAX_SAFE_INTEGER. OnNUMERIC(p, scale>0)columns it returnsnull(usegetStringfor exact text orgetFloat64for a lossy value). Related to #84.
Full Changelog: v0.3.0...v0.3.1
What's Changed
- chore: skip auto-tagging in release-please; manual gh release create stays the gate by @StefanSteiner in #87
- fix: NUMERIC sign loss in Display + Node bindings decode (#84) by @StefanSteiner in #86
- chore: release main by @StefanSteiner in #88
Full Changelog: v0.3.0...v0.3.1
v0.3.0
This release aggregates a coordinated set of breaking and additive API changes that landed across four PRs during the v0.3.0 bundle window. See MIGRATING-0.3.md for complete migration recipes covering every change.
⚠ BREAKING CHANGES
- Flat
Errorenum. The publichyperdb_api::Erroris now a flat canonical structure per the Microsoft Pragmatic Rust Guidelines — noBox<dyn StdError>cause channel, nokind()method, noOthercatch-all variant.Error::newandError::with_causeare deleted in favor of domain-specific snake_case constructors (Error::connection,Error::server,Error::conversion, etc.). TheErrorKindre-export fromhyperdb_apiis removed. (#70, #71) - Transaction API consolidation.
Connection::begin_transaction/commit/rollback(and the async equivalents) are deprecated and#[doc(hidden)]. Use the RAII guard atConnection::transaction()/AsyncConnection::transaction()instead. (#69, #73) FromRowmodernization.FromRow::from_row(&Row)becomesFromRow::from_row(RowAccessor<'_>). The blanket 1/2/3/4-tupleFromRowimpls are deleted — define a struct with#[derive(FromRow)]instead. NewRowAccessorcarries a per-query cached column-name → index lookup; newRow::get_by_namefor one-off named access. (#61, #62, #74)- Structured SQLSTATE on
Cancelled/Closed/Connection.Error::CancelledandError::Closedchange from tuple to struct variants carryingsqlstate: Option<String>.Error::Connectiongains the same field.Error::sqlstate()now returnsSome(...)for these variants when the server provided a code (previously Server-only). NewError::InvalidOperationvariant separates caller-API misuse from library invariant violations. (#76)
Features
#[derive(FromRow)]proc-macro with#[hyperdb(rename = "...")]and#[hyperdb(index = N)]attributes, lives in the new re-exportedhyperdb-api-derivecrate (#74)RowAccessoraccessors:get/get_opt(name-based) andposition/position_opt(index-based) (#74)- Ergonomic snake_case constructors workspace-wide for every error variant —
&str,String,format!(...)accepted without.to_string()ceremony (#71) - Typed
io::Errorsources preserved onHyperProcesslifecycle errors (#76) - stabilize v0.3.0 public API bundle (#77) (ac39b2c)
Deferred
- Internal
client::Errorflatten — deferred to v0.3.x as #75 (internal type, zero external consumers; scope grew on second look).
What's Changed
- fix(ci): install mold in release.yml verify job by @StefanSteiner in #58
- chore(api): flatten Error enum and add ergonomic constructors workspace-wide (#70) by @StefanSteiner in #71
- chore(api): deprecate raw transaction trio; migrate MCP async paths to RAII (#69) by @StefanSteiner in #73
- chore(api): modernize FromRow with #[derive] + RowAccessor (#61, #62) by @StefanSteiner in #74
- chore(api): v0.3.0 follow-ups (A: typed I/O sources, B: InvalidOperation, C: structured SQLSTATE) by @StefanSteiner in #76
- feat: stabilize v0.3.0 public API bundle by @StefanSteiner in #77
- chore: enable bump-minor-pre-major for pre-1.0 releases by @StefanSteiner in #79
- chore: release main by @StefanSteiner in #80
Full Changelog: v0.2.3...v0.3.0
v0.2.3
What's Changed
- fix(ci): use exact-name match for required check-runs (no regex) by @StefanSteiner in #54
- chore: release main by @StefanSteiner in #55
Full Changelog: v0.2.2...v0.2.3
What's Changed
- fix(ci): use exact-name match for required check-runs (no regex) by @StefanSteiner in #54
- chore: release main by @StefanSteiner in #55
Full Changelog: v0.2.2...v0.2.3
v0.2.2
What's Changed
- chore(ci): use check-runs API for npm-publish CI gate by @StefanSteiner in #46
- chore(ci): inject npm versions at publish time + add hyperdb-api-node to CI by @StefanSteiner in #47
- chore(npm): prefix hyperdb-mcp repository URLs with git+ by @StefanSteiner in #48
- chore(mcp): atomic multi-statement execute via array sql parameter by @StefanSteiner in #49
- fix: clean version stamps on release builds (no -dirty markers) by @StefanSteiner in #50
- fix(ci): defer fromJson(release.outputs.pr) into a run block by @StefanSteiner in #51
- chore: release main by @StefanSteiner in #52
Full Changelog: v0.2.1...v0.2.2
v0.2.1
What's Changed
- Fix formatting issues in README.md by @StefanSteiner in #42
- test: ignore flaky daemon kill/restart tests on macOS CI by @StefanSteiner in #43
- fix(build): add make targets for API-only build and test by @StefanSteiner in #44
- chore: release main by @StefanSteiner in #45
Full Changelog: v0.2.0...v0.2.1
What's Changed
- Fix formatting issues in README.md by @StefanSteiner in #42
- test: ignore flaky daemon kill/restart tests on macOS CI by @StefanSteiner in #43
- fix(build): add make targets for API-only build and test by @StefanSteiner in #44
- chore: release main by @StefanSteiner in #45
Full Changelog: v0.2.0...v0.2.1
v0.1.3
Immutable
release. Only release title and notes can be modified.
0.1.3 (2026-05-18)
Bug Fixes
What's Changed
- docs: clarify commit prefix conventions to avoid accidental releases by @StefanSteiner in #16
- ci: fix v0.1.2 release — bump versions and add safety net by @StefanSteiner in #17
- ci: force generic updater for Cargo.toml extra-files by @StefanSteiner in #19
- ci: fix release-please extra-files updater for Cargo.toml by @StefanSteiner in #22
- chore: release main by @StefanSteiner in #23
Full Changelog: v0.1.2...v0.1.3
v0.1.2
Immutable
release. Only release title and notes can be modified.
0.1.2 (2026-05-18)
Bug Fixes
- ci: include README.md in hyperdb-mcp npm package (c8ccc22)
- ci: include README.md in hyperdb-mcp npm package (#12) (b1ddb33)
- ci: prevent npm-publish chmod step from failing on missing binaries (2708ee4)
- ci: prevent npm-publish chmod step from failing on missing binaries (#11) (bc9bee5)
- ci: remove brew rust on macOS before installing toolchain (b331607)
- ci: remove brew-rust uninstall steps that delete cargo/rustc on new image (af798f1)
- ci: restructure release-please config for workspace version inheritance (d5ad018)
- ci: restructure release-please config for workspace version inheritance (#13) (fd18a8b)
- ci: use simple release-type to avoid Cargo workspace member walking (3884162)
- ci: use simple release-type to avoid Cargo workspace member walking (#14) (42f0524)
v0.1.1
Full Changelog: v0.1.0...v0.1.1