Releases: dolthub/dolt
Releases · dolthub/dolt
1.43.20
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 |
---|
1.43.19
Merged PRs
dolt
- 8612: go/store/nbs: Fixing GCGen to be more correct.
The original purpose of gc gen was two fold. The first purpose was to avoid applying the garbage collection results if the store had changed due to multi-process concurrency for any reason. The second purpose was to fast-complete adolt gc
invocation if the store had not changed at all since the last GC run.
For the first purpose, it is no longer necessary. We no longer allow multi-process access to the same NomsBlockStore.
For the second purpose, it was implemented slightly incorrectly, given the introduction ofdolt gc --full
. This change fixes the implementation to be more correct.
In particular, the semantics are:- After a
dolt gc --full
, an immediate invocation ofdolt gc
ordolt gc --full
fast-completes as no collection being necessary. - After a
dolt gc
, only adolt gc
fast-completes as no collection being necessary. Adolt gc --full
will run a full GC to completion.
- After a
go-mysql-server
- 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. - 2762: Add schema to StatsQualifier for schema databases
Closed Issues
- 8385: Permissions / branch control incorrect for branch-qualified database names
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 0.62 | 0.3 |
groupby_scan | 13.22 | 16.71 | 1.3 |
index_join | 1.37 | 2.26 | 1.6 |
index_join_scan | 1.27 | 1.44 | 1.1 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.37 | 1.5 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.65 | 1.7 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 74.46 | 147.61 | 2.0 |
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 | 9.06 | 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 | 96.58 | 40.39 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.60 |
---|
1.43.18
Merged PRs
dolt
- 8600: Add testing for
show slave status
This syntax is deprecated and will be removed in future MySQL versions (SHOW REPLICA STATUS
should be preferred instead). However, some tools (e.g. Dolphie, MyDumper) still rely on this deprecated syntax, so we're adding support for it to keep compatibility with those tools.
Depends on: - 8596: go/store/nbs: table_index.go: Improve support for large table files.
Support suffix arrays larger than 4GB by avoiding uint32 overflows when matching chunk suffixes. - 8595: replace
nil
defaults with empty string
Needed for dolphie. - 8590: system variables cannot have nil defaults
related: #8585 (comment) - 8589: Fix dolt_statistics table for multiple schemas for doltgres
GMS PR: dolthub/go-mysql-server#2762 - 8561: [kvexec] merge join
This isn't the best perf win on linux, but it counteracts thesql.Row
interface PR which otherwise would swing merge join +30% in the wrong direction.TODO:goos: darwin goarch: arm64 pkg: github.com/dolthub/dolt/go/performance/microsysbench │ before.txt │ after.txt │ │ sec/op │ sec/op vs base │ OltpJoinScan-12 680.6µ ± 26% 612.1µ ± 17% ~ (p=0.240 n=6) │ before.txt │ after.txt │ │ B/op │ B/op vs base │ OltpJoinScan-12 163.8Ki ± 0% 123.8Ki ± 0% -24.42% (p=0.002 n=6) │ before.txt │ after.txt │ │ allocs/op │ allocs/op vs base │ OltpJoinScan-12 5.906k ± 0% 4.233k ± 0% -28.33% (p=0.002 n=6)
- left join
- nulls and other edge cases
- execute full comparer
go-mysql-server
- 2773: Fixed error in setup found by user
- 2769: support
NO_AUTO_CREATE_USER
option insql_mode
Older MySQL 5.7 Docs; https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user
We already do this by default, so this is just parsing the option and does nothing. - 2767: Add support for
show slave status
This syntax is deprecated and will be removed in future MySQL versions (SHOW REPLICA STATUS
should be preferred instead). However, some tools (e.g. Dolphie, MyDumper) still rely on this deprecated syntax, so we're adding support for it to keep compatibility with those tools.
Depends on: dolthub/vitess#381 - 2766: add case for enum return types in multi-branch case statement
Hotfix for Enum conversion issue:
#8598
Doesn't address real issue, which revolves around conversion forCASE
. - 2763: Better error message for invalid charset string
This is a followup to the comments on this PR: - 2762: Add schema to StatsQualifier for schema databases
- 2761: add
innodb_buffer_pool_size
system variable
docs: https://dev.mysql.com/doc/refman/8.4/en/innodb-parameters.html#sysvar_innodb_buffer_pool_size - 2759: ignore empty strings in sets with multiple values
fixes: #8584 - 2756: Update README - fix db name when setting context
I'm pretty sure this needs to match withmemory.NewDatabase(dbName)
on line 135
vitess
- 384: add mariadb table opts and tests
This PR adds support for parsing the mariadb table options listed here:
https://mariadb.com/kb/en/create-table/#table-options
They are all no-ops (much like many of the MySQL table options)
related: #8592 - 383: parse
start transaction with consistent
as no-op
related: #8592 - 382: Add syntax support to allow
CREATE USER
statements to quote the auth plugin
MySQL allows the auth plugin name to be quoted or unquoted, but our parser previously only supported the unquoted mode for most forms ofCREATE USER
. This change adds support for the following forms:CREATE USER user@localhost IDENTIFIED WITH 'auth_plugin';
CREATE USER user@localhost IDENTIFIED WITH 'auth_plugin' BY random password;
CREATE USER user@localhost IDENTIFIED WITH 'auth_plugin' BY 'password';
- 381: Add support for
show slave status
This syntax is deprecated and will be removed in future MySQL versions (SHOW REPLICA STATUS
should be preferred instead). However, some tools (e.g. Dolphie, MyDumper) still rely on this deprecated syntax, so we're adding support for it to keep compatibility with those tools. - 379: Refactor
AuthServer
to support multiple authentication methods
In preparation of supportingcaching_sha2_password
authentication, this change applies the refactoring from vitessio/vitess#8503 to our fork of Vitess so that we can more easily support multiple authentication methods.
Related to: #8496
Closed Issues
1.43.17
Merged PRs
dolt
- 8582: Support dolt.rebase for doltgres
- 8581: Support per-schema dolt_ignore for doltgres
- 8579: Refactor
AuthServer
Minor updates to test code from changes in GMS and Vitess to refactor theAuthServer
interface.
Depends on: dolthub/go-mysql-server#2757 - 8578: Fix dolt_rebase and dolt_ignore for doltgres
- 8576: Change LateBindQueryist to use
mysql.NewSalt()
In preparation for refactoring the auth server interface in Vitess/GMS, this change makes LateBindQueryist callmysql.NewSalt()
directly, instead of relying on theNewSalt()
method on theMySQLDb
instance (which internally callsmysql.NewSalt()
).
go-mysql-server
- 2759: ignore empty strings in sets with multiple values
fixes: #8584 - 2758: Fix for latin1 issue
This potentially fixes:- #8580
There's a longer comment in the code itself, but the summary is that this is a character set conversion issue. Perhaps it's repertoires or something else, but hopefully this moves us closer to the logically correct behavior.
- #8580
- 2757: Refactor:
AuthServer
This change refactors theAuthServer
implementation in GMS to the newAuthServer
/AuthMethod
structure from dolthub/vitess#379
This is preliminary work to set us up to add support forcaching_sha2_password
authentication.
Related to: #8496
Depends on: dolthub/vitess#379
vitess
Closed Issues
- 8584: Support
SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO'
- 7548: Unable to push to doltlab when sql-server is running
- 8488: excessive memory usage during
SELECT DISTINCT
query - 8452: The following is the log, it has been stuck at pulling..... for about one day. Is there any way to see if it is running normally?
- 8572: Potential TUI tool like Lazygit
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 0.62 | 0.3 |
groupby_scan | 13.46 | 16.71 | 1.2 |
index_join | 1.37 | 2.26 | 1.6 |
index_join_scan | 1.3 | 1.79 | 1.4 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.37 | 1.5 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.64 | 1.6 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 75.82 | 147.61 | 1.9 |
reads_mean_multiplier | 1.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 5.88 | 0.7 |
oltp_insert | 3.75 | 2.86 | 0.8 |
oltp_read_write | 8.58 | 11.24 | 1.3 |
oltp_update_index | 3.82 | 2.91 | 0.8 |
oltp_update_non_index | 3.89 | 2.86 | 0.7 |
oltp_write_only | 5.28 | 5.88 | 1.1 |
types_delete_insert | 7.7 | 6.21 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 98.13 | 41.35 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.60 |
---|
1.43.16
Merged PRs
dolt
- 8576: Change LateBindQueryist to use
mysql.NewSalt()
In preparation for refactoring the auth server interface in Vitess/GMS, this change makes LateBindQueryist callmysql.NewSalt()
directly, instead of relying on theNewSalt()
method on theMySQLDb
instance (which internally callsmysql.NewSalt()
).
go-mysql-server
- 2753: Fixes CTE issue with auth
This fixes the test introduced in:- dolthub/go-mysql-server#2745
Related PR: - dolthub/vitess#377
- dolthub/go-mysql-server#2745
- 2750: Fix alter NULL enum value panic
- 2739: Embed the
embedded.Tracer
into memTracer, to fulfil the updated interface
I was trying to use this projectgo-mysql-server
as a dependency alongside github.com/grafana/grafana-plugin-sdk-go/data. But the latter project depends on:- go.opentelemetry.io/otel v1.31.0
- go.opentelemetry.io/otel/trace v1.31.0
When I updated my go modules withgo mod tidy
I started to hit a compilation error:
Hence this change 🙏# github.com/dolthub/go-mysql-server/test /Users/samjewell/go/pkg/mod/github.com/dolthub/[email protected]/test/mem_tracer.go:22:2: could not import go.opentelemetry.io/otel/trace/embedded (open : no such file or directory) FAIL github.com/grafana/poc-sql-expressions-embedded-sql/dolthub-go-mysql-server [build failed] FAIL
vitess
- 378: support
set names binary
syntax (no quotes)
syntax for: #8574 - 377: Fixed CTE issue with auth
Fixes the test introduced in: - 375: support multiple like tables
Closed Issues
- 8574:
set names binary
fails.set names 'binary'
succeeds. Seems unquoted collations in MySQL are supposed to work withset names
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.14 | 0.62 | 0.3 |
groupby_scan | 13.22 | 17.01 | 1.3 |
index_join | 1.34 | 2.3 | 1.7 |
index_join_scan | 1.27 | 1.89 | 1.5 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.57 | 1.6 |
select_random_points | 0.34 | 0.67 | 2.0 |
select_random_ranges | 0.39 | 0.67 | 1.7 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 75.82 | 144.97 | 1.9 |
reads_mean_multiplier | 1.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 5.88 | 0.7 |
oltp_insert | 3.75 | 2.91 | 0.8 |
oltp_read_write | 8.58 | 11.45 | 1.3 |
oltp_update_index | 3.82 | 2.97 | 0.8 |
oltp_update_non_index | 3.89 | 2.91 | 0.7 |
oltp_write_only | 5.28 | 5.88 | 1.1 |
types_delete_insert | 7.7 | 6.21 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 98.98 | 40.93 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.60 |
---|
1.43.15
Merged PRs
dolt
- 8567: patch with tag collision test
Tag collisions exists and can lead to false positives. - 8566: Bug fix:
dolt_commit_diff
support for detached head mode
When we added support for showing diffs for theSTAGED
root throughdolt_commit_diff_
system tables, we didn't take into account that in detached head mode, there wouldn't be a valid staged root. This change detects if we're in detached head mode and replaces the staged root with the root of the detached head. - 8541: reverse keyless indexscans apply reversal
re: dolthub/go-mysql-server#2737
go-mysql-server
- 2751: Fix drop view if exists for doltgres
- 2750: Fix alter NULL enum value panic
- 2749: Support create and drop view with schema name
- 2748: use
equal
method for scopecolumn
This fixesDoltgresType
comparison issue - 2747: Add schema name to definitions for views, triggers, procedures
- 2736: use Equals method for sql.Types
The newDoltgresType
struct cannot be compared with==
, so should usesql.Type.Equals()
function.
Closed Issues
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 0.62 | 0.3 |
groupby_scan | 13.22 | 16.71 | 1.3 |
index_join | 1.37 | 2.3 | 1.7 |
index_join_scan | 1.27 | 1.86 | 1.5 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.37 | 1.5 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.64 | 1.6 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 75.82 | 144.97 | 1.9 |
reads_mean_multiplier | 1.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.88 | 0.7 |
oltp_insert | 3.82 | 2.91 | 0.8 |
oltp_read_write | 8.58 | 11.45 | 1.3 |
oltp_update_index | 3.89 | 2.97 | 0.8 |
oltp_update_non_index | 3.89 | 2.91 | 0.7 |
oltp_write_only | 5.47 | 5.88 | 1.1 |
types_delete_insert | 7.84 | 6.21 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 99.82 | 41.45 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.60 |
---|
1.43.14
Merged PRs
dolt
- 8555: In order to support multiple index types, create interface types for prolly Maps, and make the tree.MutableMap class generic.
- 8554: use new decimal type for
dolt diff
When modifying column from a decimal with a certain scale/precision to another decimal with different scale/precision, we should display diffs using the new decimal type instead of the old one.
related: #8359
fixes: #8551 - 8542: add GetDatabaseName function to DoltDB
- 8540: add a databasename parameter to the DoltDBFromCS
- 8538: Fix JSON merge issue that would report imprecise diffs in some situations
If:- A chunk begins with an object "A"
- A value "A.b" within this object was modified
- The previous chunk was also modified
Then the differ would incorrectly report that the entire "A" object had been modified, instead of the sub-value "A.b"
This could then lead to situations where the merge cannot be auto-resolved, because the differ claims that an object has been modified divergently, when it's actually two unrelated fields in the object that have been modified.
This PR fixes that scenario by properly detecting when the next chunk marks the start of an object.
- 8527: Support multiple schema for system tables with $tablename for doltgres
go-mysql-server
- 2741: fix: store the hashed password to 'authentication_string' (to #2740)
This PR addresse the issue #2740.- resolve #2740
- 2738: support multi-inherit
syntax: dolthub/vitess#375 - 2736: use Equals method for sql.Types
The newDoltgresType
struct cannot be compared with==
, so should usesql.Type.Equals()
function. - 2734: always unwrap mysql priv db
fixes: #8530 - 2733: disabling read-comitted
- 2721: Additional support for vector indexes.
This PR adds the vector function VEC_DISTANCE to GMS, as well as support for adding and altering vector indexes, and support forSHOW CREATE
on tables with vector indexes.
Vector indexes are not yet supported in Dolt. The corresponding version bump in Dolt will have checks preventing vector indexes from being added to Dolt tables.
vitess
Closed Issues
1.43.13
Merged PRs
dolt
- 8534: Fix issue where JSON diff would fail under specific circumstances.
If all of the following are true during a JSON diff operation:- One document fits in a single chunk and the other doesn't
- The location of the chunk boundary in the larger document is also present in the smaller document. (It doesn't correspond to a location that was added or removed)
- The chunk boundary falls at the end of a value in the document (before the next key or comma/right brace/etc)
Then the differ would fail to advance the prolly tree cursor and would incorrectly see the larger document as corrupt.
This fixes that issue and improves the error messaging to make it seem less like the database is corrupt, since the error is much more likely to be a parsing bug like this one.
Closed Issues
- 8530: Materialized View Gives PrivilegedDatabase Error
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.11 | 0.61 | 0.3 |
groupby_scan | 12.98 | 16.71 | 1.3 |
index_join | 1.37 | 2.26 | 1.6 |
index_join_scan | 1.3 | 1.82 | 1.4 |
index_scan | 34.33 | 55.82 | 1.6 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.37 | 1.5 |
select_random_points | 0.34 | 0.65 | 1.9 |
select_random_ranges | 0.39 | 0.64 | 1.6 |
table_scan | 34.95 | 55.82 | 1.6 |
types_table_scan | 75.82 | 147.61 | 1.9 |
reads_mean_multiplier | 1.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 7.98 | 5.77 | 0.7 |
oltp_insert | 3.75 | 2.91 | 0.8 |
oltp_read_write | 8.58 | 11.24 | 1.3 |
oltp_update_index | 3.89 | 2.91 | 0.7 |
oltp_update_non_index | 3.89 | 2.86 | 0.7 |
oltp_write_only | 5.37 | 5.88 | 1.1 |
types_delete_insert | 7.7 | 6.09 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 99.97 | 41.75 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.60 |
---|
1.43.12
Merged PRs
dolt
- 8526: Avoid comparing
sql.Types
indolt diff
Fixes #8511
Not all implementations ofsql.Type
are comparable. In particular, the enum type has a map field which makes the entire type incomparable.
To avoid doing this comparison in thechooseMostFlexibleType
function, we modify it to compare the underlying type tag instead. This PR also short-circuits computing a unified schema unless the schema has changed. - 8514: Better view caching
Binding a table name to a catalog symbol previously always loaded the schemas table from disk to first attempt binding a view. Now we cachedolt_schemas
using its hash. If the table does not exist, no views are defined, and we short circuit attempting to bind a name to a view.
go-mysql-server
- 2733: disabling read-comitted
- 2732: Get field string concat
Replacefmt.Sprintf
with string concat (+).BenchmarkSprintf-12 18748582 63.29 ns/op BenchmarkAddString-12 39934550 27.61 ns/op
- 2729: move
applyEventScheduler
logic andeventscheduler
to builder - 2712: Planbuilder Authorization
- dolthub/vitess#372
What's missing: - SHOW commands aren't in yet
information_schema
doesn't restrict it's output yet- Need far more robust testing than what currently exists
I thinkSHOW
andinformation_schema
will probably have the same solution, which may be to continue doing what we were doing before. Besides that, pretty much every works according to our current tests (outside of the aforementioned missing items).
- dolthub/vitess#372
vitess
- 374: USE Revisions use proper auth
- 373: Fixed printing bug in AliasedExpr node (was calling wrong print metho…
…d, which doesn't work with custom formatters) - 372: Embedded Authorization
Closed Issues
- 8511: Panic on
dolt show
1.43.11
Merged PRs
dolt
- 8522: libraries/doltcore/remotestorage: Improve connection reuse when fetching chunks from remote storage.
Improves performance of fetches from DoltHub, sql-server, and doltlab.
Improves some situations where routers and network access points do not respond well to clients which open a great number of connections to the same TCP endpoint, many of which live for a very short period of time.
http.DefaultClient comes with a default MaxIdleConnsPerHost of 2. Fetching with a high number of concurrent downloads results in many connections not being reused efficiently because they cannot get back into the idle pool because it is so small. Here we increase the MaxIdleConnsPerHost to be large enough so that our active connections during a fetch will fit within it.
Note: S3 limits a single HTTP connection to 100 requests, after which it is closed server-side. So currently dolt can still require a large number of new connections over the course of a pull, and the rate at which they are opened will depend on a number of factors including available throughput, round trip time resolving storage locations, etc. But this change will always be a big improvement over the old behavior.
go-mysql-server
- 2729: move
applyEventScheduler
logic andeventscheduler
to builder - 2727: fix dropped error in createView
- 2719: move
applyUpdateAccumulators
This PR deletes theplan.RowUpdateAccumulator
node, and directly injects anaccumulatorIter
into the rowexec tree infinalizeIters
.
Doltgres fix: dolthub/doltgresql#909
Closed Issues
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 0.62 | 0.3 |
groupby_scan | 13.7 | 16.71 | 1.2 |
index_join | 1.39 | 2.35 | 1.7 |
index_join_scan | 1.27 | 1.89 | 1.5 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.18 | 0.27 | 1.5 |
oltp_read_only | 3.49 | 5.47 | 1.6 |
select_random_points | 0.34 | 0.67 | 2.0 |
select_random_ranges | 0.39 | 0.64 | 1.6 |
table_scan | 34.33 | 54.83 | 1.6 |
types_table_scan | 75.82 | 144.97 | 1.9 |
reads_mean_multiplier | 1.5 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 5.88 | 0.7 |
oltp_insert | 3.82 | 2.91 | 0.8 |
oltp_read_write | 8.58 | 11.45 | 1.3 |
oltp_update_index | 3.82 | 2.97 | 0.8 |
oltp_update_non_index | 3.89 | 2.91 | 0.7 |
oltp_write_only | 5.37 | 5.99 | 1.1 |
types_delete_insert | 7.7 | 6.32 | 0.8 |
writes_mean_multiplier | 0.9 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 99.4 | 40.78 | 2.4 |
tpcc_tps_multiplier | 2.4 |
Overall Mean Multiple | 1.60 |
---|