xitep opened a new pull request, #2101:
URL: https://github.com/apache/datafusion-sqlparser-rs/pull/2101

   Oracle supports small extensions to the standard MERGE syntax (that I'd need 
to support.) In particular:
   
   * `... WHEN MATCHED ... UPDATE ... ***[WHERE <expr>] [DELETE WHERE 
<expr>]***`
   * `... WHEN NOT MATCHED ... INSERT ... ***[WHERE <expr>]***`
   
   [Here's the 
documentation](https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/MERGE.html)
 for reference.
   
   ### Quoted column names
   
   Additionally, Oracle also allows quoted names in `MERGE INTO a.b ... INSERT 
(a.b.col1, a.b.col2) ...` (or event `... INSERT (b.col1, b.col2) ...` with the 
same meaning as `... INSERT (col1, col2)` as long as `a.b` denotes the target 
table of the merge.
   
   For the sake of compatibility, this draft PR makes a trade-off: the parser 
validates that "a.b." corresponds to the target table, and strips away the 
prefix in order to keep 
[`MergeInsertExpr::columns`](https://docs.rs/sqlparser/latest/sqlparser/ast/struct.MergeInsertExpr.html#structfield.columns)
 a `Vec<Ident>`. While preserving semantics, the implication is that such a 
parsed statements doesn't render back in the exact same form, though.
   
   Not doing the validation and stripping, we'd probably need to end up with a 
`Vec<QualifiedName>`.  I would be glad to hear your opinion how to move 
forward. Personally, I'd be fine with the `Vec<QualifiedName>` allowing me to 
re-produce the statement as originally written.
   
   ### Note
   1. This draft builds on top of #2100 as it made my work easier; it's only 
the latest commit that is relevant. I will continue rebasing / adopting this PR 
accordingly.
   2. I have moved the MERGE parsing code to a dedicated sub-module (and make 
`Parser::merge_parse_clauses` private.)
   3. I'd appreciate any early feedback to be able to steer this into a desired 
direction.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to