Fix error around breaking of multistatements#6808
Merged
deepthi merged 5 commits intovitessio:masterfrom Oct 2, 2020
Merged
Conversation
When a multistatement query is received, any errors should abort the execution of the remaining queries. The `execQuery` and `handleNextCommand` were returning an error, but not actually using the error value - just checking if it was nil or not. We need to be able to know on the outside of `execQuery` if an error occured and if it was an error we need to close the connection for or if it was a simple execution error. Signed-off-by: Andres Taylor <andres@planetscale.com>
Collaborator
Author
|
I extracted the actual bug fixing into it's own PR. I'm thinking we might want to back-port it. |
Signed-off-by: Andres Taylor <andres@planetscale.com>
demmer
reviewed
Oct 1, 2020
go/mysql/conn.go
Outdated
| } | ||
|
|
||
| func (c *Conn) execQuery(query string, handler Handler, more bool) error { | ||
| type execResult byte |
Member
There was a problem hiding this comment.
Style nit -- I'd move this type declaration up to the top of the file since execSuccess and connErr are referred to above.
deepthi
reviewed
Oct 2, 2020
Collaborator
deepthi
left a comment
There was a problem hiding this comment.
The fix looks fine. Do you plan to resolve the TODOs before this is merged?
Collaborator
|
unit test failed again (on retry). You might want to fix mysql/server_test to reset the stats/counts to resolve the failure. |
Signed-off-by: Andres Taylor <andres@planetscale.com>
Both when preparing and when executing prepared statements, Vitess was dropping the connection on most errors. This change makes it so Vitess instead returns an error packet but keeps the connection open. Signed-off-by: Andres Taylor <andres@planetscale.com>
Collaborator
Author
Done ✔️ |
Collaborator
|
All the failing tests on the last commit are known to be flaky. Opened #6812 to disable the failing TER test. |
systay
added a commit
to planetscale/vitess
that referenced
this pull request
Oct 6, 2020
When a multistatement query is received, any errors should abort the execution of the remaining queries. The `execQuery` and `handleNextCommand` were returning an error, but not actually using the error value - just checking if it was nil or not. We need to be able to know on the outside of `execQuery` if an error occured and if it was an error we need to close the connection for or if it was a simple execution error. This is a squashed backport of vitessio#6808 Signed-off-by: Andres Taylor <andres@planetscale.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a multi-statement query is received, any errors should abort the execution of the remaining queries.
The
execQueryandhandleNextCommandwere returning an error, but not actually using the error value - just checking if it was nil or not.We need to be able to know on the outside of
execQueryif an error occured and if it was an error we need to close the connection for or if it was a simple execution error.Fixes #6747