github dolthub/dolt v1.7.3
1.7.3

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

Merged PRs

dolt

  • 6289: Update Dolt's binary size in README
    We went from 68M to 103M because of the new collations.
  • 6283: Remove temporary workaround for loopback bug in GMS
    Resolves: #6239
  • 6280: Add ignore support to dolt_cherry_pick procedure.
    This updates the dolt_cherry_pick procedure to properly work with ignored tables.
  • 6277: adds test for reset handling ignored tables
    Adds tests for dolt reset and dolt_reset() to check their handling of ignored tables.
  • 6276: Use correct local branch name when setting upstream in dolt_checkout
    I found an issue in dolt_checkout that occurs in the narrow case where both the -b and --track flags are provided, in order to create a new branch that tracks an upstream branch with a different name.
    In that case, we fail to set the upstream correctly because we accidentally look for a local branch to mark using the remote branch name, instead of the local branch name.
    I added a regression test.
  • 6271: Revert transaction-unsafe implementation of SessionStateAdapter::SetCWBHeadRef
    This recently added implementation of SetCWBHeadRef was a designed to fix an issue when evalutating call dolt_branch('-m', $ACTIVE_BRANCH, $NEW_BRANCH) (which would cause a panic) by changing the active branch on the SQL session to match the new branch. However, this implementation has some problems.
    When operating on the DB from a SQL-context, we use transactions to ensure that changes are applied atomically. However currently, renaming branches doesn't use transactions because they touch multiple branches at once and we can't really model that as a transaction. This becomes a problem when mixed with DoltSession operations, which do use transactions.
    My original implementation attempted to work around this by calling commitTransaction before and after setting the new current working branch. This would allow SwitchActiveBranch to see the newly created branch. However, this is not a correct use of manual transaction management and is not generally safe.
    No matter the solution to the original bug, doing manual transaction management in SetCWBHeadRef is not a good idea. It's been reverted, and the call to SetCWBHeadRef within RenameBranch has been removed.
    The last commit in this PR is an attempt to implement the branch switch within RenameBranch itself. This also uses manual transaction management, but this is isolated to a single execution path. I welcome feedback on whether there's a better way to do this.
  • 6270: Remove alter_statement column from dolt_schema_diff results.
    Remove alter_statement column from dolt_schema_diff results.
    This change is a result of feedback about the dolt_schema_diff output: dolthub/docs#1575 (comment)
    We're removing the alter_statement column, and requiring the user to get this information from dolt_patch.
    The migrated command dolt diff is now doing this: we identify the changed tables using dolt_schema_diff, then get the alter statements from dolt_patch.
    This update also resolves #6265 , which is a feature request to return empty to_*/from_* columns in cases when the table does not exist at the to or from revision.

