Merged
Conversation
When PassthroughDMLs is set, then all update or delete queries are returned as PlanPassDML regardless of query type.
Add a flag to the queryserver config that both configures the planbuilder to use PlanPassDML for all plans and allows those plans to execute even in statement based replication.
sougou
reviewed
Jan 22, 2018
| switch qre.plan.PlanID { | ||
| case planbuilder.PlanPassDML: | ||
| if qre.tsv.qe.binlogFormat != connpool.BinlogFormatRow { | ||
| if !qre.tsv.qe.passthroughDMLs.Get() && (qre.tsv.qe.binlogFormat != connpool.BinlogFormatRow) { |
Contributor
There was a problem hiding this comment.
As discussed, vttablet should disallow any pass-through query for SBR, and we should add a separate override for vtqueryserver.
It may actually be better to fail early on this: QueryEngine calls VerifyMode on Open. If the flag is on, and we are not RBR, we can return an error there.
Member
Author
There was a problem hiding this comment.
I added the separate option.
Failing early seems like a nice to have but not necessary optimization.
Since PlanPassDML executions are fundamentally unsafe in SBR mode, they should not be allowed unless the user explicitly wants to enable them, so add a separate flag which is not exposed in a command line flag (but will be in vtqueryserver) to allow the unsafe statements when in SBR mode.
Contributor
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.
Add a vttablet flag
-queryserver-config-passthrough-dmlsthat disables rewriting for update/delete DMLs and passes through queries straight through to mysql in both SBR and RBR mode.Rather than use a new plan type, this just reuses the existing
PlanPassDMLand disables the check which rejects those clauses in SBR mode.