# v0.7.0 (2026-05-12) API changes: - The `Handle` type changes to not cover `*sql.DB` and `*sql.Tx` directly, thus removing the direct dependency on database/sql. This adds a new memory allocation (for wrapping `*sql.DB` or `*sql.Tx` in the wrapper implementing `Handle`) and some CPU overhead because of the interface indirection, but I consider this a worthwhile tradeoff to enable the use of non-standard database drivers like (if the user provides the respective custom implementation of the `Handle` interface). Preliminary benchmarking has already shown that, for the PostgreSQL case, oblast + jackc/pgx is significantly more efficient than oblast + lib/pq. Changes: - Added escaping to `Dialect.QuoteIdentifier` implementations to reduce attack surface for SQL injection. # v0.6.0 (2026-05-08) API changes: - Add `type RuntimeIndex`. # v0.5.0 (2026-05-08) API changes: - Offer both `None`-returning and `sql.ErrNoRows`-returning variants for `Store.SelectOne...` functions. Testing in real-world application code indicates that both return signatures have their uses. # v0.4.0 (2026-05-04) API changes: - Return `None` instead of `sql.ErrNoRows` from `Store.SelectOne...` functions. # v0.3.0 (2026-04-30) API changes: - All `Store` methods that run DB operations now take a `context.Context` argument. The previous decision to avoid `ctx` arguments was based on benchmarking using `b.Context()`, where it turns out that we just benchmarked those particular stacked contexts being inefficient. - `Store.Insert()` now takes its arguments by-pointer. This is probably slightly less efficient, but significantly safer because autogenerated field values cannot be disregarded by accident. - Add `Store.Upsert()`. - Removed support for SQL dialects that rely on LastInsertId() for ID columns. Using a RETURNING clause to collect autogenerated field values is better in many ways, and has been supported by both MariaDB and SQLite for at least six years. In practice, this only drops support specifically for Oracle MySQL. Other changes: - Removed an unnecessary memory allocation and copy within `Select()` and `SelectWhere()`. # v0.2.0 (2026-04-18) Changes: - Add `func StructTagKeyIs()`. # v0.1.0 (2026-04-18) Initial release. This release has code quality worthy of a 1.x version number, but I want to test it in real applications first before committing to API stability.