Merged PRs
dolt
- 8634: Add pointers for schemas for
dolt_workspace_*
anddolt_diff
system tables for doltgres - 8633: Add TLS options in help docs
- 8632: fix error message for duplicate unique key violation on out of band types
Certain types are stored out of band (likeTEXT
andBLOB
), so we compare their addresses to test for existence. Consequently, the error message would contain the hash rather than the contents.
This PR fixes the formatting to print the prefix.
fixes: #8629 - 8630: Fixed issues with branch control
This is primarily to fix issues with:- #8622
- #8623
For the first issue, we did not actually update the longest match counter, and it was therefore being ignored. The variable existed, but it was not being updated. I think this went so long without being caught (even with all of the tests inenginetests
andbats
) due to how we handle expression folding, where subset entries are completely ignored if a superset already exists.
The second issue is somewhat similar to the first, in that we were not checking the permission set when determining whether a new row is actually a subset. If an existing row is a superset, but the permissions are more restrictive than the new row, then it's not an actual superset, since it has more restrictive permissions. This is even in the documentation, so it's a simple mistake of forgetting to add that check to the code itself.
Lastly, thebats
tests have been updated such that they rely on sockets now, and Windows does not support sockets. This was not caught since most Windows developers have moved to primary development on Doltgres, so this at least allows such developers to run thebats
tests locally again.
- 8624: Update sql status to not report changes for unstaged tables that have changed but not visibly.
Sometimes tables can change their hashes despite having no visible changes. The two ways I identified where this can happen are:- The table has different column tags from the ancestor because it was originally a different table that got renamed.
- The table stores whether it's in a conflict and stores the hash of the other branch's table and the common ancestor table.
If these are the only changes to a table, we shouldn't report it as changed indolt status
.
These tables can still be staged and report as modified once staged.
- 8619: README updates to explain MySQL 8.4 requirement
UpdatesREADME
to explain how to installmysql
8.4, since the 9.0 innovation release does not include support for themysql_native_password
auth plugin by default.
go-mysql-server
- 2776: bump mysql version
Certain tools expect a higher version of MySQL.
Currently, the latest stable version of MySQL is 8.4.4, but8.0.23
is the minimum needed to satisfy mydumper.
Additionally, this alters theversion()
method to select directly from the@@version
system variable.
related: #8592 - 2775: prevent creating and dropping
mysql
andinformation_schema
databases
fixes: #8621 - 2774: insert ignore to enum column truncates data
- 2765: increase column size for
information_schema.processlist.state
TheState
column in ourinformation_schema.processlist
table is different than the MySQL implementation because we include progress information. As a result, it is possible to exceed the 64 character limit that the column is defined as.
However, thius means deviating from MySQL's definition of the table. - 2764:
information_schema
uppercase rule doesn't apply toprocesslist
table
Selecting from information schema typically results in all uppercase column names, except for theinformation_schema.processlist
table, which follows the non info schema casing (matches the projection).
Relevant MySQL Bug: https://bugs.mysql.com/bug.php?id=84456
Closed Issues
- 8629: Erroneous output with unique constraint on TEXT or TINYTEXT
- 8607: Creating two tables with the same schema and database, dropping one of them, and renaming the second table to the dropped table creates an entry in status but not diff
- 8622: Potential issue with longest matching branch namespace control rules
- 8621: prevent
CREATE DATABASE mysql;
- 8611: INSERT IGNORE for ENUM should truncate data instead of using the first element
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.89 | 0.62 | 0.3 |
groupby_scan | 13.22 | 16.41 | 1.2 |
index_join | 1.47 | 2.26 | 1.5 |
index_join_scan | 1.42 | 1.47 | 1.0 |
index_scan | 34.95 | 55.82 | 1.6 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.43 | 5.47 | 1.6 |
select_random_points | 0.33 | 0.65 | 2.0 |
select_random_ranges | 0.36 | 0.65 | 1.8 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 77.19 | 144.97 | 1.9 |
reads_mean_multiplier | 1.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.9 | 6.21 | 0.7 |
oltp_insert | 4.1 | 3.07 | 0.7 |
oltp_read_write | 8.9 | 11.65 | 1.3 |
oltp_update_index | 4.18 | 3.13 | 0.7 |
oltp_update_non_index | 4.18 | 3.07 | 0.7 |
oltp_write_only | 5.67 | 6.21 | 1.1 |
types_delete_insert | 8.43 | 6.55 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 95.75 | 41.26 | 2.3 |
tpcc_tps_multiplier | 2.3 |
Overall Mean Multiple | 1.57 |
---|