Merged PRs
dolt
- 7158: /{go,integration-tests}: add oci blobstore implementation
This PR adds an Oracle Cloud Infrastructure (OCI)blobstore
implementation.
OCIBlobstore.Concatenate
is unimplemented as OCI doesn't currently support building composite objects.
OCIBlobstore.Put
will use theobjectstorage.PutObject
method for uploads smaller than the minimum multipart upload part size of 10MB, but will use the Multipart Upload process for all uploads larger than 10MB.
Objects have aVersionId
as well as anETag
, however theETag
value is used for the conditional match header, not theVersionId
, see https://github.com/oracle/oci-go-sdk/blob/v65.54.0/objectstorage/get_object_request_response.go?s=719:5196#L39
UPDATE: this PR also contains changes so that an Oracle bucket can be used as a remote and backup
go-mysql-server
- 2217: Fix decimal parsing bug
Decimals with capitalized exponential 'E' were incorrectly bound to literals, losing precision in some cases.select 5.0E-5; // -> 0.0001
- 2210: sql/planbuilder: Update join defaults are not prefixed, need individual table schemas to resolve
Updates need to resolve default expressions. The input definitions for update joins include the total join output columns. If two of those columns have the same name, the target table's unqualified default expression will throw an "ambiguous column" error. We partition the update join schemas/column definitions to sidestep the error.
The case where this is problematic is ALTER COLUMN expressions, where only the columns being modified are scoped for some reason. In those cases, I create a new scope with the source table schema to provide the full set of underlying column definitions. There is probably a whole class of virtual columns/column default bugs related to the way we resolve alter statements. - 2208: fix type evaluating for
mult
anddiv
arithmetic operations- For
Mult
expression, the.Type()
method is fixed that it returns correct type for decimal type results, which uses the sum of precision and scale values of its right and left values. - For
Div
expression, the.Type()
method is fixed that it returns the correct precision and scale for the final result.
- For
- 2204: fix foreign key panic on update
When resolving ForeignKeys,ForeignKeyReferenceHandler.CheckTable()
callsPartition()
and iterates over all rows in the referenced table to ensure that the key is valid (doesn't contain any values that are not in the referenced table).
WriteableIndexedDoltTable
prevents us from reading every value throughPartition()
as it is only supposed to return rows that match the index range. Additionally, there are some differences between the way MySQL and dolt handle certain ddl and dml operations during delayed resolution of Foreign Keys.
To fix this, we selectively perform table scans (only when we are creating/altering the table to resolve foreign keys).
Fixes #6963
Companion PR: #7203
Closed Issues
- 6963: Update FK panic
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.18 | 2.81 | 1.3 |
groupby_scan | 12.98 | 17.32 | 1.3 |
index_join | 1.34 | 5.0 | 3.7 |
index_join_scan | 1.25 | 2.07 | 1.7 |
index_scan | 33.72 | 63.32 | 1.9 |
oltp_point_select | 0.17 | 0.43 | 2.5 |
oltp_read_only | 3.36 | 7.7 | 2.3 |
select_random_points | 0.32 | 0.73 | 2.3 |
select_random_ranges | 0.39 | 0.87 | 2.2 |
table_scan | 34.33 | 63.32 | 1.8 |
types_table_scan | 74.46 | 173.58 | 2.3 |
reads_mean_multiplier | 2.1 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
oltp_delete_insert | 5.47 | 5.99 | 1.1 |
oltp_insert | 2.66 | 2.91 | 1.1 |
oltp_read_write | 7.43 | 14.73 | 2.0 |
oltp_update_index | 2.86 | 3.02 | 1.1 |
oltp_update_non_index | 2.86 | 2.97 | 1.0 |
oltp_write_only | 4.03 | 7.3 | 1.8 |
types_delete_insert | 5.37 | 6.55 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.7 |
---|