Skip to content

Commit 3825b7f

Browse files
authored
fix: ON UPDATE with two many blank formatted incorrectly (#46)
1 parent 3b6e8e1 commit 3825b7f

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

src/formatter.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,11 @@ impl<'a> Formatter<'a> {
137137

138138
fn format_with_spaces(&self, token: &Token<'_>, query: &mut String) {
139139
let value = if token.kind == TokenKind::Reserved {
140-
self.format_reserved_word(token.value)
140+
&self.equalize_whitespace(&self.format_reserved_word(token.value))
141141
} else {
142-
Cow::Borrowed(token.value)
142+
token.value
143143
};
144-
query.push_str(&value);
144+
query.push_str(value);
145145
query.push(' ');
146146
}
147147

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1621,7 +1621,7 @@ mod tests {
16211621
#[test]
16221622
fn it_recognizes_on_update_clause() {
16231623
let input = indoc!(
1624-
"CREATE TABLE a (b integer REFERENCES c (id) ON UPDATE RESTRICT, other integer);"
1624+
"CREATE TABLE a (b integer REFERENCES c (id) ON UPDATE RESTRICT, other integer);"
16251625
);
16261626
let options = FormatOptions::default();
16271627
let expected = indoc!(

src/tokenizer.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -968,7 +968,8 @@ fn get_plain_reserved_two_token(input: &str) -> IResult<&str, Token<'_>> {
968968
terminated(tag("ON UPDATE"), end_of_word),
969969
))(&uc_input);
970970
if let Ok((_, token)) = result {
971-
let input_end_pos = token.len();
971+
let final_word = token.split(' ').last().unwrap();
972+
let input_end_pos = input.to_ascii_uppercase().find(final_word).unwrap() + final_word.len();
972973
let (token, input) = input.split_at(input_end_pos);
973974
Ok((
974975
input,

0 commit comments

Comments
 (0)