Skip to content

Commit

Permalink
add on update for my sql (#522)
Browse files Browse the repository at this point in the history
  • Loading branch information
frolovdev committed Jun 13, 2022
1 parent ca15a4e commit 99697d2
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/parser.rs
Expand Up @@ -2254,6 +2254,12 @@ impl<'a> Parser<'a> {
Ok(Some(ColumnOption::DialectSpecific(vec![
Token::make_keyword("AUTOINCREMENT"),
])))
} else if self.parse_keywords(&[Keyword::ON, Keyword::UPDATE])
&& dialect_of!(self is MySqlDialect)
{
Ok(Some(ColumnOption::DialectSpecific(vec![
Token::make_keyword("ON UPDATE"),
])))
} else {
Ok(None)
}
Expand Down
25 changes: 25 additions & 0 deletions tests/sqlparser_mysql.rs
Expand Up @@ -834,6 +834,31 @@ fn parse_kill() {
);
}

#[test]
fn parse_table_colum_option_on_update() {
let sql1 = "CREATE TABLE foo (`modification_time` DATETIME ON UPDATE)";
match mysql().verified_stmt(sql1) {
Statement::CreateTable { name, columns, .. } => {
assert_eq!(name.to_string(), "foo");
assert_eq!(
vec![ColumnDef {
name: Ident::with_quote('`', "modification_time"),
data_type: DataType::Datetime,
collation: None,
options: vec![ColumnOptionDef {
name: None,
option: ColumnOption::DialectSpecific(vec![Token::make_keyword(
"ON UPDATE"
)]),
},],
}],
columns
);
}
_ => unreachable!(),
}
}

fn mysql() -> TestedDialects {
TestedDialects {
dialects: vec![Box::new(MySqlDialect {})],
Expand Down

0 comments on commit 99697d2

Please sign in to comment.