Skip to content

Commit 9ce1d88

Browse files
Dimchikkkayman-sigma
authored andcommitted
Fix limit in subqueries (apache#1899)
# Conflicts: # src/parser/mod.rs
1 parent 07d65a5 commit 9ce1d88

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
@@ -764,7 +764,7 @@ pub enum Expr {
764764
/// `[ NOT ] IN (SELECT ...)`
765765
InSubquery {
766766
expr: Box<Expr>,
767-
subquery: Box<SetExpr>,
767+
subquery: Box<Query>,
768768
negated: bool,
769769
},
770770
/// XXX not valid SQL syntax, this is a hack needed to support parameter substitution

src/parser/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3839,7 +3839,7 @@ impl<'a> Parser<'a> {
38393839
});
38403840
}
38413841
if self.consume_token(&Token::LParen) {
3842-
let in_op = match self.maybe_parse(|p| p.parse_query_body(p.dialect.prec_unknown()))? {
3842+
let in_op = match self.maybe_parse(|p| p.parse_query())? {
38433843
Some(subquery) => Expr::InSubquery {
38443844
expr: Box::new(expr),
38453845
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()
@@ -15329,6 +15331,11 @@ fn parse_return() {
1532915331
let _ = all_dialects().verified_stmt("RETURN 1");
1533015332
}
1533115333

15334+
#[test]
15335+
fn parse_subquery_limit() {
15336+
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)");
15337+
}
15338+
1533215339
#[test]
1533315340
fn test_open() {
1533415341
let open_cursor = "OPEN Employee_Cursor";

0 commit comments

Comments
 (0)