Skip to content

Commit 7865de0

Browse files
authored
Fix limit in subqueries (#1899)
1 parent 1d0dc7c commit 7865de0

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

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
@@ -3817,7 +3817,7 @@ impl<'a> Parser<'a> {
38173817
});
38183818
}
38193819
self.expect_token(&Token::LParen)?;
3820-
let in_op = match self.maybe_parse(|p| p.parse_query_body(p.dialect.prec_unknown()))? {
3820+
let in_op = match self.maybe_parse(|p| p.parse_query())? {
38213821
Some(subquery) => Expr::InSubquery {
38223822
expr: Box::new(expr),
38233823
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()
@@ -15303,6 +15305,11 @@ fn parse_return() {
1530315305
let _ = all_dialects().verified_stmt("RETURN 1");
1530415306
}
1530515307

15308+
#[test]
15309+
fn parse_subquery_limit() {
15310+
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)");
15311+
}
15312+
1530615313
#[test]
1530715314
fn test_open() {
1530815315
let open_cursor = "OPEN Employee_Cursor";

0 commit comments

Comments
 (0)