Skip to content

Commit abae04d

Browse files
committed
Allow multiple column names in OnConflictTarget
1 parent f4f8c07 commit abae04d

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sql-parse"
3-
version = "0.26.0"
3+
version = "0.27.0"
44
edition = "2021"
55
authors = ["Jakob Truelsen <[email protected]>"]
66
keywords = [ "mysql", "postgresql", "sql", "lexer", "parser" ]

src/insert_replace.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ impl Spanned for InsertReplaceType {
5858

5959
#[derive(Clone, Debug)]
6060
pub enum OnConflictTarget<'a> {
61-
Column {
62-
name: Identifier<'a>,
61+
Columns {
62+
names: Vec<Identifier<'a>>,
6363
},
6464
OnConstraint {
6565
on_constraint_span: Span,
@@ -71,7 +71,7 @@ pub enum OnConflictTarget<'a> {
7171
impl<'a> OptSpanned for OnConflictTarget<'a> {
7272
fn opt_span(&self) -> Option<Span> {
7373
match self {
74-
OnConflictTarget::Column { name } => Some(name.span()),
74+
OnConflictTarget::Columns { names } => names.opt_span(),
7575
OnConflictTarget::OnConstraint {
7676
on_constraint_span: token,
7777
name,
@@ -426,9 +426,13 @@ pub(crate) fn parse_insert_replace<'a>(
426426
let target = match &parser.token {
427427
Token::LParen => {
428428
parser.consume_token(Token::LParen)?;
429-
let name = parser.consume_plain_identifier()?;
429+
let mut names = Vec::new();
430+
names.push(parser.consume_plain_identifier()?);
431+
while parser.skip_token(Token::Comma).is_some() {
432+
names.push(parser.consume_plain_identifier()?);
433+
}
430434
parser.consume_token(Token::RParen)?;
431-
OnConflictTarget::Column { name }
435+
OnConflictTarget::Columns { names }
432436
}
433437
Token::Ident(_, Keyword::ON) => {
434438
let on_constraint =

0 commit comments

Comments
 (0)