Skip to content

Commit 9c3697e

Browse files
committed
Test coverage
1 parent 6de07e5 commit 9c3697e

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,
@@ -469,3 +469,55 @@ fn test_insert_with_table_alias() {
469469
);
470470
verify_table_name_with_alias(&stmt, "foo_t", "t");
471471
}
472+
473+
#[test]
474+
fn test_insert_without_alias() {
475+
let oracle_dialect = oracle();
476+
477+
// check DEFAULT
478+
let sql = "INSERT INTO t default SELECT 'a' FROM dual";
479+
assert_eq!(
480+
oracle_dialect.parse_sql_statements(sql),
481+
Err(ParserError::ParserError(
482+
"Expected: SELECT, VALUES, or a subquery in the query body, found: default".into()
483+
))
484+
);
485+
486+
// check SELECT
487+
let sql = "INSERT INTO t SELECT 'a' FROM dual";
488+
let stmt = oracle_dialect.verified_stmt(sql);
489+
assert!(matches!(
490+
&stmt,
491+
Statement::Insert(Insert {
492+
table_alias: None,
493+
source: Some(source),
494+
..
495+
})
496+
if matches!(&**source, Query { body, .. } if matches!(&**body, SetExpr::Select(_)))));
497+
498+
// check WITH
499+
let sql = "INSERT INTO dual WITH w AS (SELECT 1 AS y FROM dual) SELECT y FROM w";
500+
let stmt = oracle_dialect.verified_stmt(sql);
501+
assert!(matches!(
502+
&stmt,
503+
Statement::Insert(Insert {
504+
table_alias: None,
505+
source: Some(source),
506+
..
507+
})
508+
if matches!(&**source, Query { body, .. } if matches!(&**body, SetExpr::Select(_)))));
509+
510+
// check VALUES
511+
let sql = "INSERT INTO t VALUES (1)";
512+
let stmt = oracle_dialect.verified_stmt(sql);
513+
dbg!(&stmt);
514+
assert!(matches!(
515+
stmt,
516+
Statement::Insert(Insert {
517+
table_alias: None,
518+
source: Some(source),
519+
..
520+
})
521+
if matches!(&*source, Query { body, .. } if matches!(&**body, SetExpr::Values(_)))
522+
));
523+
}

0 commit comments

Comments
 (0)