From a4d43d51d44b55eaf64b1d0802e20fb0357c1a1f Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Thu, 30 Oct 2025 18:15:59 +0200 Subject: [PATCH] Update CHANGELOG.md --- CHANGELOG.md | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 481edbe7b..6604746dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,171 @@ # Changelog +## 0.3.0 -- 2025-10-30 + +### Added +* Implement wasNull tracking in ResultSet getter methods (김민석) +* Support subqueries in all positions of a SELECT statement (Jussi Saurio) +* Initialize LIMIT after after ORDER BY / GROUP BY initialization (Jussi Saurio) +* index_method: implement basic trait and simple toy index (Nikita Sivukhin) +* Where clause subquery support (Jussi Saurio) +* sqlite3: Add multi-statement support for sqlite3_exec() (Preston Thorpe) +* Add DISTINCT support to aggregate operator (Glauber Costa) +* docs: Add vector search section to database manual (Pekka Enberg) +* Support statement-level rollback via anonymous savepoints (Jussi Saurio) +* Add AtomicEnum proc macro to generate atomic wrappers to replace RwLocks (Preston Thorpe) +* Fix git directory resolution in simulator to support worktrees (Jussi Saurio) +* Add Miri support for turso_stress, with bash scripts to run (Bob Peterson) +* tests: Add rowid alias fuzz test case (Pekka Enberg) +* core/translate: throw parse error on unsupported GENERATED column constraints (Preston Thorpe) +* translate/insert: more refactoring and support INSERT OR IGNORE (Preston Thorpe) +* sql_generation: Fix implementation of LTValue and GTValue for Text types (Jussi Saurio) +* core/mvcc: implement CursorTrait on MVCC cursor (Pere Diaz Bou) +* Add test case for vector() format crash (Pedro Muniz) +* Add correct unique constraint test for tcl (Pedro Muniz) +* stress: Add busy timeout support with 5 second default (Pekka Enberg) +* Add WINDOW functions to COMPAT.md (Jussi Saurio) +* core/translate: Add if alias and allow iff to have more arguments (Pavan Nambi) +* core/btree: try to introduce trait for cursors (Pere Diaz Bou) +* bindings/java: Add support for publishing to Maven Central (Kim Seon Woo) +* add Calendar-based timezone conversion support in JDBC4ResultSet (김민석) +* Add Nightly versions of benchmarks that run on Nyrkiö runners (Henrik Ingo) +* Add support for sqlite_version() star syntax (Glauber Costa) +* core/translate: implement basic foreign key constraint support (Preston Thorpe) +* Simulator: Add Drop and pave the way for Schema changes (Pedro Muniz) +* core/io: remove new_dummy in place of new_yield (Pere Diaz Bou) +* Add MVCC checkpoint threshold pragma (bit-aloo) +* core/incremental: Implement "is null" and "is not null" tests for view filter (Glauber Costa) +* core/mvcc: implement PartialOrd for RowId (Pere Diaz Bou) +* core/io: Add completion group API for managing multiple I/O operations (Pekka Enberg) +* Add short writes to unreliable-libc (FamHaggs) +* add basic examples for database-wasm package (Nikita Sivukhin) +* core/wal: introduce transaction_count, same as iChange in sqlite (Pere Diaz Bou) + +### Updated +* antithesis: Upload config image in GitHub Actions workflow (Pekka Enberg) +* perf/throughput: Improve reproducibility (Pekka Enberg) +* translate: disallow correlated subqueries in HAVING and ORDER BY (Jussi Saurio) +* Stmt reset cursors (Nikita Sivukhin) +* reset move_to_right_state cached state in case of quick balancing (Nikita Sivukhin) +* index_method: fully integrate into query planner (Nikita Sivukhin) +* core: Switch to FxHash to improve performance (Pekka Enberg) +* bindings/rust: Enable mimalloc as global allocator (Pekka Enberg) +* index method syntax extension (Nikita Sivukhin) +* Tighten Nyrkio p-value to 0.00001 (Henrik Ingo) +* Strict numeric cast for op_must_be_int (bit-aloo) +* core/vdbe: Reuse cursor in op_open_write() (Pekka Enberg) +* core: Switch RwLock> to ArcSwap (Pekka Enberg) +* Always returns Floats for sum and avg on DBSP aggregations (Glauber Costa) +* perf/throughput: Use connection per transaction in rusqlite benchmark (Pekka Enberg) +* Return null terminated strings from sqlite3_column_text (Preston Thorpe) +* Order by heap sort (Nikita Sivukhin) +* core/storage: Cache schema cookie in Pager (Pekka Enberg) +* github: Run fuzz tests in a separate workflow (Pekka Enberg) +* tests: Separate integration and fuzz tests (Pekka Enberg) +* Vector speedup (Nikita Sivukhin) +* parser: translate boolean values to literal when parsing column constraints (Preston Thorpe) +* core/io: Make random generation deterministically simulated (Pedro Muniz) +* core: move BTreeCursor under MVCC cursor (Pere Diaz Bou) +* Move completion code to separate file (Pedro Muniz) +* avoid unnecessary allocations (Nikita Sivukhin) +* Make sure explicit column aliases have binding precedence in orderby (Pavan Nambi) +* tests/integration: Reduce collation fuzz test iterations (Pekka Enberg) +* Switch random blob creation to `get_random` (Pedro Muniz) +* Shared WAL lock scoping (Pedro Muniz) +* Remove tests that alter testing.db from views.test (Preston Thorpe) +* tests/integration: Disable rowid alias differential fuzz test case (Pekka Enberg) +* core/storage: Reduce logging level (Pekka Enberg) +* cli: Improve manual page display (Pavan Nambi) +* stress: prevent thread from holding write lock and then stopping (Jussi Saurio) +* translate/select: prevent multiple identical non-aliased table references (Preston Thorpe) +* Prevent on conflict column definitions on CREATE TABLE or opening DB (Preston Thorpe) +* cli: .tables and .indexes to show data from attached tables aswell (Konstantinos Artopoulos) +* bindings/rust: propagate the DropBehavior of a dropped tx to next access of DB, instead of panicing (Jussi Saurio) +* Replace io_yield_many with completion groups (Pekka Enberg) +* core/bree: remove duplicated code in BTreeCursor (Pere Diaz Bou) +* core: Unsafe Send and Sync pushdown (Pekka Enberg) +* Run SQLite integrity check after stress test run (Pedro Muniz) +* Document ThreadSanitizer in CONTRIBUTING.md (Pekka Enberg) +* tests/fuzz: Accept SEED env var for all fuzz tests (Preston Thorpe) +* Make Rust bindings actually async (Pedro Muniz) +* perf/throughput: force sqlite to use fullfsync (Pedro Muniz) +* relax check in the vector test (Nikita Sivukhin) +* Allow using indexes to iterate rows in UPDATE statements (Jussi Saurio) +* Refactor INSERT translation to a modular setup with emitter context (Preston Thorpe) +* increment Changes() only once conditionally (Pavan Nambi) +* make comparison case sensitive (Pavan Nambi) +* bindings/rust: Bump version recommendation to 0.2 (Kyle Kelley) +* Run simulator under Miri (Bob Peterson) +* Import workspace crates by name and not path (Pedro Muniz) +* names shall not be shared between tables,indexs,vtabs,views (Pavan Nambi) +* Get aliases to where shall they be used (Pavan Nambi) +* remove cfg for `MAP_ANONYMOUS` (Pedro Muniz) +* Simulator: `Drop Index` (Pedro Muniz) +* Restrict joins to max 63 tables and allow arbitrary number of table columns (Jussi Saurio) +* Simulator: persist files in sim memory IO for integrity check (Pedro Muniz) +* Simulator: `ALTER TABLE` (Pedro Muniz) +* Move all checksum tests behind the feature flag (Avinash Sajjanshetty) +* Nyrkiö nightly: Reduce frequency to 1 per 24h (Henrik Ingo) +* Vector improvements (Nikita Sivukhin) +* Optimize sorter (Jussi Saurio) +* Make sqlite_version() compatible with SQLite (Glauber Costa) +* optimizer: optimize range scans to use upper and lower bounds more efficiently (Jussi Saurio) +* translate: make bind_and_rewrite_expr() reject unbound identifiers if no referenced tables exist (Jussi Saurio) +* Simulator: ignore `Property::AllTableHaveExpectedContent` when counting stats (Pedro Muniz) +* When pwritev fails, clear the dirty pages (Pedro Muniz) +* mvcc: Disable automatic checkpointing by default (Pekka Enberg) +* Integrity check enhancements (Jussi Saurio) +* Remove unsafe pointers (`RawSlice`) from `RefValue` (Levy A.) +* Make table name not repeat in simulator (bit-aloo) +* perf/throughput: Delete database before benchmark run (Pekka Enberg) +* emit proper column information for explain prepared statements (Nikita Sivukhin) +* core/mvcc/logical-log: switch RwLock to parking_lot (Pere Diaz Bou) +* Modify Interactions Generation to only generate possible queries (Pedro Muniz) +* eliminate the need for another `Once` in Completion (Pedro Muniz) +* Rename Completion methods (Pedro Muniz) +* Top level examples (Nikita Sivukhin) +* docs: Explain BEGIN CONCURRENT (Pekka Enberg) +* MVCC: do checkpoint writes in ascending order of rowid (Jussi Saurio) +* core/mvcc: filter out seek results where is not same table_id (Pere Diaz Bou) +* Simulator diff print (Pedro Muniz) +* Improve simulator cli (bit-aloo) +* core/mvcc: automatic logical log checkpointing on commit (Pere Diaz Bou) +* remove `dyn DatabaseStorage` replace it with `DatabaseFile` (Pedro Muniz) +* Actually enforce uniqueness in create unique index (Jussi Saurio) +* core/wal: check index header on begin_write_tx (Pere Diaz Bou) +* Disallow unexpected interop between WAL mode and MVCC mode (Jussi Saurio) + +### Fixed +* Fix database state going back in time after sync (Nikita Sivukhin) +* Fix foreign key constraint enforcement on UNIQUE indexes (Jussi Saurio) +* bindings/javascript: Improve open error messages (Pekka Enberg) +* core/storage: Fix WAL already enabled issue (Pekka Enberg) +* Return better syntax error messages (Diego Reis) +* core/vdbe: fix ALTER COLUMN to propagate constraints to other table references (Preston Thorpe) +* core/translate: fix ALTER COLUMN to propagate other constraint references (Preston Thorpe") +* core/translate: fix ALTER COLUMN to propagate other constraint references (Preston Thorpe) +* Fix deferred FK violations check before committing to WAL (Jussi Saurio) +* translate/select: Fix rewriting Rowid expression when no btree table exists in joined table refs (Preston Thorpe) +* Throw parse error on CHECK constraint in create table (Preston Thorpe) +* Fix: rolling back tx on Error should set autocommit to true (Jussi Saurio) +* Fix: outer CTEs should be available in subqueries (Jussi Saurio) +* Fix change counter incrementation (Jussi Saurio) +* Fix another "should have been rewritten" translation panic (Jussi Saurio) +* Simulator: fix alter table shadowing to modify index column name (Pedro Muniz) +* fix backwards compatible rowid alias behaviour (Pedro Muniz) +* Fix typo in manual.md (Yevhen Kostryka) +* core/vdbe: Improve IdxDelete error messages with context (Pekka Enberg) +* Fix disallow reserved prefixes in ALTER TABLE RENAME TO (xmchx) +* Fix incorrectly using an equality constraint twice for index seek (Jussi Saurio) +* Fix IN operator NULL handling (Diego Reis) +* Cleanup Simulator + Fix Column constraints in sql generation (Pedro Muniz) +* Fix rusqlite compatibility claim (Dave Warnock) +* Fix re-entrancy of op_destroy (used by DROP TABLE) (Jussi Saurio) +* Fix VDBE program abort (Nikita Sivukhin) +* Fix attach I/O error with in-memory databases (Preston Thorpe) +* core/incremental: Fix re-insertion of data with same key (Glauber Costa) +* core/io/unix: Fix short writes in try_pwritev_raw() (FamHaggs) + ## 0.2.0 -- 2025-10-03 ### Added