github dolthub/dolt v2.7.1
2.7.1

2 hours ago

Merged PRs

dolt

  • 12354: Fix merge-preview schema order when rekeying the ancestor
    Preserve the (base, ours, theirs) order returned by applySchemaFallbacks when binding and returning conflict schemas. This lets ConflictBaseSchema rekey the actual ancestor and prevents shifted values from dolt_preview_merge_conflicts after both branches change the primary key.
    Existing normal/prepared regressions fail before and pass after; the original schema-layout regressions and the full Dolt engine suite also pass against GMS main.
    Follow-up to #12333 and #12334. Addresses the inherited Dolt integration failures observed on GMS #4117.
  • 12348: Preserve inline indexes when writing temporary tables
    The first write to a temporary table could erase its inline indexes because the row editor still used the pre-index schema. Refresh the schema and write session after creating an index, with MySQL-only regressions for CTAS, subsequent writes, and UNIQUE enforcement.

go-mysql-server

  • 4117: Report actual column collations in SHOW FULL COLUMNS
    SHOW FULL COLUMNS reports the effective column collation instead of the default, including for ENUM and SET. Binary SQL types and binary-charset ENUM/SET retain NULL.
    Adds one compact shared regression covering 21 columns, inherited and alternate collations, views, aliases, and filtering. Collation, query, view, and modify-column engine suites pass; metadata was also checked against MySQL 8.4.11 and a locally built Dolt CLI.
    Fixes #12344
  • 4109: Resolve inherited defaults in indexed CREATE TABLE ... SELECT
    Resolve inherited stored defaults before analyzing CREATE TABLE ... SELECT with inline indexes, avoiding plan is not resolved while preserving the defaults. Adds a MySQL-specific regression verified against MySQL 8.4.
  • 4100: Preserve index lookups during join replanning
    Preserve IndexedTableAccess nodes during join replanning so indexed-only tables retain their lookup. This prevents a panic in DELETE queries combining IN, NOT EXISTS, and ORDER BY ... LIMIT.
    Fixes #12235
  • 4099: sql/expression/function: unwrap out-of-band blob arguments at use
    Fix #12263
  • 4098: sql: check generated SET target by table, not name
    Fix #12238
  • 4094: Support unary bitwise complement
    Support unary ~ for numeric and binary operands, preserving full-width masks in mixed signed/unsigned bit operations.
    Related to #12284.

vitess

  • 505: sqlparser: left-recurse comparisons so chains group left
    Fix #12345
    Close #504
    Block dolthub/go-mysql-server#4118
  • 502: fix(mysql): honor GTID payloads regardless of request flags
    Debezium's MySQL binlog client sends COM_BINLOG_DUMP_GTID with flags 0 and a valid binary SID block. The parser currently discards that checkpoint unless BINLOG_THROUGH_GTID is set; Dolt consequently replays historical transactions, which can fail Debezium when old DDL is applied to its current schema snapshot. See dolthub/dolt#12241 for the wire-level reproduction and MySQL history.
    This backports vitessio/vitess#17580:
    • Read the GTID payload independently of the flag, before handling nonblocking EOF.
    • Set BINLOG_THROUGH_GTID on outgoing requests.
    • Port the SID and request-flag test changes using this fork's existing test conventions.
      The fork requires two adaptations: retain NewMysql56GTIDSetFromSIDBlock instead of upstream's historical textual decoder, and omit upstream's filename-dependent flag branch because this sender always uses an empty filename. The backport also bounds-checks the declared payload length and adds parser regressions covering flags 0, 2, and 4, zero-length/empty SID payloads, nonblocking requests, and malformed/truncated payloads.
      Validation on Apple Silicon macOS:
    • Passed go test ./go/mysql -run '^(TestComBinlogDump.*|TestSIDs|TestMysql56GTIDSet.*)$' -count=1 with Go 1.27.3.
    • Built Dolt 2.6.1 with this patch and passed the issue's isolated wire-protocol reproduction for both flags 0 and 4; each excluded the checkpoint and delivered a new row. Stock 2.6.1 fails by replaying transaction 1.
    • The complete go test ./go/mysql -count=1 run failed TestServer, TestClearTextServer, and TestDialogServer because VT_MYSQL_ROOT is unset and mysqld is unavailable. Native Linux and full Debezium startup were not tested.
      Dolt will need to update its Vitess dependency after this is merged.

Closed Issues

  • 12344: SHOW FULL COLUMNS reports the default collation for an explicitly collated column
  • 12345: Chained comparisons fail to parse unless the first comparison is parenthesized

Don't miss a new dolt release

NewReleases is sending notifications on new releases.