• Stable

    aronwk released this 2025-02-07 16:50:52 -06:00 | 3023 commits to main since this release

    Merged PRs

    dolt

    • 8831: Expand ItemAccess::itemWidth to 32 bits
      ItemAccess is a class used to read data out of prolly tree nodes. Because the itemWidth field was limited to 16 bits, reading any value larger than 2^16 bytes would result in silent truncation.
      We don't usually store values this large, although it should be safe to do so.
      This issue was discovered because the new JSON chunker (introduced in https://github.com/dolthub/dolt/pull/7912) always stores embedded strings as a single chunk, so a document containing a string larger than 32KB would result in a node with a single value whose length didn't fit in 16 bits.
      While we were investigating this issue, we created https://github.com/dolthub/dolt/pull/8723 to disable the new JSON chunker in the presence of these long strings. This PR partially reverts that one, resuming the smart chunking of JSON even in the presence of large embedded strings.
    • 8817: Bug fix for encoding extended types in keys
      This PR allows certain Doltgres extended types to be correctly serialized as part of keys

    go-mysql-server

    • 2845: Added external function provider
      This adds an external function provider, currently needed for Doltgres to get function creation working. This is intended to be a temporary measure until a more permanent solution is developed (which may involve modifying Dolt's DatabaseProvider).
    • 2844: Correctly skip skipped assertions in transaction tests
    • 2843: Replace golang.org/x/exp with stdlib
      These experimental packages are now available in the Go standard library.
      1. golang.org/x/exp/slices -> slices (https://go.dev/doc/go1.21#slices)
      2. golang.org/x/exp/maps -> maps (https://go.dev/doc/go1.21#maps)
      3. golang.org/x/exp/constraints -> cmp (https://go.dev/doc/go1.21#cmp)
      4. golang.org/x/exp/rand -> math/rand/v2 (https://go.dev/doc/go1.22#math_rand_v2)
    • 2842: fix panic when comparing system set type against other types
      Comparison between systemSetTypes and other types is still not correct.
      It appears that MySQL actually treats @@sql_mode as just a string.
      This PR only fixes the panic
    • 2839: fix case insensitivity and return type for str_to_date
      This PR fixes an issue with the str_to_date function where we wouldn't match string literals in the date with literals in the format, because we were improperly converting them to lowercase.
      Additionally, this PR has it so the str_to_date function returns a time.Time instead of a string. This gets us closer to MySQL behavior over the server.
      fixes: https://github.com/dolthub/dolt/issues/8807
    • 2833: refactor create procedure and call procedure
      This PR refactors a ton of the stored procedure behavior to more closely match MySQL.
      Changes:
      • properly error when creating procedures/triggers/events in other stored routines
      • allow create procedure statements that reference symbols (tables, views, procedures, etc) that don't exist (yet).
      • remove unnecessary analysis and building work
      • simplify building plan.Call nodes
        Partially addresses: https://github.com/dolthub/dolt/issues/8053

    Closed Issues

    • 8807: Issue with "T" when using str_to_date

    Performance

    Read Tests MySQL Dolt Multiple
    covering_index_scan 1.89 0.65 0.34
    groupby_scan 13.22 18.61 1.41
    index_join 1.47 2.48 1.69
    index_join_scan 1.44 1.47 1.02
    index_scan 34.33 31.37 0.91
    oltp_point_select 0.18 0.27 1.5
    oltp_read_only 3.49 5.37 1.54
    select_random_points 0.33 0.61 1.85
    select_random_ranges 0.37 0.64 1.73
    table_scan 34.33 33.72 0.98
    types_table_scan 75.82 123.28 1.63
    reads_mean_multiplier 1.33
    Write Tests MySQL Dolt Multiple
    oltp_delete_insert 9.06 6.32 0.7
    oltp_insert 4.1 3.13 0.76
    oltp_read_write 9.06 11.65 1.29
    oltp_update_index 4.18 3.19 0.76
    oltp_update_non_index 4.18 3.07 0.73
    oltp_write_only 5.77 6.32 1.1
    types_delete_insert 8.43 6.67 0.79
    writes_mean_multiplier 0.88
    TPC-C TPS Tests MySQL Dolt Multiple
    tpcc-scale-factor-1 96.45 39.6 2.44
    tpcc_tps_multiplier 2.44
    Overall Mean Multiple 1.55
    Downloads