GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat: add support for snowflake merge statements by davidjgoss · Pull Request #1887 · JSQLParser/JSqlParser

Conversation

@davidjgoss

@davidjgoss davidjgoss commented Nov 8, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

This PR changes the parser to account for some Snowflake-specific aspects of the MERGE statement, namely:

  • Tolerance for the ON condition not being wrapped in parentheses
    • fixes Snowflake MERGE statement does not require parentheses around the ON statement #1315
    • fixes [FEATURE] MERGE ON without () #1880
  • Support for an optional AND predicate after the MATCHED/NOT MATCHED part

See Snowflake's docs on MERGE: https://docs.snowflake.com/en/sql-reference/sql/merge - the new tests are derived from that doc.


With the ON logic, I did the simplest parser change which for existing cases (i.e. with parens), will now result in the onCondition being a Parenthesis containing the expression, where before it would have just been the expression (e.g. EqualsTo or whatever) itself. This feels innocuous to me, but if we consider this a breaking change and would prefer to avoid it, I can refactor to ensure full backwards compatibility, perhaps by adding a choice point in the parser and retaining the presence/absence of original parens as a boolean.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
davidjgoss added 3 commits November 8, 2023 14:50
@davidjgoss
feat: support snowflake merge statements
0ae84af
Adds support for the ON clause of a MERGE statement to be without
enclosing parens, as is the convention in Snowflake.
@davidjgoss
feat: add support for and predicate in merge update
10457b6
@davidjgoss
feat: add support for and predicate in merge insert
93b3930
@manticore-projects
manticore-projects merged commit 36b806d into JSQLParser:master Nov 10, 2023
@davidjgoss
davidjgoss deleted the feat/snowflake-merge branch November 10, 2023 06:31
@davidjgoss

davidjgoss commented Nov 13, 2023

Copy link
Copy Markdown
Contributor Author

Thanks for merging @manticore-projects! Do you know when this might be released?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@manticore-projects

manticore-projects commented Nov 13, 2023

Copy link
Copy Markdown
Contributor

This depends fully on @wumpz who is under serious time constraints.
We could aim for an EoY release though.

davidjgoss reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

[FEATURE] MERGE ON without () Snowflake MERGE statement does not require parentheses around the ON statement

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@davidjgoss @manticore-projects
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.