github dolthub/dolt v1.76.6
1.76.6

8 hours ago

Merged PRs

dolt

  • 10055: Respect sql-server Dockerfile .yaml and .json support
    Reset CONFIG_PROVIDED after applying /etc/dolt/doltcfg.d/config.json so subsequent YAML lookup runs.
  • 10048: go/store/nbs: Fix race in chunk journal initialization.
    With dolt gc, the store journal can be deleted and recreated as part of normal operation. When we bootstrap a new chunk journal, we always write 1MB of 0 bytes and a root hash record, reflecting the current root hash, at offset 0.
    ChunkJournal takes an advisory exclusive lock when it opens the database data directory. It will operate in a read-only mode when it cannot take this lock.
    Due to a bug, even when operating in read-only mode, the chunk journal bootstrap code would run if the store was requested to open the chunk journal but there were was no existing chunk journal on disk. This meant there was a race condition if a Dolt process opened the store in read-only mode while another process was going to GC the store. If the read-only store tried to open the journal file and did not find it, it could end up overwriting the beginning of the contents of a just-created journal file.
    This PR adds two fixes:
    1. When we create a journal file, we must be its actual creator. O_EXCL will
      cause os.Open() to return an error if this syscall did not create the file,
      which means we are not in charge and we need to bail.
    2. When running in read-only mode, we should never create the journal file. We
      can try to read its contents if we learn of its existence, but if there is
      no file and we have been requested to open it, we should return an error.
  • 10043: #10038: Fix the SELECT * vs LIKE no result mismatch with case-insensitive collation
    Fixes #10038
    • Fix wildcard SELECT * being EOF as a result of NextValueRow() iterator object already being consumed by queueRows().
    • Remove NextValueRow() for prollyKeylessIndexIter because it conflicts with goroutine function queueRows() for Next().
  • 10029: Pass tree.Node as pointer

go-mysql-server

  • 3299: Prevent panic when using table functions in joins and subqueries
    This prevents the panic seen in #10051
    The join planner assumed that every instance of TableAlias wrapped an implementer of sql.TableNode.
    Only tables that support lookups implement sql.TableNode. Table functions that are not backed by an actual table and don't support lookups do not implement this interface.
    This panic is happening when testing to see whether we can optimize a join into a RightSemiJoin. The table needs to support lookups for this optimization to be allowed. So if it doesn't implement sql.TableNode, it suffices to skip this join plan, since we wouldn't be able to produce it away.
    This does not fix the broader issue of #10051, which is that it is currently impossible for table functions that accept non-literal arguments to support efficient lookups. I'm not currently aware of any use cases where this is required, but I'll keep the issue open to track it in case we need to support that in the future.
  • 3297: #10050: Fix JSON conversion for dolt when using TextStorage
    Fix #10050
    • Extended JsonType.Convert to unwrap sql.StringWrapper values before decoding.
    • Add convertJSONValue to handle string and []byte like inputs.
  • 3293: Don't make string unless in Debug mode
    Even though this isn't getting logged anywhere, generating the DebugString for CostedIndexScans is costly enough to show in the profiler.
    Also specify capacity for rows in Result.
    benchmarks:
    #10039 (comment)
  • 3292: Updating auth interfaces to pass connection
    Allows implementations of PlainTextStorage, CachedStorage, and HashStorage to receive the connection, so that they can check connection properties, such as SSL/TLS.
    Depends on: https://github.com/dolthub/vitess/pull/443/files
    Related to: #10008
  • 3291: Add support for configuring a user's TLS connection requirements
    Adds support for creating users with TLS connection requirements, and displaying those settings via the mysql.user system table.
    MySQL documentation on CREATE USER SSL/TLS options
    Example:
    CREATE USER user1@localhost REQUIRES X509;
    Related to #10008
  • 3279: #9887: Add BINLOG and mariadb-binlog support
    Fixes #9887
    • Add BinlogConsumer and BinlogConsumerCatalog interfaces.
    • Add BINLOG statement that decodes base64 encoded event strings and runs them on dolt's binlog replica applier using BinlogConsumer interface.
    • Add support for mariadb-binlog utility with new format support for sql_mode, collation_database, collation_connection, and collation_server, which can use bitmasks and IDs tied to system variable values.
    • Add new format int support for lc_time_names; this remains a no-op.
    • Add authentication handler for Binlog statement and new privilege types binlog_admin, replication_applier.
    • Other system variables have been added as no-ops for mariadb-binlog compatibility: skip_parallel_replication, gtid_domain_id, gtid_seq_no, check_constraint_checks, sql_if_exists, system_versioning_insert_history, and insert_id.
    • Add separate MariaDB-specific system variables array and a new getter that pulls from both system variable arrays.

vitess

  • 443: Updating auth interfaces to pass connection
    Enables implementations to have access to the connection. Needed as part of mutual TLS auth work so that implementations can validate connection properties. Also matches the interface definitions in the official vitess repo.
  • 439: #9887: Fix empty executable comments and add BINLOG support and mariadb executable comments
    Fixes #9887
    • Add TypeName() to binlogEvent objects for error message creation on the frontend, i.e. go-mysql-server.
    • Add ERBase64DecodeError = 1575, ERNoFormatDescriptionEventBeforeBinlogStatement = 1609, and EROnlyFDAndRBREventsAllowedInBinlogStatement = 1730 for Binlog statements error handling.
    • Add Binlog statement parser support.
    • Add mariadb executable comment support and fix handling of empty comments, i.e. /*!*/ and /*M!*/.

Closed Issues

  • 10050: TEXT doesn't convert properly to JSON
  • 10053: docker sql-server automatic config file usage is busted
  • 10038: Inconsistent Behavior: COUNT Returns 1 but SELECT Returns Empty Set with Same LIKE Condition
  • 10015: Feature: cluster replication: When the server is in standby mode, the read_only system variable should always be true.

Don't miss a new dolt release

NewReleases is sending notifications on new releases.