github dolthub/dolt v1.81.5
1.81.5

12 hours ago

Merged PRs

dolt

  • 10405: dolt_commit respects foreign key checks
    When foreign_key_checks is set to 0, dolt_commit should allow staged working states with foreign key violations.
    Fixes issue #5605
  • 10401: go: sqle: Fix CREATE DATABASE ... COLLATE ... when a non-Dolt database is the current connection's database.
  • 10384: Add edit support to rebase.
    This changes adds the ability edit in the middle of a rebase --interactive session.

go-mysql-server

  • 3410: Replace Time.Sub call in TIMESTAMPDIFF with microsecondsDiff
    fixes #10397
    Time.Sub doesn't work for times with a difference greater than 9,223,372,036,854,775,807 (2^63 - 1) nanoseconds, or ~292.47 years. This is because Time.Sub returns a Duration, which is really an int64 representing nanoseconds. MySQL only stores time precision to the microsecond so we actually don't care about the difference in nanoseconds.
    However, there's no easy way to directly expose the number of microseconds or seconds since epoch using the public functions for Time -- this is because seconds since epoch are encoded differently with different epochs depending on whether the time is monotonic or not (Jan 1, 1885 UTC or Jan 1, 0001 UTC).
    Time.Sub uses Time.sec to normalize Time objects to seconds since the Jan 1, 0001 UTC epoch. But Time.sec isn't public so we can't call it ourselves. And Time.Second and Time.Nanosecond only give the second and nanosecond portion of a wall time, not the seconds/nanoseconds since an epoch. However, Time.UnixMicro does give us the microseconds since Unix epoch (January 1, 1970 UTC)...by calling Time.sec and then converting that to Unix time.
    So microsecondsDiff calculates the difference in microseconds between two Time objects, getting their microsecond values by calling Time.UnixMicro on both of them. This isn't the most efficient but it's the best we can do with public functions.
  • 3409: Calculate month and quarter for timestampdiff based on date and clock time values
    fixes #10393
    Refactors logic for year into separate function monthDiff so that it can be reused for month and quarter
  • 3408: Added runner to hooks
    This adds a sql.StatementRunner to all hooks, as they may want to execute logic depending on the hook statement. For example, cascade table deletions could literally just run DROP on the cascading items when dropping a table rather than trying to manually craft nodes which are subject to change over time.
  • 3407: Calculate year for timestampdiff based on date and clock time values
    fixes #10390
    Previous calculation incorrectly assumed every year has 365 days (doesn't account for leap years) and month has 30 days (doesn't account for over half the months). The offset from this wasn't noticeable with smaller time differences but became apparent with larger time differences. This still needs to be fixed for month and quarter (#10393)
  • 3400: Allow pushing filters past Project nodes
    The analyzer tries to improve query plans by moving filter expressions to be directly above the table that they reference. Previously, this had a limitation in that it would treat references to aliases in Project nodes as opaque: if the alias expression references a table, the analysis wouldn't consider the filter to reference that table.
    As a result, it wasn't possible to push a filter into multiple subqueries unless a previous optimization eliminated the Project node.
    This PR enhances the analysis with the following steps:
    • Every alias on a Project node has a unique column id, so we walk the plan tree to build a map from Project column ids to the underlying expressions.
    • When computing which filter expressions can be pushed to which tables, we normalize the filter expressions by replacing GetFields on a Project with the underlying expression.
    • When pushing a Filter above a table or into a subquery, we also replace GetFields on a Project with the underlying expression.
      Reasoning about the safety is tricky here. We should replace a GetField with the underlying expression if and only if we're actually moving the Filter beneath the Project.
      The main concerns would be:
    • If a join plan has two Project nodes without an opaque node (like a SubqueryAlias) between them, then a Filter might only get pushed beneath one Project, but references to both Projects in the filter expression could get unwrapped.
    • If a join plan has a Project node in one child, and a Table in the other, then a filter expression could get pushed to be above the Table even if it references the Project
      In practice I don't think the first concern can happen because it would require that the filter is getting pushed to some nameable-but-not-opaque node between the Projects, which I don't think exists.
      The second concern requires that the project aliases an expression that doesn't reference any tables but can't be replaced with its underlying expression in a filter, and I don't think that's possible either.