go-mysql-server

  • 1864: No parallelism for children of ordered distinct
    We permitted parallelism into an OrderedDistinct node, which is a specialized Distinct node that expects results sorted on a specific index key. This change prevents parallelizing children of OrderedDistinct.
  • 1861: chore: remove refs to deprecated io/ioutil
  • 1860: chore: unnecessary use of fmt.Sprintf
  • 1859: chore: use copy(to, from) instead of a loop
  • 1856: Support IPV6 loopback address for looking up user credentials
    Map "::1" and "127.0.0.1" to localhost when looking up users.
    There don't appear to be tests for this code path. TBD if I'll add some.
    Related to: #6239
  • 1854: Prevent loops in stored procedures from returning multiple result sets
    The query in #6230 was causing rows from many result sets to be returned from a stored procedure. We already have code that limits BEGIN/END blocks to return the last SELECTed result set; this PR extends that logic to loop constructs as well.
    Fixes: #6230
    Dolt CI Checks: #6245
  • 1853: chore: slice replace loop
  • 1852: Alter stored procedure execution to deal with statements that commit transactions
    This change adds checks to begin a new transaction whenever there isn't one during stored procedure execution. This lets things like dolt_commit() execute correctly in stored procedures.
  • 1851: memo.Literal has different type than lookup
    This panics on dolt:
    CREATE TABLE tab2(pk INTEGER PRIMARY KEY, col0 INTEGER, col1 FLOAT, col2 TEXT, col3 INTEGER, col4 FLOAT, col5 TEXT);
    CREATE UNIQUE INDEX idx_tab2_0 ON tab2 (col1 DESC,col4 DESC);
    CREATE INDEX idx_tab2_1 ON tab2 (col1,col0);
    CREATE INDEX idx_tab2_2 ON tab2 (col4,col0);
    CREATE INDEX idx_tab2_3 ON tab2 (col3 DESC);
    INSERT INTO tab2 VALUES(0,344,171.98,'nwowg',833,149.54,'wjiif');
    INSERT INTO tab2 VALUES(1,353,589.18,'femmh',44,621.85,'qedct');
    SELECT pk FROM tab2 WHERE ((((((col0 IN (SELECT col3 FROM tab2 WHERE ((col1 = 672.71)) AND col4 IN (SELECT col1 FROM tab2 WHERE ((col4 > 169.88 OR col0 > 939 AND ((col3 > 578))))) AND col0 >= 377) AND col4 >= 817.87 AND (col4 > 597.59)) OR col4 >= 434.59 AND ((col4 < 158.43)))))) AND col0 < 303) OR ((col0 > 549)) AND (col4 BETWEEN 816.92 AND 983.96) OR (col3 BETWEEN 421 AND 96);
    The PutField function expects the value to match the tuple descriptor exactly, and will panic if it does not.
    The section of code in memo that creates a new range uses the type from the expression, but in other places it uses the index column expression types.
    An alternative solution would be to have some logic in dolt to convert to the corresponding sql.Type based off the val.Enc
  • 1850: Name resolution correctness tests
    This fixes many of the remaining correctness tests for TestSimpleQueries, TestsJoinOps, TestJoinPlanning, TestColumnAliases, TestDerivedTableOuterScopeVisibility, TestAmbiguousColumnResolution, TestReadOnlyVersionedQueries with the new name resolution strategy.
    Many of the query plans are slightly different but mostly equivalent. Join rearrangements and un-nesting in particular are better after this change, because I needed the transform logic work for both. There are a variety of other bugs the slight plan differences exposed that are fixed now.
    This does not fix every set of enginetests, there is still a lot to do. But I'm locking in compatibility for most of the core tests to prevent backsliding.
    The next follow-up is probably replacing the old name resolution. I will need to figure out if triggers, procs, prepared statements need any sort of special treatment.

Closed Issues

  • 6239: dolt sql-server --host 0.0.0.0 authentication behavior differs from mysql
  • 6265: Include added and dropped tables in dolt_schema_diff table function

Latency

Read Tests MySQL Dolt Multiple
covering_index_scan 1.93 2.71 1.4
groupby_scan 12.3 16.41 1.3
index_join 1.18 4.33 3.7
index_join_scan 1.14 2.18 1.9
index_scan 30.26 55.82 1.8
oltp_point_select 0.15 0.46 3.1
oltp_read_only 2.91 8.13 2.8
select_random_points 0.3 0.77 2.6
select_random_ranges 0.35 1.1 3.1
table_scan 30.81 56.84 1.8
types_table_scan 70.55 161.51 2.3
reads_mean_multiplier 2.3
Write Tests MySQL Dolt Multiple
bulk_insert 0.001 0.001 1.0
oltp_delete_insert 5.09 6.09 1.2
oltp_insert 2.48 2.97 1.2
oltp_read_write 6.55 15.55 2.4
oltp_update_index 2.57 3.07 1.2
oltp_update_non_index 2.71 3.02 1.1
oltp_write_only 3.75 7.7 2.1
types_delete_insert 5.18 6.67 1.3
writes_mean_multiplier 1.4
Overall Mean Multiple 2.0

Don't miss a new dolt release

NewReleases is sending notifications on new releases.