RATATOSKRATATOSK
Sign in

Vitess

v23.0.6Storage & Data
Sep 3, 2026

ACTION 2CHECK 1PLAN 1OTHER 35

A maintenance release with correctness fixes and dependency updates. The `/debug/vrlog` removal and newly enforced safety limits affect operators using those paths.

Action needed (2)

  • breakingRecursion-depth limit on the streaming recursive CTE path

    A recursion-depth limit is enforced on the streaming recursive CTE path.

    vitess#20468

  • breakingStored-procedure safety checks on the streaming CALL path

    Stored-procedure safety checks are enforced on the streaming CALL path.

    vitess#20423

Check if affected (1)

  • breakingThe /debug/vrlog endpoint, removed

    Applies if you use /debug/vrlog.

    The /debug/vrlog endpoint no longer exists in this release.

Plan ahead (1)

  • deprecatedThe --vreplication-enable-http-log flag, deprecatedremoval planned in v26

    Applies if you configure --vreplication-enable-http-log.

    The --vreplication-enable-http-log flag is now a deprecated no-op and is scheduled for removal in v26.

All 35 other recorded changesfixes 29 · value changes 4 · constraints 1 · defaults 1

fixes (29)

  • reparentutil: order reparent candidates by GTID dominance for a consistent sort (#20728) [#20757](https://github.com/vitessio/vitess/pull/20757)
  • mysql/json: fix MarshalTo discarding accumulated output for nested blob and bit values (#20625) [#20655](https://github.com/vitessio/vitess/pull/20655)
  • VDiff: stop pre-seeding a bogus category in TableDiffPhaseTimings (#20713) [#20716](https://github.com/vitessio/vitess/pull/20716)
  • Properly handle vstream filter predicates with multi-col PKs (#20858) [#20864](https://github.com/vitessio/vitess/pull/20864)
  • vstreamer: don't drop a SET column's 64th member (#20450) [#20455](https://github.com/vitessio/vitess/pull/20455)
  • VReplication: reconcile in-memory workflow state metric from the persisted row (#20442) [#20500](https://github.com/vitessio/vitess/pull/20500)
  • binlog: escape JSON diff paths when generating diff SQL (#20461) [#20528](https://github.com/vitessio/vitess/pull/20528)
  • workflow: escape tenant id and column name in getTenantClause (#20413) [#20532](https://github.com/vitessio/vitess/pull/20532)
  • VReplication: Avoid sending mixed batch of row changes to bulk insert or bulk delete in vplayer batch mode (#20565) [#20587](https://github.com/vitessio/vitess/pull/20587)
  • VReplication: only build a bulk-delete plan for insertNormal table plans (#20889) [#20920](https://github.com/vitessio/vitess/pull/20920)
  • VReplication: don't count throttled time in the vplayer stall deadline (#20925) [#20949](https://github.com/vitessio/vitess/pull/20949)
  • Preserve query hints in field/impossible queries (#20366) [#20398](https://github.com/vitessio/vitess/pull/20398)
  • vtgate: copy bindVars per source in streaming Concatenate (#20436) [#20490](https://github.com/vitessio/vitess/pull/20490)
  • evalengine: don't append a NUL byte to TO_BASE64 output at exact 57 byte multiples (#20474) [#20502](https://github.com/vitessio/vitess/pull/20502)
  • mysql: encode zero DATE/DATETIME/TIMESTAMP values as zero-length in the binary protocol (#20460) [#20506](https://github.com/vitessio/vitess/pull/20506)
  • vtgate: copy execute options per scatter call for FetchLastInsertId (#20439) [#20523](https://github.com/vitessio/vitess/pull/20523)
  • vtgate: do not autocommit per-chunk in streaming insert-select (#20497) [#20525](https://github.com/vitessio/vitess/pull/20525)
  • evalengine: round DOUBLE ties half to even in ROUND() like MySQL (#20476) [#20530](https://github.com/vitessio/vitess/pull/20530)
  • grpcvtgateconn: stop mutating shared dial options slice (#20580) [#20583](https://github.com/vitessio/vitess/pull/20583)
  • Fix ExecuteMulti timeout context reuse (#20445) [#20606](https://github.com/vitessio/vitess/pull/20606)
  • evalengine: stop RPAD growing its operand in place (#20697) [#20707](https://github.com/vitessio/vitess/pull/20707)
  • evalengine: stop the binary bitwise operators writing over and marking their result (#20696) [#20709](https://github.com/vitessio/vitess/pull/20709)
  • evalengine: collapse the VM stack when a later LOCATE or SUBSTRING operand is NULL (#20645) [#20714](https://github.com/vitessio/vitess/pull/20714)
  • vttablet: roll back canceled schema reload on a non-cancelable context (#20385) [#20400](https://github.com/vitessio/vitess/pull/20400)
  • vreplication: prevent vttablet panic on malformed RowChange images (#20377) [#20408](https://github.com/vitessio/vitess/pull/20408)
  • txthrottler: don't panic on target_replication_lag_sec of 1 (#20554) [#20558](https://github.com/vitessio/vitess/pull/20558)
  • vttablet: perform an initial heartbeat read when opening the heartbeat reader (#20868) [#20905](https://github.com/vitessio/vitess/pull/20905)
  • reparentutil: keep nil-alias tablets out of candidate ordering (#20762) [#20767](https://github.com/vitessio/vitess/pull/20767)
  • evalengine: use MySQL 1-based ordinal for ENUM in numeric context (#20454) [#20458](https://github.com/vitessio/vitess/pull/20458)

value changes (4)

  • Upgrade the Golang version to go1.25.12 [#20519](https://github.com/vitessio/vitess/pull/20519)
  • Upgrade the Golang version to go1.25.13 [#20835](https://github.com/vitessio/vitess/pull/20835)
  • go/mysql: streaming errors no longer surface as connection loss (#20383) [#20540](https://github.com/vitessio/vitess/pull/20540)
  • go/mysql: send ERR instead of teardown after an OK carrying SERVER_MORE_RESULTS_EXISTS (#20563) [#20666](https://github.com/vitessio/vitess/pull/20666)

constraints (1)

  • vtgate: support prepared statements with a leading WITH clause (#20665) [#20705](https://github.com/vitessio/vitess/pull/20705)

defaults (1)

  • mysqlctl: force TZ=UTC for mysqlbinlog during point-in-time restore (#20463) [#20508](https://github.com/vitessio/vitess/pull/20508)
Add Vitess to your stack

A weekly email arrives when a release needs action. Like the breaking changes in this release.

Add to stack