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

Use transaction_isolation vs tx_isolation #17845

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

corbantek
Copy link
Contributor

@corbantek corbantek commented Feb 21, 2025

Description

  • tx_isolation was deprectated/deleted in MySQL 8.0
  • transaction_isolation is backwards compatible with MySQL 5.7.20+

Related Issue(s)

Fixes Bug Report: Switch from tx_isolation to transaction_isolation

Checklist

  • "Backport to:" labels have been added if this change should be back-ported to release branches
  • If this change is to be back-ported to previous releases, a justification is included in the PR description
  • Tests were added or are not required
  • Did the new or modified tests pass consistently locally and on CI?
  • Documentation was added or is not required

Deployment Notes

None

Copy link
Contributor

vitess-bot bot commented Feb 21, 2025

Review Checklist

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

General

  • Ensure that the Pull Request has a descriptive title.
  • Ensure there is a link to an issue (except for internal cleanup and flaky test fixes), new features should have an RFC that documents use cases and test cases.

Tests

  • Bug fixes should have at least one unit or end-to-end test, enhancement and new features should have a sufficient number of tests.

Documentation

  • Apply the release notes (needs details) label if users need to know about this change.
  • New features should be documented.
  • There should be some code comments as to why things are implemented the way they are.
  • There should be a comment at the top of each new or modified test to explain what the test does.

New flags

  • Is this flag really necessary?
  • Flag names must be clear and intuitive, use dashes (-), and have a clear help text.

If a workflow is added or modified:

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

Backward compatibility

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

@vitess-bot vitess-bot bot added NeedsBackportReason If backport labels have been applied to a PR, a justification is required NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsIssue A linked issue is missing for this Pull Request NeedsWebsiteDocsUpdate What it says labels Feb 21, 2025
@github-actions github-actions bot added this to the v22.0.0 milestone Feb 21, 2025
@corbantek corbantek marked this pull request as ready for review February 24, 2025 17:08
@mattlord
Copy link
Contributor

Thanks, @corbantek ! There are several other uses, so it would be good to change them all if you don't mind:

go/vt/sqlparser/normalizer_test.go:             in:       "SELECT @@tx_isolation",
go/vt/sqlparser/normalizer_test.go:             expected: "select @@tx_isolation from dual",
go/vt/sqlparser/normalizer_test.go:             in:       "SELECT @@tx_isolation",
go/vt/sqlparser/normalizer_test.go:             sysVar:   map[string]string{"tx_isolation": "'READ-COMMITTED'"},
go/vt/sqlparser/normalizer_test.go:             expected: "select :__vttx_isolation as `@@tx_isolation` from dual",
go/vt/sqlparser/parse_test.go:          input:  "set tx_isolation = 'repeatable read'",
go/vt/sqlparser/parse_test.go:          output: "set @@tx_isolation = 'repeatable read'",
go/vt/sqlparser/parse_test.go:          input:  "set tx_isolation = 'read committed'",
go/vt/sqlparser/parse_test.go:          output: "set @@tx_isolation = 'read committed'",
go/vt/sqlparser/parse_test.go:          input:  "set tx_isolation = 'read uncommitted'",
go/vt/sqlparser/parse_test.go:          output: "set @@tx_isolation = 'read uncommitted'",
go/vt/sqlparser/parse_test.go:          input:  "set tx_isolation = 'serializable'",
go/vt/sqlparser/parse_test.go:          output: "set @@tx_isolation = 'serializable'",
go/vt/sysvars/sysvars.go:               {Name: "tx_isolation", Case: SCUpper},
go/vt/vtgate/executor_set_test.go:              in:  "set tx_isolation = 'read-committed'",
go/vt/vtgate/executor_set_test.go:              in:      "set tx_isolation = 'read-committed'",
go/vt/vtgate/executor_set_test.go:              sysVars: map[string]string{"tx_isolation": "'read-committed'"},
go/vt/vtgate/executor_set_test.go:              result:  returnResult("tx_isolation", "varchar", "read-committed"),
go/vt/vtgate/executor_set_test.go:              sysVar: "tx_isolation",
go/vt/vtgate/executor_set_test.go:              sysVar: "tx_isolation",
java/jdbc/src/main/java/io/vitess/jdbc/VitessConnection.java:          "SHOW VARIABLES WHERE VARIABLE_NAME IN (\'tx_isolation\',\'INNODB_VERSION\', "
java/jdbc/src/main/java/io/vitess/jdbc/VitessConnection.java:        String transactionIsolation = dbVariables.get("tx_isolation");

