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

store transaction isolation level in upper case #12099

Merged
merged 3 commits into from
Jan 17, 2023

Conversation

harshit-gangal
Copy link
Member

Description

This is a follow-up PR from #11987 for comment #11987 (comment). The only possible solution was to store it as upper case as how MySQL returns the value for the transaction_isolation system variable.

Related Issue(s)

Checklist

  • "Backport to:" labels have been added if this change should be back-ported
  • Tests were added or are not required
  • Documentation was added or is not required

Deployment Notes

@vitess-bot
Copy link
Contributor

vitess-bot bot commented Jan 16, 2023

Review Checklist

Hello reviewers! 👋 Please follow this checklist when reviewing this Pull Request.

General

  • Ensure that the Pull Request has a descriptive title.
  • If this is a change that users need to know about, please apply the release notes (needs details) label so that merging is blocked unless the summary release notes document is included.
  • If a test is added or modified, there should be a documentation on top of the test to explain what the expected behavior is what the test does.

If a new flag is being introduced:

  • Is it really necessary to add this flag?
  • Flag names should be clear and intuitive (as far as possible)
  • Help text should be descriptive.
  • Flag names should use dashes (-) as word separators rather than underscores (_).

If a workflow is added or modified:

  • Each item in Jobs should be named in order to mark it as required.
  • If the workflow should be required, the maintainer team should be notified.

Bug fixes

  • There should be at least one unit or end-to-end test.
  • The Pull Request description should include a link to an issue that describes the bug.

Non-trivial changes

  • There should be some code comments as to why things are implemented the way they are.

New/Existing features

  • Should be documented, either by modifying the existing documentation or creating new documentation.
  • New features should have a link to a feature request issue or an RFC that documents the use cases, corner cases and test cases.

Backward compatibility

  • Protobuf changes should be wire-compatible.
  • Changes to _vt tables and RPCs need to be backward compatible.
  • vtctl command output order should be stable and awk-able.
  • RPC changes should be compatible with vitess-operator
  • If a flag is removed, then it should also be removed from VTop, if used there.

@vitess-bot vitess-bot bot added NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsWebsiteDocsUpdate What it says labels Jan 16, 2023
@harshit-gangal harshit-gangal removed NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsWebsiteDocsUpdate What it says labels Jan 16, 2023
utils.AssertContains(t, conn, "select @@transaction_isolation, connection_id()", `REPEATABLE-READ`)

// setting to different value.
utils.Exec(t, conn, "set @@transaction_isolation = 'read-committed'")
utils.AssertMatches(t, conn, "select @@transaction_isolation", `[[VARCHAR("read-committed")]]`)
utils.Exec(t, conn, "set @@transaction_isolation = 'READ-COMMITTED'")
Copy link
Collaborator

Choose a reason for hiding this comment

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

we want to store them with upper case and return them with uppercase, but we want to allow for both cases for input, right?

Copy link
Member Author

Choose a reason for hiding this comment

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

currently, we do not change the case when set <system_variable> is used and store it as-is.
This is only for the case when set transaction isolation level <value> is provided we have the option as we convert the statement to set @@session.transaction_isolation = <value>

Do you suggest that I make that change as well, to store the user-provided value in upper case for set <system_varable>?

Copy link
Member

Choose a reason for hiding this comment

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

Do we use the stored value for printing things, not the constants defined in sql.y?

Copy link
Member Author

Choose a reason for hiding this comment

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

Changed as discussed offline.

Copy link
Member

@GuptaManan100 GuptaManan100 left a comment

Choose a reason for hiding this comment

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

Apart from the ongoing discussion, everything else LGTM!

type StorageCase int

const (
SCSame StorageCase = iota
Copy link
Collaborator

Choose a reason for hiding this comment

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

nitpick: Couldn't we skip the SC and just use sysvars.AlwaysUpper,sysvars.AlwaysLower and sysvars.FromUser? really not important, if you want to merge, go ahead :)

@harshit-gangal harshit-gangal merged commit c88b5a8 into vitessio:main Jan 17, 2023
@harshit-gangal harshit-gangal deleted the clean-up branch January 17, 2023 08:49
dbussink pushed a commit that referenced this pull request Jan 30, 2023
* add support for transaction isolation level and make it vitess aware setting (#11673)

* feat: add support for tx_isolation and make it vitess aware setting

Signed-off-by: Harshit Gangal <[email protected]>

* feat: rewrite tx_isolation and transaction_isolation in select query

Signed-off-by: Harshit Gangal <[email protected]>

* feat: added support for set session transaction isolation level <value>

Signed-off-by: Harshit Gangal <[email protected]>

* feat: add nextTxScope for transaction variables

Signed-off-by: Harshit Gangal <[email protected]>

* refactor: use constants over magic literals

Signed-off-by: Harshit Gangal <[email protected]>

* kept old support for next transaction scope transaction system variables

Signed-off-by: Harshit Gangal <[email protected]>

* test: added e2e test

Signed-off-by: Harshit Gangal <[email protected]>

Signed-off-by: Harshit Gangal <[email protected]>

* Fix: return allowed transaction isolation level value on select query (#11804)

* test: added e2e test

Signed-off-by: Harshit Gangal <[email protected]>

* test: added unit test

Signed-off-by: Harshit Gangal <[email protected]>

* fix: transaction_isolation to return connection default when not set

Signed-off-by: Harshit Gangal <[email protected]>

* test: addressed review comments

Signed-off-by: Harshit Gangal <[email protected]>

Signed-off-by: Harshit Gangal <[email protected]>

* feat: support transaction isolation through reserved connection (#11987)

Signed-off-by: Harshit Gangal <[email protected]>

Signed-off-by: Harshit Gangal <[email protected]>

* store transaction isolation level in upper case (#12099)

* store transaction isolation level in upper case

Signed-off-by: Harshit Gangal <[email protected]>

* store system variables in the case as provided in StorageCase type

Signed-off-by: Harshit Gangal <[email protected]>

Signed-off-by: Harshit Gangal <[email protected]>

Signed-off-by: Harshit Gangal <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants