mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-07-08 01:15:00 +00:00
Move tests from parser.rs to appropriate parse_XX tests (#845)
* Move tests from parser.rs to appropriate parse_XX tests * move to postgres tests * move more tests
This commit is contained in:
parent
784a19138f
commit
00d071286b
4 changed files with 79 additions and 119 deletions
|
@ -2427,7 +2427,27 @@ fn parse_delimited_identifiers() {
|
|||
|
||||
pg().verified_stmt(r#"CREATE TABLE "foo" ("bar" "int")"#);
|
||||
pg().verified_stmt(r#"ALTER TABLE foo ADD CONSTRAINT "bar" PRIMARY KEY (baz)"#);
|
||||
//TODO verified_stmt(r#"UPDATE foo SET "bar" = 5"#);
|
||||
pg().verified_stmt(r#"UPDATE foo SET "bar" = 5"#);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_update_has_keyword() {
|
||||
pg().one_statement_parses_to(
|
||||
r#"UPDATE test SET name=$1,
|
||||
value=$2,
|
||||
where=$3,
|
||||
create=$4,
|
||||
is_default=$5,
|
||||
classification=$6,
|
||||
sort=$7
|
||||
WHERE id=$8"#,
|
||||
r#"UPDATE test SET name = $1, value = $2, where = $3, create = $4, is_default = $5, classification = $6, sort = $7 WHERE id = $8"#
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_update_in_with_subquery() {
|
||||
pg_and_generic().verified_stmt(r#"WITH "result" AS (UPDATE "Hero" SET "name" = 'Captain America', "number_of_movies" = "number_of_movies" + 1 WHERE "secret_identity" = 'Sam Wilson' RETURNING "id", "name", "secret_identity", "number_of_movies") SELECT * FROM "result""#);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -2789,3 +2809,55 @@ fn parse_incorrect_dollar_quoted_string() {
|
|||
let sql = "SELECT $$$";
|
||||
assert!(pg().parse_sql_statements(sql).is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_select_group_by_grouping_sets() {
|
||||
let select = pg_and_generic().verified_only_select(
|
||||
"SELECT brand, size, sum(sales) FROM items_sold GROUP BY size, GROUPING SETS ((brand), (size), ())"
|
||||
);
|
||||
assert_eq!(
|
||||
vec![
|
||||
Expr::Identifier(Ident::new("size")),
|
||||
Expr::GroupingSets(vec![
|
||||
vec![Expr::Identifier(Ident::new("brand"))],
|
||||
vec![Expr::Identifier(Ident::new("size"))],
|
||||
vec![],
|
||||
]),
|
||||
],
|
||||
select.group_by
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_select_group_by_rollup() {
|
||||
let select = pg_and_generic().verified_only_select(
|
||||
"SELECT brand, size, sum(sales) FROM items_sold GROUP BY size, ROLLUP (brand, size)",
|
||||
);
|
||||
assert_eq!(
|
||||
vec![
|
||||
Expr::Identifier(Ident::new("size")),
|
||||
Expr::Rollup(vec![
|
||||
vec![Expr::Identifier(Ident::new("brand"))],
|
||||
vec![Expr::Identifier(Ident::new("size"))],
|
||||
]),
|
||||
],
|
||||
select.group_by
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_select_group_by_cube() {
|
||||
let select = pg_and_generic().verified_only_select(
|
||||
"SELECT brand, size, sum(sales) FROM items_sold GROUP BY size, CUBE (brand, size)",
|
||||
);
|
||||
assert_eq!(
|
||||
vec![
|
||||
Expr::Identifier(Ident::new("size")),
|
||||
Expr::Cube(vec![
|
||||
vec![Expr::Identifier(Ident::new("brand"))],
|
||||
vec![Expr::Identifier(Ident::new("size"))],
|
||||
]),
|
||||
],
|
||||
select.group_by
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue