Skip to content

Commit

Permalink
common: Make sure + - * / % binary operators work the same in all the…
Browse files Browse the repository at this point in the history
… dialects
  • Loading branch information
lustefaniak committed Oct 26, 2023
1 parent 2f437db commit 3a04074
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 7 deletions.
6 changes: 1 addition & 5 deletions src/dialect/bigquery.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ impl Dialect for BigQueryDialect {
}

fn is_identifier_part(&self, ch: char) -> bool {
ch.is_ascii_lowercase()
|| ch.is_ascii_uppercase()
|| ch.is_ascii_digit()
|| ch == '_'
|| ch == '-'
ch.is_ascii_lowercase() || ch.is_ascii_uppercase() || ch.is_ascii_digit() || ch == '_'
}
}
2 changes: 0 additions & 2 deletions tests/sqlparser_bigquery.rs
Original file line number Diff line number Diff line change
Expand Up @@ -615,8 +615,6 @@ fn parse_table_identifiers() {
assert!(bigquery().parse_sql_statements(&sql).is_err());
}

test_table_ident("da-sh-es", None, vec![Ident::new("da-sh-es")]);

test_table_ident("`spa ce`", None, vec![Ident::with_quote('`', "spa ce")]);

test_table_ident(
Expand Down
58 changes: 58 additions & 0 deletions tests/sqlparser_common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7744,3 +7744,61 @@ fn parse_create_type() {
fn parse_create_table_collate() {
pg_and_generic().verified_stmt("CREATE TABLE tbl (foo INT, bar TEXT COLLATE \"de_DE\")");
}

#[test]
fn parse_binary_operators_without_whitespace() {
// x + y
all_dialects().one_statement_parses_to(
"SELECT field+1000 FROM tbl1",
"SELECT field + 1000 FROM tbl1",
);

all_dialects().one_statement_parses_to(
"SELECT tbl1.field+tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
"SELECT tbl1.field + tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
);

// x - y
all_dialects().one_statement_parses_to(
"SELECT field-1000 FROM tbl1",
"SELECT field - 1000 FROM tbl1",
);

all_dialects().one_statement_parses_to(
"SELECT tbl1.field-tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
"SELECT tbl1.field - tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
);

// x * y
all_dialects().one_statement_parses_to(
"SELECT field*1000 FROM tbl1",
"SELECT field * 1000 FROM tbl1",
);

all_dialects().one_statement_parses_to(
"SELECT tbl1.field*tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
"SELECT tbl1.field * tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
);

// x / y
all_dialects().one_statement_parses_to(
"SELECT field/1000 FROM tbl1",
"SELECT field / 1000 FROM tbl1",
);

all_dialects().one_statement_parses_to(
"SELECT tbl1.field/tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
"SELECT tbl1.field / tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
);

// x % y
all_dialects().one_statement_parses_to(
"SELECT field%1000 FROM tbl1",
"SELECT field % 1000 FROM tbl1",
);

all_dialects().one_statement_parses_to(
"SELECT tbl1.field%tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
"SELECT tbl1.field % tbl2.field FROM tbl1 JOIN tbl2 ON tbl1.id = tbl2.entity_id",
);
}

0 comments on commit 3a04074

Please sign in to comment.