@mattlord mattlord added Type: Internal Cleanup Component: Cluster management Component: Query Serving and removed NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsWebsiteDocsUpdate What it says NeedsIssue A linked issue is missing for this Pull Request NeedsBackportReason If backport labels have been applied to a PR, a justification is required labels Feb 24, 2025
@corbantek
Copy link
Contributor Author

Thanks, @corbantek ! There are several other uses, so it would be good to change them all if you don't mind:

go/vt/sqlparser/normalizer_test.go:             in:       "SELECT @@tx_isolation",
go/vt/sqlparser/normalizer_test.go:             expected: "select @@tx_isolation from dual",
go/vt/sqlparser/normalizer_test.go:             in:       "SELECT @@tx_isolation",
go/vt/sqlparser/normalizer_test.go:             sysVar:   map[string]string{"tx_isolation": "'READ-COMMITTED'"},
go/vt/sqlparser/normalizer_test.go:             expected: "select :__vttx_isolation as `@@tx_isolation` from dual",
go/vt/sqlparser/parse_test.go:          input:  "set tx_isolation = 'repeatable read'",
go/vt/sqlparser/parse_test.go:          output: "set @@tx_isolation = 'repeatable read'",
go/vt/sqlparser/parse_test.go:          input:  "set tx_isolation = 'read committed'",
go/vt/sqlparser/parse_test.go:          output: "set @@tx_isolation = 'read committed'",
go/vt/sqlparser/parse_test.go:          input:  "set tx_isolation = 'read uncommitted'",
go/vt/sqlparser/parse_test.go:          output: "set @@tx_isolation = 'read uncommitted'",
go/vt/sqlparser/parse_test.go:          input:  "set tx_isolation = 'serializable'",
go/vt/sqlparser/parse_test.go:          output: "set @@tx_isolation = 'serializable'",
go/vt/sysvars/sysvars.go:               {Name: "tx_isolation", Case: SCUpper},
go/vt/vtgate/executor_set_test.go:              in:  "set tx_isolation = 'read-committed'",
go/vt/vtgate/executor_set_test.go:              in:      "set tx_isolation = 'read-committed'",
go/vt/vtgate/executor_set_test.go:              sysVars: map[string]string{"tx_isolation": "'read-committed'"},
go/vt/vtgate/executor_set_test.go:              result:  returnResult("tx_isolation", "varchar", "read-committed"),
go/vt/vtgate/executor_set_test.go:              sysVar: "tx_isolation",
go/vt/vtgate/executor_set_test.go:              sysVar: "tx_isolation",
java/jdbc/src/main/java/io/vitess/jdbc/VitessConnection.java:          "SHOW VARIABLES WHERE VARIABLE_NAME IN (\'tx_isolation\',\'INNODB_VERSION\', "
java/jdbc/src/main/java/io/vitess/jdbc/VitessConnection.java:        String transactionIsolation = dbVariables.get("tx_isolation");

Oh good find. I only searched in the java/jdbc folder and found no other occurances. Let me verify these are the same thing and update!

`SELECT d_next_o_id, d_tax
FROM district%d
WHERE d_w_id = %d
`SELECT d_next_o_id, d_tax
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hmm, my IDE didn't even show these changes going out, let me see if the tests break...

@corbantek
Copy link
Contributor Author

Hmm a bunch of test failures, but its hard (for me to determine the cause...). Going to try to get these tests running locally for me, if not, I'll maybe submit a file change (one at a time) and narrow it down that way...

- tx_isolation was deprectated/deleted in MySQL 8.0
- transaction_isolation is backwards compatible with MySQL 5.7.20+

Signed-off-by: Kyle Johnson <[email protected]>
…solation`"

This reverts commit ed03051.

Signed-off-by: Kyle Johnson <[email protected]>
@corbantek corbantek force-pushed the transaction-isolation branch from ed03051 to 07bdf26 Compare February 27, 2025 20:59
@corbantek
Copy link
Contributor Author

I've run the test locally and its not obvious what test is actually failing. This is my first time debugging vitess unit/system tests and I just shows failed but from the mysql process, so not much help.

Locally I reverted and ran the tests and still got some oddball failures. Nothing is consistent from run to run, so I'm going to just introduce a file at a time to see what breaks...

Copy link

codecov bot commented Feb 27, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 67.47%. Comparing base (b05df12) to head (18926d2).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #17845      +/-   ##
==========================================
+ Coverage   67.45%   67.47%   +0.01%     
==========================================
  Files        1594     1594              
  Lines      259064   259064              
==========================================
+ Hits       174760   174797      +37     
+ Misses      84304    84267      -37     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

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.

Bug Report: Switch from tx_isolation to transaction_isolation
2 participants