vitess

  • 453: Add support for serializing optional table map metadata
    To support @@binlog_row_metadata = 'FULL', we need support for serializing optional table map metadata.
  • 452: Bump google.golang.org/grpc from 1.24.0 to 1.56.3
    Bumps google.golang.org/grpc from 1.24.0 to 1.56.3.
    Release notes

    Sourced from google.golang.org/grpc's releases.

    Release 1.56.3

    Security

    • server: prohibit more than MaxConcurrentStreams handlers from running at once (CVE-2023-44487)

      In addition to this change, applications should ensure they do not leave running tasks behind related to the RPC before returning from method handlers, or should enforce appropriate limits on any such work.

    Release 1.56.2

    • status: To fix a panic, status.FromError now returns an error with codes.Unknown when the error implements the GRPCStatus() method, and calling GRPCStatus() returns nil. (#6374)

    Release 1.56.1

    • client: handle empty address lists correctly in addrConn.updateAddrs

    Release 1.56.0

    New Features

    • client: support channel idleness using WithIdleTimeout dial option (#6263)
      • This feature is currently disabled by default, but will be enabled with a 30 minute default in the future.
    • client: when using pickfirst, keep channel state in TRANSIENT_FAILURE until it becomes READY (gRFC A62) (#6306)
    • xds: Add support for Custom LB Policies (gRFC A52) (#6224)
    • xds: support pick_first Custom LB policy (gRFC A62) (#6314) (#6317)
    • client: add support for pickfirst address shuffling (gRFC A62) (#6311)
    • xds: Add support for String Matcher Header Matcher in RDS (#6313)
    • xds/outlierdetection: Add Channelz Logger to Outlier Detection LB (#6145)
    • xds: enable RLS in xDS by default (#6343)
    • orca: add support for application_utilization field and missing range checks on several metrics setters
    • balancer/weightedroundrobin: add new LB policy for balancing between backends based on their load reports (gRFC A58) (#6241)
    • authz: add conversion of json to RBAC Audit Logging config (#6192)
    • authz: add support for stdout logger (#6230 and #6298)
    • authz: support customizable audit functionality for authorization policy (#6192 #6230 #6298 #6158 #6304 and #6225)

    Bug Fixes

    • orca: fix a race at startup of out-of-band metric subscriptions that would cause the report interval to request 0 (#6245)
    • xds/xdsresource: Fix Outlier Detection Config Handling and correctly set xDS Defaults (#6361)
    • xds/outlierdetection: Fix Outlier Detection Config Handling by setting defaults in ParseConfig() (#6361)

    API Changes

    • orca: allow a ServerMetricsProvider to be passed to the ORCA service and ServerOption (#6223)

    Release 1.55.1

    • status: To fix a panic, status.FromError now returns an error with codes.Unknown when the error implements the GRPCStatus() method, and calling GRPCStatus() returns nil. (#6374)

    Release 1.55.0

    Behavior Changes

    • xds: enable federation support by default (#6151)
    • status: status.Code and status.FromError handle wrapped errors (#6031 and #6150)

    ... (truncated)

    Commits
    • 1055b48 Update version.go to 1.56.3 (#6713)
    • 5efd7bd server: prohibit more than MaxConcurrentStreams handlers from running at once...
    • bd1f038 Upgrade version.go to 1.56.3-dev (#6434)
    • faab873 Update version.go to v1.56.2 (#6432)
    • 6b0b291 status: fix panic when servers return a wrapped error with status OK (#6374) ...
    • ed56401 [PSM interop] Don't fail target if sub-target already failed (#6390) (#6405)
    • cd6a794 Update version.go to v1.56.2-dev (#6387)
    • 5b67e5e Update version.go to v1.56.1 (#6386)
    • d0f5150 client: handle empty address lists correctly in addrConn.updateAddrs (#6354) ...
    • 997c1ea Change version to 1.56.1-dev (#6345)
    • Additional commits viewable in compare view

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.24.0&new-version=1.56.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dolthub/vitess/network/alerts).

Closed Issues

  • 5605: dolt_commit() should respect FOREIGN_KEY_CHECKS=0
  • 10397: TIMESTAMPDIFF calculations are wrong for time differences over ~292 years
  • 10393: TIMESTAMPDIFF calculations for month and quarter are wrong

Don't miss a new dolt release

NewReleases is sending notifications on new releases.