Merged PRs
This release contains backwards incompatible changes:
dolt merge
command line tool's exit status has changed for conflicts in merges. Perviously merges which resulted in conflicts returned an exit status of 0, indicating success. This release changes the behavior to return a 1 in the event of a failed merge.
Per Dolt’s versioning policy, this is a minor version bump because these changes may impact existing applications. Please reach out to us on GitHub or Discord if you have questions or need help with any of these changes.
dolt
- 6815: Update README now that drop database is reverseable
- 6810: Prevent
dolt_checkout
from creating new branches in read-only databases
Fixes: #6785 - 6774: migrate dolt pull to use sql queries
This change updatesdolt pull
to use the appropriate sql engine to generate results.
Related: #3922
go-mysql-server
- 2074: optimize
min(pk)
andmax(pk)
This PR adds an optimization to queries that have aMIN
orMAX
aggregation over aPRIMARY KEY
column.
Since indexes are already sorted (and we support a reverse iterator) we can look at the first/last row to answer queries in this form.
The new analyzer rule,replaceAgg
, converts queries of the formatselect max(pk) ... from ...
to the equivalentselect pk ... from ... order by pk limit 1
. Then, we depend on anreplacePkSort
to applyIndexedTableAccess
Additionally, this PR hasreplacePkSort
optimization apply to queries that have filters (specifically those that were pushed down to IndexedTableAccess)
There is also a some refactoring and tidying up.
Fixes #6793 - 2073: Bug fixes for explicit
DEFAULT
values in INSERT statements
Previously this was broken when DEFAULT values referred to other columns.
Fixes #6430
Needs more tests, but this fixes the immediate buggy behavior.
Also fixes a related bug in MySQL: https://bugs.mysql.com/bug.php?id=112708 - 2072: support
json_valid()
function
Add support forJSON_VALID(val)
function - 2070: Add routines to PrivilegeSets
Added some Unit tests as well. This is in preparation for supporting routine grants. - 2068: Virtual column proof of concept
This needs a lot more tests, but this demonstrates the approach within can work well enough - 2065: Remove redundant information_schema creation in the driver example
In the driver's example,information_schema
is duplicated.
It is created in two places.- factory.Resolve()
- Catalog in Analyzer in Driver.OpenConnector()
There is no need to create it in thefactory.Resolve()
.
I checked databases using this:
diff --git a/driver/_example/main.go b/driver/_example/main.go index 34e0580ed..adbc1a249 100644 --- a/driver/_example/main.go +++ b/driver/_example/main.go @@ -35,6 +35,14 @@ func main() { rows, err := db.Query("SELECT * FROM mytable") must(err) dump(rows) + + rows, err = db.Query("SHOW DATABASES") + must(err) + for rows.Next() { + var db string + must(rows.Scan(&db)) + fmt.Println("db:", db) + } } func must(err error) {
Closed Issues
- 6793: No index used when calling
select max(date) ...
- 6430: Column defaults do not get applied correctly with explicit
DEFAULT
keyword - 6785: Read-only databases allow creating new branches using
DOLT_CHECKOUT()
- 6808: Support
JSON_VALID()
- 6788: Make
uuid
primary keys function more likeauto_increment
- 6799: Make Laravel example app work with Dolt
- 6286: Fix field indexes after analysis
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 2.71 | 1.3 |
groupby_scan | 12.98 | 17.01 | 1.3 |
index_join | 1.32 | 4.57 | 3.5 |
index_join_scan | 1.25 | 2.14 | 1.7 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.17 | 0.4 | 2.4 |
oltp_read_only | 3.25 | 7.17 | 2.2 |
select_random_points | 0.32 | 0.68 | 2.1 |
select_random_ranges | 0.38 | 0.9 | 2.4 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 74.46 | 155.8 | 2.1 |
reads_mean_multiplier | 2.0 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 4.41 | 5.37 | 1.2 |
oltp_insert | 2.18 | 2.66 | 1.2 |
oltp_read_write | 6.55 | 13.46 | 2.1 |
oltp_update_index | 2.22 | 2.66 | 1.2 |
oltp_update_non_index | 2.22 | 2.61 | 1.2 |
oltp_write_only | 3.25 | 6.55 | 2.0 |
types_delete_insert | 4.49 | 5.77 | 1.3 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 1.8 |
---|