Merged PRs
dolt
- 6164: Bug fix: Enable
dolt_cherry_pick
stored procedure to work with@@autocommit
Previously, whendolt_cherry_pick
encountered a data or schema conflict, or a constraint violation, it would return an error with a message about the problem and how to resolve. This works well when@@autocommit=0
, but when@@autocommit=1
the error causes the automatic transaction management to automatically rollback the changes, which prevents users from being able to examine and fix the conflicts.
This PR changesdolt_cherry_pick
to be more similar to howdolt_merge
reports conflicts – instead of returning an error message,dolt_cherry_pick
now returns additional fields that show the number of tables with data conflicts, number of tables with schema conflicts, and number of tables with constraint violations.
go-mysql-server
- 1823: Trim spaces and empty statements to the right in planbuilder.Parse
- 1807: add support for more
JSON_TABLE()
functionality
This PR adds support for:FOR ORDINALITY
columns, which is just an auto incrementDEFAULT <value> ON ERROR/EMPTY
, which fills in values when encountering either an error or a missing value- when this isn't specified,
NULL
is used ERROR <value> on ERROR/EMPTY
, which throws an error when encountering either an error or a missing value- when this isn't specified, we ignore errors and fill in values with
NULL
NESTED
columns, which is a way to extract data from objects within objects and so on- when there are multiple
NESTED
columns, they are "sibling" nested, they take turns beingNULL
Note: there is a skipped test highlighting a bug in either our jsonpath implementation or it's something here...
Companion PR: dolthub/vitess#240
MySQL docs: https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html
vitess
- 245: allow
event
as table and column name
The PR allowsEVENT
non-reserved keyword to be used as table and column name without quoting.
The missing edge case includes usingEVENT
for user name or host name. - 240: Support more
JSON_TABLE
functionality
Source: https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html
Note: the MySQL docs indicate thatJSON_TABLE( expr, path COLUMNS (column_list) ) [AS] alias column_list: column[, column][, ...] column: name FOR ORDINALITY | name type PATH string path [on_empty] [on_error] | name type EXISTS PATH string path | NESTED [PATH] path COLUMNS (column_list) on_empty: {NULL | DEFAULT json_string | ERROR} ON EMPTY on_error: {NULL | DEFAULT json_string | ERROR} ON ERROR
PATH
is optional in theNESTED
case, but it doesn't seem that way.
I chose to follow what they say rather than what they do.
Closed Issues
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 1.93 | 2.61 | 1.4 |
groupby_scan | 12.3 | 16.71 | 1.4 |
index_join | 1.18 | 4.33 | 3.7 |
index_join_scan | 1.14 | 2.11 | 1.9 |
index_scan | 30.81 | 53.85 | 1.7 |
oltp_point_select | 0.14 | 0.46 | 3.3 |
oltp_read_only | 2.86 | 7.98 | 2.8 |
select_random_points | 0.3 | 0.75 | 2.5 |
select_random_ranges | 0.35 | 1.06 | 3.0 |
table_scan | 30.81 | 54.83 | 1.8 |
types_table_scan | 69.29 | 155.8 | 2.2 |
reads_mean_multiplier | 2.3 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.57 | 6.21 | 1.1 |
oltp_insert | 2.76 | 2.91 | 1.1 |
oltp_read_write | 6.43 | 15.27 | 2.4 |
oltp_update_index | 2.61 | 3.25 | 1.2 |
oltp_update_non_index | 2.76 | 3.13 | 1.1 |
oltp_write_only | 3.68 | 7.56 | 2.1 |
types_delete_insert | 5.18 | 7.04 | 1.4 |
writes_mean_multiplier | 1.4 |
Overall Mean Multiple | 2.0 |
---|