Repository navigation
Doltlite 0.11.0
0.11.0 is a breaking release. Chunk boundary calculation now includes full chunk size. The on-disk refs format moves from v6 to v7 to carry the per-database shared AUTOINCREMENT counter. Repositories created or rewritten under 0.11.0 cannot be opened by earlier doltlite builds.
Features:
- shared AUTOINCREMENT counter across branches — eliminates
sqlite_sequencecollisions after merge. SurvivesDROP TABLE, followsALTER TABLE RENAME, syncs over push / fetch / clone (#946) - stable default branch — persisted default no longer mutated by
dolt_checkout/dolt_rebase. Newdolt_default_branch()setter; rename/delete of main allowed once it isn't the default (#579) sqlite_stat1/sqlite_stat4no longer block merges — conflict rows take ours; post-mergeANALYZErefreshes stats (#990)
Fixes:
- secondary indexes stay consistent through conflict-resolved merge — previously leaked the rejected side's entries (phantom rows in covering scans, missed UNIQUE violations on WITHOUT ROWID tables)
dolt_conflicts_resolve --theirsnow updates secondary indexes
Performance:
- write-path perf work across sysbench scenarios — bulk insert, insert, update-index, update-non-index, write-only, read-write, delete-insert, autocommit variants
- sysbench benchmarks now use 100,000-row tables for a more realistic size
Benchmark (file-backed INT key, 100K rows, Linux x64)
File-Backed
Reads
| Test | SQLite (us) | Doltlite (us) | Multiplier |
|---|---|---|---|
| oltp_point_select | 98,465 | 104,407 | 1.06 |
| oltp_range_select | 18,699 | 35,423 | 1.89 |
| oltp_sum_range | 18,493 | 35,905 | 1.94 |
| oltp_order_range | 3,573 | 6,326 | 1.77 |
| oltp_distinct_range | 4,608 | 7,301 | 1.58 |
| oltp_index_scan | 12,051 | 17,965 | 1.49 |
| select_random_points | 23,961 | 64,574 | 2.69 |
| select_random_ranges | 10,584 | 15,053 | 1.42 |
| covering_index_scan | 11,513 | 8,013 | 0.70 |
| groupby_scan | 33,182 | 51,029 | 1.54 |
| index_join | 10,312 | 17,930 | 1.74 |
| index_join_scan | 4,416 | 12,225 | 2.77 |
| types_table_scan | 1,235,340 | 2,759,556 | 2.23 |
| table_scan | 1,430,246 | 3,510,789 | 2.45 |
| oltp_read_only | 220,067 | 296,509 | 1.35 |
| Average | 1.78 |
Writes
| Test | SQLite (us) | Doltlite (us) | Multiplier |
|---|---|---|---|
| oltp_bulk_insert | 185,680 | 264,658 | 1.43 |
| oltp_insert | 23,822 | 38,198 | 1.60 |
| oltp_update_index | 125,487 | 225,424 | 1.80 |
| oltp_update_non_index | 78,834 | 151,365 | 1.92 |
| oltp_delete_insert | 95,792 | 161,727 | 1.69 |
| oltp_write_only | 56,754 | 108,435 | 1.91 |
| types_delete_insert | 52,131 | 89,850 | 1.72 |
| oltp_read_write | 124,511 | 284,505 | 2.28 |
| Average | 1.79 |
100000 rows, median of 5 invocations per test, workload-only timing via host monotonic clock when available.