Skip to content

1.50.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 27 Feb 17:43

Merged PRs

dolt

  • 8896: go: sqle: remotesrv: Fix SqlContext interceptors to always forward along the sql.Context as the request Context as well.
  • 8880: go: publishrelease: buildpgobinaries.sh: Manually specify the SDK version of our toolchain so it shows up in our release binaries.
  • 8870: Allow primary keys to contain address columns sorted by their resolved values.
    This is the Dolt part of this change.
    GMS PR: dolthub/go-mysql-server#2854
    Doltgres PR: dolthub/doltgresql#1214
    The goal of the change is to allow for indexes to use an out-of-line variable-length type (like TEXT or BLOB) as a primary key while still storing just the address in the index (instead of being forced to store a prefix of the value).
    As a result of this change, any tuple comparison operation may need to resolve a hash in the NodeStore. This poses two complications:
    1. The tuple logic exists at a much lower level than the node store and can't depend on it without creating a dependency cycle. We get around this with a new ValueStore interface that can store and retrieve variable-length bytestrings by their content hash. NodeStore is the only implementation of this interface, but decoupling the interface from the implementation allows us to not depend on NodeStore's internals when passing it to lower-level code.
    2. Tuple comparison operations can now end up doing disk IO, which means they need a context parameter.
  • 8865: Don't rewrite table data when changing enum/varchar/varbinary type to make it more permissive.
    Sometimes a schema change can widen the set of valid column values without affecting the representation of any existing columns. Examples include:
    • Adding a possible value to the end of an enum
    • Increasing the length of a varchar/varbinary column.
      In these cases, there's no need to rewrite the table, since every tuple is guaranteed to have the same representation it had before.
  • 8849: sql-server: Add behavior: auto_gc_behavior: enable.
    When Auto GC is enabled, the running sql-server will periodically collect a Dolt database that is growing in size. This behavior is currently experimental. Tuning the behavior around how often to collect is ongoing work.

go-mysql-server

  • 2859: server: Add a ContextFactory parameter to the handler, giving integrators control over the *sql.Context creation.
  • 2858: include new/old expressions when resolving projections in trigger scope
    When creating the trigger scope, we copy over the columns and rewrite with the new and old scope, but we don't copy over their expressions as well. This PR fixes that.
    fixes: #8886
  • 2857: [cte] fix issue with invalid cte scope mapping
    fixes: #8871
    We were not setting subquery scope mapping, which produced a nil expression when trying to preform a filter inversion.
  • 2854: Allow primary keys to contain address columns sorted by their resolved values.
    This is the GMS part of this change.
    Dolt PR: #8870
    Doltgres PR: dolthub/doltgresql#1214
    The goal of the change is to allow for indexes to use an out-of-line variable-length type (like TEXT or BLOB) as a primary key while still storing just the address in the index (instead of being forced to store a prefix of the value).
    As a result of this change, any tuple comparison operation may need to resolve a hash in the NodeStore. This poses two complications:
    1. The tuple logic exists at a much lower level than the node store and can't depend on it without creating a dependency cycle. We get around this with a new ValueStore interface that can store and retrieve variable-length bytestrings by their content hash. NodeStore is the only implementation of this interface, but decoupling the interface from the implementation allows us to not depend on NodeStore's internals when passing it to lower-level code.
    2. Tuple comparison operations can now end up doing disk IO, which means they need a context parameter.

Closed Issues

  • 8886: missing old and new scopes in triggers for projections

Performance

Read Tests MySQL Dolt Multiple
covering_index_scan 1.93 0.63 0.33
groupby_scan 13.7 17.95 1.31
index_join 1.47 2.52 1.71
index_join_scan 1.44 1.5 1.04
index_scan 34.95 30.26 0.87
oltp_point_select 0.18 0.27 1.5
oltp_read_only 3.49 5.28 1.51
select_random_points 0.34 0.6 1.76
select_random_ranges 0.37 0.61 1.65
table_scan 34.95 31.94 0.91
types_table_scan 75.82 110.66 1.46
reads_mean_multiplier 1.28
Write Tests MySQL Dolt Multiple
oltp_delete_insert 8.9 6.32 0.71
oltp_insert 4.1 3.07 0.75
oltp_read_write 8.9 11.45 1.29
oltp_update_index 4.18 3.13 0.75
oltp_update_non_index 4.18 3.07 0.73
oltp_write_only 5.67 6.32 1.11
types_delete_insert 8.28 6.67 0.81
writes_mean_multiplier 0.88
TPC-C TPS Tests MySQL Dolt Multiple
tpcc-scale-factor-1 95.85 39.7 2.41
tpcc_tps_multiplier 2.41
Overall Mean Multiple 1.52