Merged PRs
dolt
- 7673: CLI Docs: Adding docs for
system_variables
field in config.yaml for sql-server command
The CLI docs for sql-server doesn't include thesystem_variables
field available inconfig.yaml
. - 7672: [store] use hasCache to minimize pendingRef pool
Expand theChunkStore
interface to let thenodeStore
access recently accessed chunks. Avoid adding a child ref to thependingRef
list when already present innbs.hasCache
. For TPC-C this appears to reduce the pending ref count by another ~80%. - 7666: [statspro] Avoid copying histograms, perf improvement
companion: dolthub/go-mysql-server#2421 - 7654: [store] one hashset for child ref checks
When writes add chunks at execution time, we currently add their direct child references to the memory table's pending ref queue to check for GC'd refs. We do this by constructing a hash map to pass every chunk's child refs to the memtable's pending queue. This PR avoids creating a new hashset per chunk by using a callback to delay reading out the refs. We make one child ref set per memtable, which has the added benefit of deduplicating child refs between chunks.
go-mysql-server
- 2427: support
Com_delete
,Com_insert
,Com_update
status variables
related: #7646 - 2426: use
@@session.collation_server
duringcreate database ...
This PR makes it socreate database ...
actually reads the@@session.collation_server
variable.
Additionally, this ensures that settings@@character_set_server
sets@@collation_server
and vice versa.
Interestingly, it seems like MySQL actually ignores the global scope of these system variables, and reads the session scope instead.
fixes #7651 - 2423: Adding test for preparing
time.Time
types
This PR adds tests for usingtime.Time
, some tests have to be skipped because we don't support Timespan correctly.
companion pr:dolthub/vitess#327dolthub/vitess#328
test for #7665 - 2422: Support
Questions
status variable
This PR adds logic to update status variableQuestions
.
This only works in the server context, probably doesn't throughdolt sql
cli.
#7646 - 2421: [stats] costed index scan perf
Histogram copying is expensive. Instead pass and mutate references. We have to use a different struct type to load stats from JSON in order to support histogram interface generalization.
related Dolt-side: #7666 - 2420: support case-insensitive
LIKE
for show status/variables
MySQL stores session and global variables in aperformance_schema
database, and these tables have a case-insensitive collation on the variable names.
This PR emulates that behavior by hard coding the collation the schemas forShowStatus
andShowVariables
nodes. - 2419: Bug fix: Allow JSON scalar comparison between int64 and float64
When comparing JSON values, numbers may be represented internally as an int64 or float64, but our comparison code wasn't casting an int64 to a float64 in order to compare it with a float64 value.
Fixes #7656 - 2418: fix
show create database
to actually show charset/collation
This PR fixes theSHOW CREATE DATABASE ...
statement to actually show the charset/collation that the db is under instead of always default.
Additionally, this PR parses thecharset
database option, instead of ignoring it like before.
partially fixes: #7651 - 2416: /{.github,go.mod,go.sum}: bump go version
- 2414: stubbing out status variables
This PR adds the initial implementation of Status Variables.
There are 682 status variables, and are very similar to System Variables.
Every variable is read-only (and can only be updated by the server itself), and there are session-specific variables.
MySQL Docs: https://dev.mysql.com/doc/refman/8.0/en/server-status-variable-reference.html
Related: #7646
vitess
- 328: revert decimals
issue: dolthub/vitess#328 - 327: add case for
time.Time
anddecimal
in bindvars
We were unable to usetime.Time
anddecimal
type variables bind vars, so they couldn't be used as arguments to prepare statements.
This PR addresses that issue.
fixes: #7665 - 325: /{.github,go.mod,go.sum}: bump go version
- 320: Updates for binlog primary protocol
- Porting over more code from
vitess.io/vitess
– support for theCOM_REGISTER_REPLICA
command. - Fixing a bug in Vitess' deserialization of the
COM_BINLOG_DUMP_GTID
command. - Adding some
String
functions to help with debugging. - Exposing the ability to flush a connection's buffer, as a short-term workaround for needing to flush the buffer more frequently than at the end of the connection in order to support `COM_BINLOG_DUMP_GTID'.
- Porting over more code from
Closed Issues
- 7651:
set global character_set_server
not working the same way in MySQL, may lead inconsistency - 7601: One more issue related to the Adobe Commerce ( Magento ) installation.
- 7665: Error 1105: type time.Time not supported as bind var
- 7656: JSON_CONTAINS regression
- 7653: Panic in
calculateMergeConflicts
duringdolt pull
if sql-server is running
Performance
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 3.07 | 1.5 |
groupby_scan | 13.46 | 17.63 | 1.3 |
index_join | 1.34 | 5.18 | 3.9 |
index_join_scan | 1.27 | 2.26 | 1.8 |
index_scan | 34.33 | 54.83 | 1.6 |
oltp_point_select | 0.17 | 0.49 | 2.9 |
oltp_read_only | 3.36 | 8.13 | 2.4 |
select_random_points | 0.33 | 0.78 | 2.4 |
select_random_ranges | 0.39 | 0.94 | 2.4 |
table_scan | 34.95 | 54.83 | 1.6 |
types_table_scan | 74.46 | 158.63 | 2.1 |
reads_mean_multiplier | 2.2 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 8.13 | 6.79 | 0.8 |
oltp_insert | 3.75 | 3.36 | 0.9 |
oltp_read_write | 8.43 | 15.55 | 1.8 |
oltp_update_index | 3.82 | 3.49 | 0.9 |
oltp_update_non_index | 3.82 | 3.36 | 0.9 |
oltp_write_only | 5.37 | 7.7 | 1.4 |
types_delete_insert | 7.7 | 7.43 | 1.0 |
writes_mean_multiplier | 1.1 |
TPC-C TPS Tests | MySQL | Dolt | Multiple |
---|---|---|---|
tpcc-scale-factor-1 | 102.03 | 18.72 | 6.5 |
tpcc_tps_multiplier | 6.5 |
Overall Mean Multiple | 3.27 |
---|