Skip to content

Commit f1f9313

Browse files
committed
Test coverage
1 parent 7b809a3 commit f1f9313

1 file changed

Lines changed: 54 additions & 2 deletions

File tree

tests/sqlparser_oracle.rs

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ use pretty_assertions::assert_eq;
2222

2323
use sqlparser::{
2424
ast::{
25-
BinaryOperator, Expr, Ident, Insert, TableAliasWithoutColumns, ObjectName, QuoteDelimitedString,
26-
Statement, TableObject, Value, ValueWithSpan,
25+
BinaryOperator, Expr, Ident, Insert, ObjectName, Query, QuoteDelimitedString, SetExpr,
26+
Statement, TableAliasWithoutColumns, TableObject, Value, ValueWithSpan,
2727
},
2828
dialect::OracleDialect,
2929
parser::ParserError,
@@ -476,3 +476,55 @@ fn test_insert_with_table_alias() {
476476
);
477477
verify_table_name_with_alias(&stmt, "foo_t", "t");
478478
}
479+
480+
#[test]
481+
fn test_insert_without_alias() {
482+
let oracle_dialect = oracle();
483+
484+
// check DEFAULT
485+
let sql = "INSERT INTO t default SELECT 'a' FROM dual";
486+
assert_eq!(
487+
oracle_dialect.parse_sql_statements(sql),
488+
Err(ParserError::ParserError(
489+
"Expected: SELECT, VALUES, or a subquery in the query body, found: default".into()
490+
))
491+
);
492+
493+
// check SELECT
494+
let sql = "INSERT INTO t SELECT 'a' FROM dual";
495+
let stmt = oracle_dialect.verified_stmt(sql);
496+
assert!(matches!(
497+
&stmt,
498+
Statement::Insert(Insert {
499+
table_alias: None,
500+
source: Some(source),
501+
..
502+
})
503+
if matches!(&**source, Query { body, .. } if matches!(&**body, SetExpr::Select(_)))));
504+
505+
// check WITH
506+
let sql = "INSERT INTO dual WITH w AS (SELECT 1 AS y FROM dual) SELECT y FROM w";
507+
let stmt = oracle_dialect.verified_stmt(sql);
508+
assert!(matches!(
509+
&stmt,
510+
Statement::Insert(Insert {
511+
table_alias: None,
512+
source: Some(source),
513+
..
514+
})
515+
if matches!(&**source, Query { body, .. } if matches!(&**body, SetExpr::Select(_)))));
516+
517+
// check VALUES
518+
let sql = "INSERT INTO t VALUES (1)";
519+
let stmt = oracle_dialect.verified_stmt(sql);
520+
dbg!(&stmt);
521+
assert!(matches!(
522+
stmt,
523+
Statement::Insert(Insert {
524+
table_alias: None,
525+
source: Some(source),
526+
..
527+
})
528+
if matches!(&*source, Query { body, .. } if matches!(&**body, SetExpr::Values(_)))
529+
));
530+
}

0 commit comments

Comments
 (0)