Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[release-17.0] 17.0.6 release notes: ExecuteFetchAsDBA breaking change #15011

Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog/17.0/17.0.6/changelog.md
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Changelog of Vitess v17.0.6
16 changes: 16 additions & 0 deletions changelog/17.0/17.0.6/release_notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Release of Vitess v17.0.6
The entire changelog for this release can be found [here](https://github.com/vitessio/vitess/blob/main/changelog/17.0/17.0.6/changelog.md).

### <a id="breaking-changes"/>Breaking Changes

`vtctldclient ExecuteFetchAsDBA` (and similarly the `vtctl` and `vtctlclient` commands) now reject multi-statement SQL with error.

For example, `vtctldclient ExecuteFetchAsDBA my-tablet "stop replica; change replication source to auto_position=1; start replica` will return an error, without attempting to execute any of these queries.

Previously, `ExecuteFetchAsDBA` silently accepted multi statement SQL. It would (attempt to) execute all of them, but:

- It would only indicate error for the first statement. Errors on 2nd, 3rd, ... statements were silently ignored.
- It would not consume the result sets of the 2nd, 3rd, ... statements. It would then return the used connection to the pool in a dirty state. Any further query that happens to take that connection out of the pool could get unexpected results.
- As another side effect, multi-statement schema changes would cause schema to be reloaded with only the 1st change, leaving the cached schema inconsistent with the underlying database.

`ExecuteFetchAsDBA` does allow a specific use case of multi-statement SQL, which is where all statements are in the form of `CREATE TABLE` or `CREATE VIEW`. This is to support a common pattern of schema initialization.
4 changes: 4 additions & 0 deletions changelog/17.0/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
## v17.0
* **[17.0.6](17.0.6)**
* [Changelog](17.0.6/changelog.md)
* [Release Notes](17.0.6/release_notes.md)

* **[17.0.5](17.0.5)**
* [Changelog](17.0.5/changelog.md)
* [Release Notes](17.0.5/release_notes.md)
Expand Down
Loading