sqlite_plus 0.1.6
sqlite_plus: ^0.1.6 copied to clipboard
Pure Dart SQLite-style database engine with SQL, JSON, FTS5, and R-tree.
Changelog #
0.1.6 #
Publishes the SQLCipher 4 codec and the FTS tokenizer and row-storing virtual-table hooks described in the 0.1.5 and 0.1.4 notes below. pub.dev already serves 0.1.5, and that upload does not include this codec. DatabaseClient.inTransaction reports whether that client owns an open transaction.
0.1.5 #
Custom FTS tokenizers and row-storing virtual tables on Dart 3.13.7, Linux x64. 10609 tests passed.
tokenizers.registeradds an FTS tokenizer.unicode61,porter,trigram,ascii, andsimplecannot be replaced.VirtualTableModule.storesRowscreates a shadow table.INSERT,UPDATE, andDELETEwrite that table.DROPremoves the shadows named byownedShadows.- A
MATCHhandler on the statement's virtual-match board can answer a virtual table before FTS does. sqlite_plus_arabicandsqlite_plus_vecuse these hooks. The engine does not contain the Arabic stemmer or the vector distance math.
0.1.4 #
SQLCipher 4 file codec on Dart 3.13.7, Linux x64. 10607 tests passed. An unencrypted database does not run it.
SqlCipherDatabase.createandopenkeep a plaintext database whose header reserve is 80 bytes.encryptedImageis AES-256-CBC with HMAC-SHA512. The key is PBKDF2-HMAC-SHA512, 256000 iterations by default. The HMAC key uses the salt with each byte XOR0x3afor 2 iterations.- Page 1 stores a 16-byte salt. A wrong passphrase, a changed byte, or a page moved to another number fails authentication.
- A SQLCipher 4.5.6 community file with the default schedule opens here. A file written here opens in that CLI when both sides use the same iteration count.
saveSqlCipherreplaces the whole file. It is not the rollback journal. - WAL files, SQLCipher 1–3, rekey, a plaintext header, and auto-vacuum combined with the reserve are unsupported.
- A reserve of 0 keeps the previous page geometry. A nonzero reserve rebuilds when auto-vacuum is off.
0.1.3 #
Compared with pinned SQLite 3.53.1 on Dart 3.13.7, Linux x64. 10596 tests passed. pub.dev already serves 0.1.2.
- Incremental auto-vacuum keeps the freelist page after an overflow delete.
incremental_vacuummoves a live end page, then truncates. - Contentless FTS4 stores no content table and returns the pinned
MATCHrow. FTS3content=''is a column namedcontent. - File
journal_modewal,persist, andtruncatefollow the pinned header and journal bytes. This is not a multi-frame WAL log. - Cross-schema
VALUESerrors use the pinned wording. EXPLAINmatches the pinned opcode rows for a constant subquery, an integer-primary-key scan,WITHOUT ROWID, a virtual generated column, a typedINSERT, and a multi-rowVALUESinsert. An integer-primary-key insert and a join of two subqueries stay rejected. This is not a VDBE.
0.1.2 #
Performance work and a Linux desktop experiment. A release build compared 1,000 rows with sqflite. Every checksum matched. The charts are that sample. The logo is the feather, the database, and the plus.
0.1.1 #
Package page: short SQL, JSON, search, and file samples, plus the measured 1,000-row comparison.
0.1.0 #
openInMemory is MutableSqliteDatabase.create. openDatabase is DatabaseOwner.open. The previous names remain.
0.0.3 #
Published release.
0.0.2 #
Published release. Same engine surface as the first pre-release.
0.0.1-dev.1 #
First pre-release.
- Pure Dart SQL, JSON, FTS5, R-tree, and geopoly.
- In-memory databases,
exportImage, and adart:iofile adapter. - The package README shows the 1000-row comparison with Android SQLite.