0.21.1
We are excited to announce the release of Dolt 0.21.1, a patch release with functionality and performance improvements.
Benchmarks
A significant new aspect of the Dolt release process will be providing SQL benchmarks. You can read a blog about our approach to benchmarking using sysbench here, and you can find the benchmarking tools here. By way of example the benchmarks for this release were created with the following command:
./run_benchmarks.sh bulk_insert oscarbatori v0.21.0 v0.22.1
This produced the following result, which we host on DoltHub:
Merged PRs
- 957: go/store/{datas,util/tempfiles}: Fix some races in map writes. One effects clones, one effects only tests.
- 953: create auto_increment tables with out-of-line PR defs
- 952: go/libraries/doltcore/sqle: Add support for UPDATE and DELETE using table indexes.
- 949: auto increment
- 947: don't drop column values on column drop
- 946: go/cmd/dolt: commands/sql: Small improvement to only call rowIter.Close() once on sql results iterators.
- 945: Use docker-compose for orchestrating benchmarking
- 944: go/store/types: value_store: Optimize GC to work in parallel and use less memory.
- 942: feature gating
- 941: Upgraded to latest go-mysql-server and re-enabled query plan tests
- 939: Added new indexes overwriting auto-generated indexes
- 938: go/store/{nbs,chunks}: Convert some core methods to provide results in callbacks. Convert some functions to use errgroup.
- 937: Update README.md with the latest dolt commands
- 934: Add go routine to clone
I parallelized the table file writing process by using go routines. Specifically, I made use of the "golang.org/x/sync/errgroup" package which allows for convenient error management across a waitgroup.
A couple of benchmarks I tested this on were- Dolt-benchmarks-test: No difference in speed really
- Coronavirus: Original ~30sec. Current 15sec
- Tatoeba Sentence Translation: Original: ~17mins Current: 10mins
- 933: /go/libraries/doltcore/diff: Ignore NULLs in cell-wise diff
fix for #899
The from root in this repo has NULL values written to the map which causes erroneous diffs.
https://www.dolthub.com/repositories/dolthub/us-supreme-court-cases/compare/master/hb502v6tf3uj43ijfhot6dopmgdm1muk - 932: /go/cmd/dolt/commands: Help Text Fix
- 216: Updated sql.MergeableIndexLookup interface
- 215: memory: *_index.go: Construct sql equality evaluations with accurate types in the literals.
- 214: auto increment
- 213: triggers bugfix
Fixed bug in insert triggers, which couldn't handle out-of-order column insertions.
Fixes #950 - 212: sql/analyzer: pushdown.go: Allow pushdown on Update, RowUpdateAccumulator and DeleteFrom plan nodes.
- 211: join bugs
- 210: sql/plan: {update,insert,update,process}.go: Fix some potential issues with context lifecycle and reuse.
- insert, update, delete: Only call underlying table editors with our captured
context once when we are Close(). Return anil
error after that. - process: Change to only call
onDone
when the rowTrackingIter is Closed. - process: Change to call childIter.Close() before
onDone
is called. Child
iterators have a right to Close() before the context in which they are
running is canceled.
- insert, update, delete: Only call underlying table editors with our captured
- 208: Create UNIQUE index if present in column definition
- 207: Pushdown and plan decoration
Two major changes:- Changes to pushdown operation, to push table predicates below join nodes and to fix many bugs and deficiencies. Also large refactoring.
- Added DecoratedNodes to query plans to illustrate when indexes are being used to access tables outside the context of a join