Skip to content

Commit 9297ffb

Browse files
committed
Move tests using standard SQL from the postgresql-specific file
1 parent d1b088b commit 9297ffb

File tree

2 files changed

+76
-76
lines changed

2 files changed

+76
-76
lines changed

tests/sqlparser_generic.rs

+76
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,58 @@ use sqlparser::sqlast::*;
77
use sqlparser::sqlparser::*;
88
use sqlparser::sqltokenizer::*;
99

10+
#[test]
11+
fn parse_insert_values() {
12+
let sql = "INSERT INTO customer VALUES(1, 2, 3)";
13+
check_one(sql, "customer", vec![]);
14+
15+
let sql = "INSERT INTO public.customer VALUES(1, 2, 3)";
16+
check_one(sql, "public.customer", vec![]);
17+
18+
let sql = "INSERT INTO db.public.customer VALUES(1, 2, 3)";
19+
check_one(sql, "db.public.customer", vec![]);
20+
21+
let sql = "INSERT INTO public.customer (id, name, active) VALUES(1, 2, 3)";
22+
check_one(
23+
sql,
24+
"public.customer",
25+
vec!["id".to_string(), "name".to_string(), "active".to_string()],
26+
);
27+
28+
fn check_one(sql: &str, expected_table_name: &str, expected_columns: Vec<String>) {
29+
match verified_stmt(sql) {
30+
SQLStatement::SQLInsert {
31+
table_name,
32+
columns,
33+
values,
34+
..
35+
} => {
36+
assert_eq!(table_name.to_string(), expected_table_name);
37+
assert_eq!(columns, expected_columns);
38+
assert_eq!(
39+
vec![vec![
40+
ASTNode::SQLValue(Value::Long(1)),
41+
ASTNode::SQLValue(Value::Long(2)),
42+
ASTNode::SQLValue(Value::Long(3))
43+
]],
44+
values
45+
);
46+
}
47+
_ => unreachable!(),
48+
}
49+
}
50+
}
51+
52+
#[test]
53+
fn parse_insert_invalid() {
54+
let sql = "INSERT public.customer (id, name, active) VALUES (1, 2, 3)";
55+
let res = parse_sql_statements(sql);
56+
assert_eq!(
57+
ParserError::ParserError("Expected INTO, found: public".to_string()),
58+
res.unwrap_err()
59+
);
60+
}
61+
1062
#[test]
1163
fn parse_delete_statement() {
1264
let sql = "DELETE FROM \"table\"";
@@ -542,6 +594,30 @@ fn parse_create_external_table() {
542594
}
543595
}
544596

597+
#[test]
598+
fn parse_alter_table_constraint_primary_key() {
599+
let sql = "ALTER TABLE bazaar.address \
600+
ADD CONSTRAINT address_pkey PRIMARY KEY (address_id)";
601+
match verified_stmt(sql) {
602+
SQLStatement::SQLAlterTable { name, .. } => {
603+
assert_eq!(name.to_string(), "bazaar.address");
604+
}
605+
_ => unreachable!(),
606+
}
607+
}
608+
609+
#[test]
610+
fn parse_alter_table_constraint_foreign_key() {
611+
let sql = "ALTER TABLE public.customer \
612+
ADD CONSTRAINT customer_address_id_fkey FOREIGN KEY (address_id) REFERENCES public.address(address_id)";
613+
match verified_stmt(sql) {
614+
SQLStatement::SQLAlterTable { name, .. } => {
615+
assert_eq!(name.to_string(), "public.customer");
616+
}
617+
_ => unreachable!(),
618+
}
619+
}
620+
545621
#[test]
546622
fn parse_scalar_function_in_projection() {
547623
let sql = "SELECT sqrt(id) FROM foo";

tests/sqlparser_postgres.rs

-76
Original file line numberDiff line numberDiff line change
@@ -20,48 +20,6 @@ fn test_prev_index() {
2020
assert_eq!(parser.prev_token(), None);
2121
}
2222

23-
#[test]
24-
fn parse_insert_values() {
25-
let sql = "INSERT INTO customer VALUES(1, 2, 3)";
26-
check_one(sql, "customer", vec![]);
27-
28-
let sql = "INSERT INTO public.customer VALUES(1, 2, 3)";
29-
check_one(sql, "public.customer", vec![]);
30-
31-
let sql = "INSERT INTO db.public.customer VALUES(1, 2, 3)";
32-
check_one(sql, "db.public.customer", vec![]);
33-
34-
let sql = "INSERT INTO public.customer (id, name, active) VALUES(1, 2, 3)";
35-
check_one(
36-
sql,
37-
"public.customer",
38-
vec!["id".to_string(), "name".to_string(), "active".to_string()],
39-
);
40-
41-
fn check_one(sql: &str, expected_table_name: &str, expected_columns: Vec<String>) {
42-
match verified_stmt(sql) {
43-
SQLStatement::SQLInsert {
44-
table_name,
45-
columns,
46-
values,
47-
..
48-
} => {
49-
assert_eq!(table_name.to_string(), expected_table_name);
50-
assert_eq!(columns, expected_columns);
51-
assert_eq!(
52-
vec![vec![
53-
ASTNode::SQLValue(Value::Long(1)),
54-
ASTNode::SQLValue(Value::Long(2)),
55-
ASTNode::SQLValue(Value::Long(3))
56-
]],
57-
values
58-
);
59-
}
60-
_ => unreachable!(),
61-
}
62-
}
63-
}
64-
6523
#[test]
6624
fn parse_invalid_table_name() {
6725
let mut parser = parser("db.public..customer");
@@ -76,16 +34,6 @@ fn parse_no_table_name() {
7634
assert!(ast.is_err());
7735
}
7836

79-
#[test]
80-
fn parse_insert_invalid() {
81-
let sql = "INSERT public.customer (id, name, active) VALUES (1, 2, 3)";
82-
let res = parse_sql_statements(sql);
83-
assert_eq!(
84-
ParserError::ParserError("Expected INTO, found: public".to_string()),
85-
res.unwrap_err()
86-
);
87-
}
88-
8937
#[test]
9038
fn parse_create_table_with_defaults() {
9139
let sql = "CREATE TABLE public.customer (
@@ -234,30 +182,6 @@ fn parse_create_table_with_inherit() {
234182
}
235183
}
236184

237-
#[test]
238-
fn parse_alter_table_constraint_primary_key() {
239-
let sql = "ALTER TABLE bazaar.address \
240-
ADD CONSTRAINT address_pkey PRIMARY KEY (address_id)";
241-
match verified_stmt(sql) {
242-
SQLStatement::SQLAlterTable { name, .. } => {
243-
assert_eq!(name.to_string(), "bazaar.address");
244-
}
245-
_ => unreachable!(),
246-
}
247-
}
248-
249-
#[test]
250-
fn parse_alter_table_constraint_foreign_key() {
251-
let sql = "ALTER TABLE public.customer \
252-
ADD CONSTRAINT customer_address_id_fkey FOREIGN KEY (address_id) REFERENCES public.address(address_id)";
253-
match verified_stmt(sql) {
254-
SQLStatement::SQLAlterTable { name, .. } => {
255-
assert_eq!(name.to_string(), "public.customer");
256-
}
257-
_ => unreachable!(),
258-
}
259-
}
260-
261185
#[test]
262186
fn parse_copy_example() {
263187
let sql = r#"COPY public.actor (actor_id, first_name, last_name, last_update, value) FROM stdin;

0 commit comments

Comments
 (0)