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

Snowflake: Complete DELETE FROM grammar #2792

Merged
merged 3 commits into from Mar 6, 2022
Merged

Snowflake: Complete DELETE FROM grammar #2792

merged 3 commits into from Mar 6, 2022

Conversation

jpy-git
Copy link
Contributor

@jpy-git jpy-git commented Mar 5, 2022

Brief summary of the change made

Following on from my work on the Postgres DELETE FROM grammar in #2791 I'm updating the Snowflake statement accordingly.
Fixes alias behavior for multiple table expressions.
Included comprehensive unit tests (verified on snowflake).

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

No

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.

Copy link
Member

@tunetheweb tunetheweb left a comment

Choose a reason for hiding this comment

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

There are a few rules test cases like this:

test_snowflake_delete_cte:
  fail_str: |
    DELETE FROM MYTABLE1
        USING (
            WITH MYCTE AS (SELECT COLUMN2 FROM MYTABLE3 AS MT3)
            SELECT COLUMN3 FROM MYTABLE3
        ) X
    WHERE COLUMN1 = X.COLUMN3
  fix_str: |
    DELETE FROM MYTABLE1
        USING (
            WITH MYCTE AS (SELECT COLUMN2 FROM MYTABLE3)
            SELECT COLUMN3 FROM MYTABLE3
        ) X
    WHERE COLUMN1 = X.COLUMN3
  configs:
    core:
      dialect: snowflake

But this no longer parses as it's missing the AS.

Is the test wrong? If so can you update it? If not can you make the AS optional again?

@jpy-git
Copy link
Contributor Author

jpy-git commented Mar 6, 2022

Good spot, I've tested and verified optional AS is fine. I've added the relevant unit tests 👍

@codecov
Copy link

codecov bot commented Mar 6, 2022

Codecov Report

Merging #2792 (b7d39a1) into main (c19c5b2) will not change coverage.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff            @@
##              main     #2792   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          163       163           
  Lines        12297     12290    -7     
=========================================
- Hits         12297     12290    -7     
Impacted Files Coverage Δ
src/sqlfluff/dialects/dialect_snowflake.py 100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c19c5b2...b7d39a1. Read the comment docs.

@jpy-git jpy-git merged commit 4d63c93 into sqlfluff:main Mar 6, 2022
@jpy-git jpy-git deleted the snowflake_delete_grammar branch March 6, 2022 11:06
@tunetheweb tunetheweb changed the title Snowflake: Complete DELETE FROM grammar Snowflake: Complete DELETE FROM grammar Mar 6, 2022
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

2 participants