Skip to content

Commit 4c6a1cc

Browse files
committed
fix limit in subqueries
1 parent b1b379e commit 4c6a1cc

3 files changed

Lines changed: 11 additions & 4 deletions

File tree

src/ast/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ pub enum Expr {
748748
/// `[ NOT ] IN (SELECT ...)`
749749
InSubquery {
750750
expr: Box<Expr>,
751-
subquery: Box<SetExpr>,
751+
subquery: Box<Query>,
752752
negated: bool,
753753
},
754754
/// `[ NOT ] IN UNNEST(array_expression)`

src/parser/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3824,7 +3824,7 @@ impl<'a> Parser<'a> {
38243824
});
38253825
}
38263826
self.expect_token(&Token::LParen)?;
3827-
let in_op = match self.maybe_parse(|p| p.parse_query_body(p.dialect.prec_unknown()))? {
3827+
let in_op = match self.maybe_parse(|p| p.parse_query())? {
38283828
Some(subquery) => Expr::InSubquery {
38293829
expr: Box::new(expr),
38303830
subquery,

tests/sqlparser_common.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2225,7 +2225,7 @@ fn parse_in_subquery() {
22252225
assert_eq!(
22262226
Expr::InSubquery {
22272227
expr: Box::new(Expr::Identifier(Ident::new("segment"))),
2228-
subquery: verified_query("SELECT segm FROM bar").body,
2228+
subquery: Box::new(verified_query("SELECT segm FROM bar")),
22292229
negated: false,
22302230
},
22312231
select.selection.unwrap()
@@ -2239,7 +2239,9 @@ fn parse_in_union() {
22392239
assert_eq!(
22402240
Expr::InSubquery {
22412241
expr: Box::new(Expr::Identifier(Ident::new("segment"))),
2242-
subquery: verified_query("(SELECT segm FROM bar) UNION (SELECT segm FROM bar2)").body,
2242+
subquery: Box::new(verified_query(
2243+
"(SELECT segm FROM bar) UNION (SELECT segm FROM bar2)"
2244+
)),
22432245
negated: false,
22442246
},
22452247
select.selection.unwrap()
@@ -15300,6 +15302,11 @@ fn parse_return() {
1530015302
let _ = all_dialects().verified_stmt("RETURN 1");
1530115303
}
1530215304

15305+
#[test]
15306+
fn parse_subquery_limit() {
15307+
let _ = all_dialects().verified_stmt("SELECT t1_id, t1_name FROM t1 WHERE t1_id IN (SELECT t2_id FROM t2 WHERE t1_name = t2_name LIMIT 10)");
15308+
}
15309+
1530315310
#[test]
1530415311
fn test_open() {
1530515312
let open_cursor = "OPEN Employee_Cursor";

0 commit comments

Comments
 (0)