github dolthub/dolt v1.29.6
1.29.6

latest releases: v1.43.0, v1.42.20, v1.42.19...
9 months ago

Merged PRs

dolt

  • 7179: go: sqle: DoltDatabaseProvider: If we encounter an error while creating a database, try to clean up after ourselves so we do not leave partially initialized database state around.
  • 7178: go: sqle: cluster: Create missing remotes for cluster replication on startup if they do not already exist.
    Previously dolt sql-server would error if there were existing databases and they were missing any of the remotes listed as cluster replication remotes in the config.yaml. This changes it so that those remotes are automatically created at startup instead.
  • 7175: /go/store/{blobstore,datas,nbs}: working, needs cleanup
  • 7173: go: sqle: cluster: Fix MySQLDb and dolt_branch_control replication for the cases where you have more than one standby server in the cluster.
    Previously these changes would only get replicated to the first database in the cluster.
  • 7171: Db/oc persister
  • 7169: More detailed warning message for import schema not matching
    Updates the warning message for dolt table import to print when the import schema does not match the destination table's schema, not just when there are fewer columns in the import file. Also updates the warning message to list the column names that differ between the import file and the destination table's schema.
    Resolves: #6113
  • 7161: Return a different error message for tx commit conflicts depending on @autocommit
    When a transaction commit conflict occurs, the next steps to take are slightly different depending on whether @autocommit is enabled or not. This PR changes the error message we return to describe those steps in more detail when @autocommit is enabled.
  • 7153: proto/third_party/flatbuffers,go/gen/fb/serial: Bump flatc to pick up the version that only has Try accessors.
  • 7137: Adding tests for column name metadata through MySQL C++ and Rust Connector
    Added assertions that result set column name metadata is populated for the C++ and Rust MySQL Connector libraries.
  • 7115: serialize on update expressions
    This PR add serialization for ON UPDATE expressions on columns.
    This change requires changes to the flatbuffer schema as we have to store an additonal field.
    Older versions are able to read and modify databases in the newer version without any error, but any ON UPDATE functionality is missing (which makes sense). Tables with ON UPDATE ... defined on them won't be displayed and performing an UPDATE won't trigger any of the defined expressions to run. So, this should be a Feature Verison bump.
    companion pr: dolthub/go-mysql-server#2188
    fixes #6030
  • 7114: .github: Iterate on getting bats tests running with lambdabats.

go-mysql-server

  • 2203: guard ctx.Span with nil check
    We have places where we call expression.Eval(nil, nil).
    The null context causes a panic when we call Span on it.
    This PR just adds a nil check inside the *context.Span() receiver
    fixes #7154
  • 2200: Replace carder with stats
    I wanted to separate 1) moving cardinality into stats objects, and 2) changing costing to start at join relations, but I kept finding small bugs and hard a time separating the two. So i did the move, fixed bugs along the way, and then regenerated plans with the changes.
    Our current join plans are less useful after we start doing costed join reordering, which makes it kind of annoying that these refactors are dominated by mostly irrelevant plan changes. Still I think the current refactors were necessary, because we need the costing changes and users will still use stats-less tables. Soon I will start adding more unit-esque plan tests that are equally comprehensive but test fewer things, like whether certain plans' cardinalities are accurate, and how closely cost estimates reflect execution runtime.
    Dolt side is passing: #7156
  • 2199: remove delimiter before caching the prepared stmt
    When using prepared statement, some create statements were being stored in the cache with delimiter at the end of it, which does not trimmed when executing the prepared statement. This causes consistency issue where in cases of storing a create statement, it will have the delimiter whereas running the same query without it being prepared statement trims before storing.
  • 2197: prevent RangeJoinHeap plans over Filter nodes
    Currently, we don't have proper handling of nodes that aren't RangeHeaps in the RangeJoinIter.
    This PR makes it so that we don't create plans that would have these nodes.
    Additionally, we error instead of panicking when we see an invalid node in this area.
    fixes #7139
  • 2194: fix decimal result scale difference on server
    This PR fixes:
    • converting the decimal type values to given decimal column type before inserting.
    • getting precision and scale of final decimal type correctly.
  • 2191: Move index costing into join planning phase
    Put index costing inside join planning, so that in the future join planning will have better cardinalities (statistics) for join ordering. Most of the changes will look like refactoring the way we expression index lookups in the memo. I attempted to do this in a way that makes as few changes as possible to join planning; the goal here is to set me up for rewriting cardinality checks with stats objects. It didn't go as cleanly as I wanted, I ended up shifting a lot of join plans back to lookup plans because HASH_JOIN was beating LOOKUP_JOIN in several key places.
    One downside of the current PR is that it converts a sysbench MERGE_JOIN into a LOOKUP_JOIN. I would prefer fixing this in the next PR when I do a bigger costing overhaul.
    Variety of fixes for join hinting, correctness, etc.
    At some point we appeared to fix this:
    dolthub/go-mysql-server#1893
  • 2188: support on update current_timestamp
    This PR adds support for handling and executing ON UPDATE column expressions, which are triggered when an update is applied to any column in the row.
    TODO:
    • we support now() for default, but not the syntax for on update
      fixes #6030

Closed Issues

  • 7182: Previous panic concerning CASE WHEN
  • 6030: ON UPDATE CURRENT_TIMESTAMP in column definition does not update TIMESTAMP
  • 6113: Warning during csv import
  • 7154: Panic when Using BETWEEN and CASE WHEN
  • 7148: UPDATE counters SET value = value + 1 WHERE key = 'foo'; should be concurrency-safe
  • 7164: How to connect a dolt sql-server from a remote server

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 2.14 2.86 1.3
groupby_scan 13.22 17.32 1.3
index_join 1.34 4.91 3.7
index_join_scan 1.25 2.11 1.7
index_scan 34.33 64.47 1.9
oltp_point_select 0.17 0.44 2.6
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 64.47 1.9
types_table_scan 74.46 173.58 2.3
reads_mean_multiplier 2.1
Write Tests MySQL Dolt Multiple
oltp_delete_insert 6.21 6.21 1.0
oltp_insert 2.91 3.02 1.0
oltp_read_write 7.56 15.0 2.0
oltp_update_index 3.07 3.19 1.0
oltp_update_non_index 3.19 3.13 1.0
oltp_write_only 4.25 7.3 1.7
types_delete_insert 5.99 6.79 1.1
writes_mean_multiplier 1.3
Overall Mean Multiple 1.7

Don't miss a new dolt release

NewReleases is sending notifications on new releases.