Files
email-tracker/external/duckdb/extension/autocomplete/grammar/statements/merge_into.gram
2025-10-24 19:21:19 -05:00

22 lines
1.0 KiB
Plaintext

MergeIntoStatement <- WithClause? 'MERGE' 'INTO' TargetOptAlias MergeIntoUsingClause MergeMatch* ReturningClause?
MergeIntoUsingClause <- 'USING' TableRef JoinQualifier
MergeMatch <- MatchedClause / NotMatchedClause
MatchedClause <- 'WHEN' 'MATCHED' AndExpression? 'THEN' MatchedClauseAction
MatchedClauseAction <- UpdateMatchClause / DeleteMatchClause / InsertMatchClause / DoNothingMatchClause / ErrorMatchClause
UpdateMatchClause <- 'UPDATE' (UpdateMatchSetClause / ByNameOrPosition?)
DeleteMatchClause <- 'DELETE'
InsertMatchClause <- 'INSERT' (InsertValuesList / DefaultValues / InsertByNameOrPosition)?
InsertByNameOrPosition <- ByNameOrPosition? '*'?
InsertValuesList <- InsertColumnList? 'VALUES' Parens(List(Expression))
DoNothingMatchClause <- 'DO' 'NOTHING'
ErrorMatchClause <- 'ERROR' Expression?
UpdateMatchSetClause <- 'SET' (UpdateSetClause / '*')
AndExpression <- 'AND' Expression
NotMatchedClause <- 'WHEN' 'NOT' 'MATCHED' BySourceOrTarget? AndExpression? 'THEN' MatchedClauseAction
BySourceOrTarget <- 'BY' ('SOURCE' / 'TARGET')