github dolthub/dolt v1.79.0
1.79.0

8 hours ago

Merged PRs

dolt

  • 10188: Added JWT support for metrics endpoint authorization.
  • 10184: removed doltgres index implementation
    This change removes doltgres-specific index logic from Dolt and fixes various bugs in index lookup and type conversion logic that were preventing doltgres from using the unified index logic in the first place.
    See: dolthub/doltgresql#2093
  • 10159: Add adapters.TableAdapter to handle dolt_status and other table conversions for integrators (a.k.a. Doltgres)
    A recent change to cherry-pick tests required dolt_status to display its staged column as a byte type to overcome MySQL's wire protocol being unable to distinguish Boolean types. This had the side affect of breaking Doltgres. This fix adds Dolt system table adapters for integrators (i.e. Doltgres). adapters.TableAdapter allows for tables in general to be wrapped or overwritten with different implementations.
    • Add adapters.TableAdapter to allow integrator's to overwrite or wrap existing table implementations.
    • Add adapters.DoltTableAdapterRegistry to automatically integrate said table adapters for Dolt system table through an interface available to integrators.
    • Remove explicit SUPERUSER privilege check in dolt_purge_dropped_databases as this should be handled by integrators.
    • Remove authentication handling in dolt_backup for Doltgres; now handled by dolthub/doltgresql#2068.
  • 10097: #10030: --filter contribution for dolt diff
    Author @codeaucafe
    Add --filter option to dolt diff, enabling filtering by specific change types and fixing issues from the earlier stalled PR (#3499).

    Users reviewing large diffs often need to focus on specific change types - deletes may need extra scrutiny while inserts are routine. With diffs spanning thousands of rows across multiple tables, grep isn't enough since updates show
    both additions and deletions.

    dolt diff --filter=added      # new tables/rows
    dolt diff --filter=modified   # schema changes, row updates
    dolt diff --filter=renamed    # renamed tables
    dolt diff --filter=dropped    # dropped tables, deleted rows
    dolt diff --filter=removed    # alias for dropped
    dolt diff HEAD~1 --filter=dropped -r sql
    
    Close #10030
    Fix #1430
  • 10030: dolt/dolthub#1430: Add --filter option for dolt diff
    There was no action on the original #3499 for issue #1430; the PR was closed ~3 years ago. This PR fixes the open PR comments and updates the implementation details a bit for the RowWriting of filtered rows

go-mysql-server

  • 3336: Return a helpful error message when attempting to use a table function where a non-table function is expected.
    Previously, we would return a "function not found" error, which was confusing and misleading.
    Fixes #10187
  • 3334: Index lookup type conversion issues
    This PR addresses type conversion semantics during key lookups. Some type conversions were insufficient for Doltgres, and some were simply incorrect, notably the behavior when a value being converted was out of range, which could produce incorrect results.
    Other fixes addressed:
    • New ExecBuilderNode interface to allow Doltgres to correctly use the custom builder overrides when building row iters
    • Corrected behavior for IN and NOT IN used in index lookups for doltgres
      Tests for some of these changes only exist in Doltgres, will address before merging.
      See: dolthub/doltgresql#2093
  • 3333: fix overflow indexed table access
    There's a bug where filtering by a key that overflows the index column type results in incorrect lookups.
    When converting the key type to the column type, we ignore in OutOfRange results, and use the max/min of the corresponding type. As a result, we perform lookups using the wrong key.
    Changes:
    • sql.Convert() returns if the conversion result is InRange, Overflows, or Underflows.
    • Reduce number of potential ranges by ignoring impossible ones.
    • Fixes HashIn to handle overflowing keys.
    • Added tests for out of range key conversions.
  • 3332: Fix create view error message
    This fixes: #10177
  • 3331: Introduce notion of conditional equivalence sets in FDS for optimizing outer joins.
    Fixes #9520
    In Functional Dependency Analysis, equivalence sets are sets of columns which have been determined to always be equal to each other. During join planning, we walk the join tree, read the join filters, and use these filters to compute equivalence sets which can inform the analysis.
    However, we currently only look at filters on inner joins, because filters on outer joins do not unconditionally imply equivalence.
    For example, in the following join query:
    SELECT * FROM table_one LEFT JOIN table_two ON table_one.one = table_two.two
    It cannot be said that table_one.one and table_two.two have equal values in the output. Any of the following are valid rows in the final output:
    table_one.one table_two.two
    1 1
    1 NULL
    NULL NULL
    In order to record this filter and include it in FDS, we need to tweak the definition of equivalence sets slightly.
    This PR adds conditional equivalence sets, which consist of two column sets: conditional columns and equivalent columns. A conditional equivalence set should be interpreted as: "IF at least one of the columns in conditional is not null, THEN all of the columns in equivalent are equal." This matches the behavior of left joins.
    We could implement regular equivalence sets as conditional equivalence sets with an empty conditional, but this PR keeps them separate to avoid complicating existing logic.
    It's worth noting that we deliberately don't check if the columns are non-null at the time that the equivalence set is created. This is deliberate, because when equivalence sets are inherited by parent nodes, this can change for outer joins, and when evaluating whether a join can be implemented as a lookup, we analyze the child node using filters and equivalence sets from the parent, but with the child's nullness information.
    Thanks to Angela, who worked on the investigation with me, wrote the original version of this feature (dolthub/go-mysql-server#3288), and wrote the plan test for this PR.

vitess

  • 445: /go/vt/sqlparser: support float8
  • 444: go/mysql: server.go: Add a callback on Handler, ConnectionAuthenticated, which is called immediately after the connection is authenticated.
    This allows a server implementation to know the authenticated user without waiting for the first command interactions, such as ComQuery or ComInitDB.

Closed Issues

  • 10174: Does Dolt Support Minio Storage for Remotes and Backups?
  • 10059: Incorrect collation returned by case expression
  • 10187: Using a table function where a non-table function is expected results in confusing "function not found" error
  • 10157: Unexpected ANTI JOIN Result
  • 1430: dolt diff should support --filter option
  • 10136: DOLT_BACKUP Restore Requires Existing Database Context and Service Restart to Recognize New Database

Note on Incompatibility

  • Dolt 1.79.0 has support for new sql-server config parameters. Due to the strict yaml parser used for server configuration, a 1.79.0 config will not work with older versions of Dolt.

Don't miss a new dolt release

NewReleases is sending notifications on new releases.