github dolthub/dolt v0.34.6
0.34.6

latest releases: v1.43.0, v1.42.20, v1.42.19...
2 years ago

Merged PRs

dolt

  • 2444: proto: Bump eventsapi proto. Pick up definition for ClientEventType_DUMP.
  • 2438: Export method needed for dolthub fix
  • 2437: parquet reader for import update and replace
    Added parquet reader for import update and import replace only, for import create, schema file is required.
  • 2432: go/libraries/doltcore/table/untyped/xlsx: Fix bug where this spammed internal representation of the imported rows to Stdout.
    These lines were not visible from the CLI because of color, but it still cost
    performance. In an embedded context, these could end up in stdout.
  • 2431: Fix issue with not clearing conflicts correctly
    Added change in conflict_source.go to just return ErrNoConflicts when there are no conflicts rather than printing an empty table.
    Added extra check in resolve.go to call ClearConflicts() when there are zero rows in conflict after resolving table.
    Removed skip statement from bats test that checked for these behaviors.
    Edited case-sensitivity test for selecting dolt_conflicts_test, as that now returns a ErrNoConflicts.
  • 2426: Move Import Write Path to Engine
  • 2403: parquet file type for export
    added parquet file type for export, write only

go-mysql-server

  • 645: Fix Context Creation
  • 641: Expanded index matches, added many index queries
    Besides the obvious addition of a ton of tests (ALL of which make use of indexes, which are enforced by the EXPLAIN statements), this also allows for another scenario to match indexes, although we're still missing a fairly important one. I'll list the scenarios below (assume an index over columns (v1, v2, v3).
    The new one we now match: previously expressions had to match the index prefix, but now it has been expanded to require only the first index expression be matched. Therefore, the filter WHERE v1 = 5 AND v3 = 2 is now used by indexes as we can still filter on v1 = 5 using the same principles that partial indexes use. v3 = 2 may not allow for rows to be skipped on the integrator's side when reading from their internal store, but may allow for them to be skipped when returning to the engine (removing the conversion to a sql.Row from the integrator's implementation which should be a fairly substantial speed increase).
    This has the added consequence that we can properly combine all ranges that make use of a specific index. That is,
    (v1 > 1 AND v3 > 1) OR (v1 < 4 AND v2 < 4)
    
    will now combine the two ranges (separated by OR). Reducing the prefix limitation has greatly increased the index match possibility. Just to note, the returned indexes are sorted by whether they're an exact match, then by how many expressions are a prefix, then by the index size, and lastly by the index name, so you should always get the "best" index for any given set of expressions.
    The above works in the case of a single index existing over the three columns. If (v1, v3, v2) is another index then the above example will match to two different indexes (both being a perfect prefix to an index). There is a way to get around this by taking note of which index has been used previously if multiple indexes share the same columns (or some indexes are subsets/supersets of some other indexes), however this was attempted and abandoned due to the added complexity and time it would take to implement.
    Also built off of this, we cannot match
    (v1 > 1 AND v3 > 1) OR (v2 < 4)
    
    As the (v2 < 4) is missing the first index expression (v1), therefore no index is used here (one is used by MySQL, which was tested to confirm that one should be in this case). Again this would be fixed by taking note of which indexes have already been used, as we only need the prefix to be matched one, and then all other sets of expressions just need to be subsets.
    Either way, we should now match many more queries than previously.
  • 640: Add utilities needed by Dolt import path
  • 638: Add support for inserting empty value tuples
    There was an edge case where if columns were not provided, it required there to be exactly num columns for value tuples, even if there are default values for those columns.
    Added a helper function existsNonZeroValues to avoid this.
  • 637: crossjoins converted to inner join if parent filter has suitable join condition
    Filter predicates can be pushed into Join nodes under certain conditions:
    • Filter is the parent of a CrossJoin
    • Predicate expressions cover the two Join node dependency trees
      Filter predicates have to be divided specially to maintain logical equivalence. Only AND conjugates can be split and checked individually for join candidacy. If multiple conjugate trees match the join expression, a new conjugate AND of the subtrees are used as the join condition.
      Nested CrossJoins should be converted to InnerJoins if the parent filter has suitable join comparisons for each.
  • 636: Fixed small issue with used expressions and partial indexes

vitess

  • 92: parser can detect insert into () values <tuple_list>
    added new case for insert_data
    should be able to correctly parse
    insert into test_tb values ()
    insert into test_tb () values ()
    insert into test_tb values (), (), ...
    insert into test_tb () values (), (), ...
  • 91: added FORMAT keyword
    added format expression keyword

    Closed Issues

    • 2390: Table with new columns not detected as modified
    • 2336: Resolving conflicts without committing does not allow you to continue to modify the working set
    • 2420: Support empty VALUES, column list on INSERT
    • 2381: Dolt dump to parquet
    • 643: pls dont rush the API 1.0 but do think properly and optimize for performance
    • 172: Support for prepared statements

Don't miss a new dolt release

NewReleases is sending notifications on new releases.