Merged PRs
dolt
- 4335: cmd user/password arguments always override yaml config
Closes: #4333 - 4324: go/store/prolly/{message, tree}: Reduce memory footprint of
message.ItemAccess
,tree.Node
- Refactored
message.ItemAccess
(previouslyItemArray
) to decrease memory footprint from 48 bytes to 10. - Refactored
tree.Node
to decrease memory footprint from 152 bytes to 56 tree.nodeCache
now cachestree.Node
instead ofchunks.Chunk
. This eliminates decode time for cache hits.- Reworked lock striping to
tree.nodeCache
to improved access latency.
- Refactored
- 4323: go/utils/remotesrv: Make remotesrv implementation into a library which can be used from dolt proper.
Adds some functionality to remotesrv:-http-port
and-grpc-port
can be the same, in which case there is only one listener and both gRPC and file server traffic are served over the same port.- the grpc server will echo the incoming request's
:authority
header, with the supplied-http-port
, if no-http-host
is supplied. Changes the default behavior ofremotesrv
to be that, rather than generating URLs with an authority component containinglocalhost
as the hostname.
- 4316: Trim trailing nil fields from tuples
This PR enforces a canonical form for tuples. Any tuple that has trailing nil field(s) will be truncated to the first non-nil field. This fixes #4270. - 4314: go/store/prolly: Bound maximum pending writes to prolly.MutableMap
go-mysql-server
- 1255: fix
numberTypeImpl.SQL()
to convert from any type
The SQL method fornumberTypeImpl
expectsv
to already be the right type for thebaseType
, this is not always the case.
CASE
statements have an error guard for this behavior, which shouldn't be there.
There are likely other types that haveSQL()
methods that don't work for all types.
Changes:- added type switch for types that are unconvertable to number
- remove analyzer rule 'validateCaseResultTypesId`
Closes #4306
- 1252: Reimplemented LIKE expressions to add collation support
Previously, we were converting the patterns fromLIKE
expressions into patterns that the standard regex parser would understand. Said parser does not support collations (as implemented in MySQL), therefore this is a custom-developed pattern matcher forLIKE
expressions that fully supports collations.
This is ONLY for patterns on theLIKE
expression. We still need to implement full regex parsing to supportREGEXP_LIKE
.. Once we haveREGEXP_LIKE
completed, we may revert this back to the regex conversion process, but that will be no time soon.
This also fixes #4303 - 1249:
UpdateJoin
bug fixes
Bug fixes for #4288- qualifying check constraint expressions when multiple tables are being updated
- support finding UpdatableTables through ProcessIndexableTable and ProcessTable nodes
- erroring out when a table updater isn't available for a SetField expression, instead of silently dropping it
This does not address another UpdateJoin bug I just found while testing: #4304. Mentioning that one here so we have this context connected when we go to fix it.
I verified that Dolt's enginetest suite runs correctly with these changes.
Closed Issues
- 4269: sum() of decimal types with negative numbers is incorrect
- 4333: Support
--user
and--password
sql-server
args even if their is aconfig.yaml
- 4270: Diff shows rows that have no diffs when a column has been added in the past.
- 4306: Panic on "conflicting" result types in
IF()
function - 4288: Query to revert a single column fails
- 4303: Double backslash results in unexpected LIKE comparison
Latency
Current Default Format (__LD_1__
)
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.96 | 6.55 | 3.3 |
groupby_scan | 12.3 | 22.28 | 1.8 |
index_join | 1.16 | 16.71 | 14.4 |
index_join_scan | 1.12 | 16.12 | 14.4 |
index_scan | 30.81 | 71.83 | 2.3 |
oltp_point_select | 0.15 | 0.57 | 3.8 |
oltp_read_only | 2.97 | 9.56 | 3.2 |
select_random_points | 0.3 | 1.37 | 4.6 |
select_random_ranges | 0.35 | 1.37 | 3.9 |
table_scan | 31.37 | 68.05 | 2.2 |
types_table_scan | 69.29 | 612.21 | 8.8 |
reads_mean_multiplier | 5.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 3.13 | 19.65 | 6.3 |
oltp_insert | 1.67 | 7.98 | 4.8 |
oltp_read_write | 5.37 | 36.24 | 6.7 |
oltp_update_index | 1.73 | 9.22 | 5.3 |
oltp_update_non_index | 1.73 | 6.43 | 3.7 |
oltp_write_only | 2.43 | 26.2 | 10.8 |
types_delete_insert | 3.25 | 155.8 | 47.9 |
writes_mean_multiplier | 10.8 |
Overall Mean Multiple | 7.9 |
---|
New Format (__DOLT__
)
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.71 | 1.4 |
groupby_scan | 12.08 | 16.71 | 1.4 |
index_join | 1.16 | 4.57 | 3.9 |
index_join_scan | 1.12 | 3.96 | 3.5 |
index_scan | 30.81 | 52.89 | 1.7 |
oltp_point_select | 0.15 | 0.46 | 3.1 |
oltp_read_only | 2.97 | 8.28 | 2.8 |
select_random_points | 0.3 | 0.73 | 2.4 |
select_random_ranges | 0.36 | 1.12 | 3.1 |
table_scan | 30.81 | 63.32 | 2.1 |
types_table_scan | 70.55 | 580.02 | 8.2 |
reads_mean_multiplier | 3.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.48 | 11.24 | 4.5 |
oltp_insert | 1.34 | 2.76 | 2.1 |
oltp_read_write | 5.0 | 17.01 | 3.4 |
oltp_update_index | 1.27 | 5.09 | 4.0 |
oltp_update_non_index | 1.23 | 5.28 | 4.3 |
oltp_write_only | 2.07 | 8.28 | 4.0 |
types_delete_insert | 2.81 | 13.46 | 4.8 |
writes_mean_multiplier | 3.5 |
Overall Mean Multiple | 3.2 |
---|