Skip to content

1.42.6

Compare
Choose a tag to compare
@github-actions github-actions released this 30 Jul 00:22

Merged PRs

dolt

  • 8166: [kvexec] Fix panic in non-covering strict lookup
    I missed a test case in nonCovLaxSecondaryLookupGen. I tried to add more tests surrounding the specific panic query here: dolthub/go-mysql-server#2607.
    Also rename the rowexec to kvexec.
  • 8139: Feature: Log binlog events to disk
    Major changes:
    • Moved binlogging initialization code from sqlengine to server, so that bin logging only happens when in sql-server mode.
    • binlogProducer now sends events to the new logManager type that writes binlog events to files on disk. binlogStreamer now reads events from those logs and streams them to replicas (instead of receiving events directly from binlogProducer).
    • DoltBinlogPrimaryController now validates that the missing GTIDs from a replica are available in the binlog files and sends an error if the primary doesn't have enough binlog data on disk to get a replica in sync.

go-mysql-server

  • 2606: [memo] assume self-join stats cardinality continuity
    Self-join stats estimation is particularly expensive because all of the buckets exactly overlap. If the index is unique, the cardinality distribution will not change. If the index is non-unique, the cardinality will expand proportional to rowCount/distinctCount.
    before
    BenchmarkOltpJoinScan-12    	    1766	    694524 ns/op	  462834 B/op	    8240 allocs/op
    after
    BenchmarkOltpJoinScan-12    	    2460	    481166 ns/op	  193569 B/op	    7129 allocs/op
    
    sysbench perf here: #8159

vitess

  • 359: fix detection of multi-statements in ComPrepare
    Currently, preparing multi-statements is not supported; so we can't prepare a query like select ?; select ?;.
    However, the check for this condition just looked for any characters after the first ;, which meant that queries like select ?; \n would incorrectly throw an error.
    This was made apparent using the Prisma ORM, which runs the query:
    SELECT TABLE_NAME AS view_name, VIEW_DEFINITION AS view_sql
    FROM INFORMATION_SCHEMA.VIEWS
    WHERE TABLE_SCHEMA = ?;
    The above query ends in a newline character.
    The fix is to use SplitStatementToPieces(), which trims these white space characters, and check if there's exactly one piece; this was taken from the vitessio repo: https://github.com/vitessio/vitess/blob/main/go/mysql/conn.go#L1204
    fixes #8157
  • 358: Feature: parser support for PURGE BINARY LOGS syntax
    https://dev.mysql.com/doc/refman/8.4/en/purge-binary-logs.html
  • 357: Bug fix: Send an error response when the server fails to handle COM_BINLOG_DUMP_GTID
    A MySQL primary needs to be able to send back an error response when handling the COM_BINLOG_DUMP_GTID command. Previously, when the integrator returned an error, it was logged in the primary server logs, but it was not being sent back to the replica who sent the command. This change causes an error packet to be sent to the replica, containing the details of the error the integrator returned.
    This change is difficult to test in isolation, but I have tests in dolt that will exercise this codepath.

Closed Issues

  • 8157: Error when using Prisma ORM: "Error: unknown error: can not prepare multiple statements"
  • 6816: subquery insert into not null column throws error