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

MySQL: Added SET TRANSACTION parsing #5781

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

Conversation

Xemptuous
Copy link

Brief summary of the change made

Added various ways of parsing SET TRANSACTION statements in MySQL according to the docs

Are there any other side effects of this change that we should be aware of?

None that I am aware of.

Pull Request checklist

  • Please confirm you have completed any of the necessary steps below.

  • Included test cases to demonstrate any code changes, which may be one or more of the following:

    • .yml rule test cases in test/fixtures/rules/std_rule_cases.
    • .sql/.yml parser test cases in test/fixtures/dialects (note YML files can be auto generated with tox -e generate-fixture-yml).
    • Full autofix test cases in test/fixtures/linter/autofix.
    • Other.
  • Added appropriate documentation for the change.

  • Created GitHub issues for any relevant followup/future enhancements if appropriate.

OneOf("GLOBAL", "SESSION", optional=True),
"TRANSACTION",
Delimited(
AnySetOf(
Copy link
Contributor

Choose a reason for hiding this comment

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

Chaining Delimited and AnySetOf doesn't really work, as Delimited inherits from OneOf - can you remove the AnySetOf here?

Copy link
Author

Choose a reason for hiding this comment

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

My intention was to only allow a max of 2 of these options, as you can't have more than 2 of these options at once. e.g., this won't work:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY, READ WRITE;

I didn't see any args in Delimiter() to allow a max # of items.
Is there a better way to do this?

Copy link
Contributor

Choose a reason for hiding this comment

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

Nah, there's no way to get what you're going for here cleanly. We'd need some kind of DelimitedSet operator, which we don't have at the mo

Copy link
Contributor

Coverage Results ✅

Name    Stmts   Miss  Cover   Missing
-------------------------------------
TOTAL   17554      0   100%

225 files skipped due to complete coverage.

@coveralls
Copy link

Coverage Status

coverage: 99.985%. remained the same
when pulling d74e1df on Xemptuous:mysql/transaction-isolation-level
into 1f651ef on sqlfluff:main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants