Merged PRs
dolt
- 6744: go/store/nbs: store.go: Clean up how we update hasCache so that we only update it after successfully writing the memtable.
- 6740: Support for
DOLT_COMMITTER_DATE
andDOLT_AUTHOR_DATE
environment vars
These two new environment vars perform the same function asGIT_COMMITTER_DATE
andGIT_AUTHOR_DATE
, respectively. They set the two timestamps associated with newly created commits ondolt commit
anddolt merge
.
Setting these two environment variables allows the deterministic creation of commit hashes, as requested in #6724
go-mysql-server
- 2041: not panic on
Star.IsNullable()
This reverts dolthub/go-mysql-server#2039 because the fix was not correct choice for the issue #6659. - 2039: AliasedExpr.InputExression should be compared case insensitive
- 2038: error msg for invalid reference to non-existent table or column in existing view
It catches invalid reference to non-existent table or column in existing view. This includesSELECT
queries on a view that references table or column that was removed or renamed.
Note: For now, It does not catch references to invalid functions or users without appropriate privilege cases and queries other thanSELECT
queries.
Fixes: #6691 - 2032: fix
order by
on unioned schemas
When unioning twoSELECT
statements that have different column types, we would get -1 duringassignExecIndexes
, resulting in a panic.
This PR fixes the issue by matching on unqualified column names when we don't have an exact match.
We don't find these matches because the second table has an unqualified alias over the column name because it is wrapping it in a convert node. - 2030: unskipping fixed tests
We have many tests that are marked skip/broken, but they are working now.
This PR unskips and cleans up some of these skipped tests. - 2022: TPC-X query plan tests
Added schemas, stats, query plans for:- TPC-H
- TPC-DS
- IMDB join planning benchmark
Addedplangen
to auto-update the tests.
We cannot parse all of the TPC-DS query plans yet. I saw some ROLLUP and aggregation validation errors.
Excluding data ops benchmark because the plans are not interesting.
- 1786: support event execution
This PR adds event execution logic implementing EventScheduler interface in the engine.
Notes:- Event Scheduler status cannot be updated at run-time.
- Event
DISABLE ON SLAVE
status is not supported. It will be set toDISABLE
by default.
Corresponding Dolt changes: #6108
vitess
- 278: fix unsigned flag for
COM_STMT_EXECUTE
whennew_params_bind_flag
is set
In the previous implementation, we assumed that the way the MySQL Protocol specifies Column Definitions is the same as how it specifies parameter types forCOM_STMT_EXECUTE
. The difference lies specifically in the flags that come after the field type.
When reading/writing a field type (for a Column Definition), MySQL expects/writes a 1 byte wideenum_field_type
followed by a 2 byte wide Column Definition Flag.
However, when reading aCOM_STMT_EXECUTE
payload (that specifies parameters throughnew_params_bind_flag
), MySQL indicatesparameter_types
with the same 1 byte wideenum_field_type
followed by a 1 byte wide flag that indicates signedness.
So basically, read0x80
for COM_STMT_EXECUTE parameters, but read/write0x20
forfield_types
/column definitions.
I'm assuming MySQL does it this way because the majority of the Column Definition Flags are nonsensical/meaningless when paired up with parameters to prepared statements. Regardless, this was a subtle bug, and we should have tests for parsingCOM_STMT_EXECUTE
withnew_params_bind_flag
.
Fixes #6728 - 277: Allow parsing of
CREATE TABLE t AS (...) UNION (...)
This allows parsing ofCREATE TABLE AS
statements when the expression being used to create the table is a set operation like UNION, INTERSECT, or EXCEPT.
The "AS" keyword is typically optional. But this change only allows set ops to be used with CREATE ... AS when the AS is explicit. This is to avoid an ambiguity in the current grammar when attempting to parseCREATE TABLE t (
, where what follows could be a set op or a table definition. Fully matching MySQL's spec here would require rewriting our grammar to avoid this ambiguity, which is outside the scope of the PR. However, this PR makes us strictly more correct than we were before. - 276: Allow parsing of
SECONDARY_ENGINE = NULL
This is a simple change to allow parsing a NULL value for the SECONDARY_ENGINE attribute for CREATE TABLE and ALTER TABLE statements.
Closed Issues
- 6724: dolt merge doesn't produce deterministic hashes
- 6728: Out of Range for bigint unsigned with question mark
- 6691: Renaming a table breaks views using that table
- 5498: Support CREATE EVENT statement
- 6393: Handle schema merge for column and FK drop automatically
- 6406:
FOUND_ROWS()
returns incorrect results - 6343: Produce a diff of two arbitrary queries
- 6572: Prepared statements cache AST nodes
- 1782: Error 1105: -128 out of range for BIGINT UNSIGNED
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.07 | 2.97 | 1.4 |
groupby_scan | 12.98 | 18.28 | 1.4 |
index_join | 1.3 | 4.82 | 3.7 |
index_join_scan | 1.25 | 2.26 | 1.8 |
index_scan | 33.12 | 59.99 | 1.8 |
oltp_point_select | 0.14 | 0.4 | 2.9 |
oltp_read_only | 2.71 | 7.3 | 2.7 |
select_random_points | 0.31 | 0.72 | 2.3 |
select_random_ranges | 0.37 | 0.97 | 2.6 |
table_scan | 33.12 | 58.92 | 1.8 |
types_table_scan | 75.82 | 173.58 | 2.3 |
reads_mean_multiplier | 2.2 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 5.18 | 5.88 | 1.1 |
oltp_insert | 2.71 | 2.86 | 1.1 |
oltp_read_write | 6.32 | 14.21 | 2.2 |
oltp_update_index | 2.61 | 2.91 | 1.1 |
oltp_update_non_index | 2.76 | 2.86 | 1.0 |
oltp_write_only | 3.75 | 7.04 | 1.9 |
types_delete_insert | 5.28 | 6.21 | 1.2 |
writes_mean_multiplier | 1.3 |
Overall Mean Multiple | 1.9 |
---|