github dolthub/dolt v1.17.1
1.17.1

latest releases: v1.41.1, v1.41.0, v1.40.3...
9 months ago

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 and DOLT_AUTHOR_DATE environment vars
    These two new environment vars perform the same function as GIT_COMMITTER_DATE and GIT_AUTHOR_DATE, respectively. They set the two timestamps associated with newly created commits on dolt commit and dolt 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 includes SELECT 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 than SELECT queries.
    Fixes: #6691
  • 2032: fix order by on unioned schemas
    When unioning two SELECT statements that have different column types, we would get -1 during assignExecIndexes, 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
      Added plangen 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 to DISABLE by default.
      Corresponding Dolt changes: #6108

vitess

  • 278: fix unsigned flag for COM_STMT_EXECUTE when new_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 for COM_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 wide enum_field_type followed by a 2 byte wide Column Definition Flag.
    However, when reading a COM_STMT_EXECUTE payload (that specifies parameters through new_params_bind_flag), MySQL indicates parameter_types with the same 1 byte wide enum_field_type followed by a 1 byte wide flag that indicates signedness.
    So basically, read 0x80 for COM_STMT_EXECUTE parameters, but read/write 0x20 for field_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 parsing COM_STMT_EXECUTE with new_params_bind_flag.
    Fixes #6728
  • 277: Allow parsing of CREATE TABLE t AS (...) UNION (...)
    This allows parsing of CREATE 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 parse CREATE 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

Don't miss a new dolt release

NewReleases is sending notifications on new releases.