Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion crates/squawk_linter/src/analyze.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ pub fn possibly_slow_stmt(stmt: &ast::Stmt) -> bool {
| ast::Stmt::CreateStatistics(_)
| ast::Stmt::CreateSubscription(_)
| ast::Stmt::CreateTableAs(_)
| ast::Stmt::SelectInto(_)
| ast::Stmt::CreateTablespace(_)
| ast::Stmt::CreateTextSearchConfiguration(_)
| ast::Stmt::CreateTextSearchDictionary(_)
Expand Down Expand Up @@ -206,7 +207,6 @@ pub fn possibly_slow_stmt(stmt: &ast::Stmt) -> bool {
| ast::Stmt::Savepoint(_)
| ast::Stmt::SecurityLabel(_)
| ast::Stmt::Select(_)
| ast::Stmt::SelectInto(_)
| ast::Stmt::Set(_)
| ast::Stmt::SetConstraints(_)
| ast::Stmt::SetRole(_)
Expand Down Expand Up @@ -234,6 +234,14 @@ mod tests {
assert!(possibly_slow_stmt(&stmts));
}

#[test]
fn select_into() {
let sql = "select 1 a into t;";
let file = SourceFile::parse(sql);
let stmts = file.tree().stmts().next().unwrap();
assert!(possibly_slow_stmt(&stmts));
}

#[test]
fn select() {
let sql = "select 1;";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ select * from t union table t;
table t union table t;
(select 1) union (table t);

(select 2) union select a, b, c into t from t2;
select a, b, c into t from t2 union (select 2);

values (1), (2) union values (3), (4);

Expand Down
1 change: 0 additions & 1 deletion crates/squawk_parser/tests/data/ok/select_funcs.sql
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,6 @@ select json_array(1, true, json '{"a":null}');
select json_array(1, b, '3' format json, 4);
-- regression test
select json_array(select from t);
select json_array(select into t from u);

-- query_expression
select json_array(select 1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,20 +353,6 @@ SOURCE_FILE
SEMICOLON ";"
WHITESPACE "\n\n"
COMPOUND_SELECT
PAREN_SELECT
L_PAREN "("
SELECT
SELECT_CLAUSE
SELECT_KW "select"
WHITESPACE " "
TARGET_LIST
TARGET
LITERAL
INT_NUMBER "2"
R_PAREN ")"
WHITESPACE " "
UNION_KW "union"
WHITESPACE " "
SELECT_INTO
SELECT_CLAUSE
SELECT_KW "select"
Expand Down Expand Up @@ -400,6 +386,20 @@ SOURCE_FILE
FROM_ITEM
NAME_REF
IDENT "t2"
WHITESPACE " "
UNION_KW "union"
WHITESPACE " "
PAREN_SELECT
L_PAREN "("
SELECT
SELECT_CLAUSE
SELECT_KW "select"
WHITESPACE " "
TARGET_LIST
TARGET
LITERAL
INT_NUMBER "2"
R_PAREN ")"
SEMICOLON ";"
WHITESPACE "\n\n"
COMPOUND_SELECT
Expand Down
31 changes: 0 additions & 31 deletions crates/squawk_parser/tests/snapshots/tests__select_funcs_ok.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2145,37 +2145,6 @@ SOURCE_FILE
IDENT "t"
R_PAREN ")"
SEMICOLON ";"
WHITESPACE "\n"
SELECT
SELECT_CLAUSE
SELECT_KW "select"
WHITESPACE " "
TARGET_LIST
TARGET
CALL_EXPR
JSON_ARRAY_FN
JSON_ARRAY_KW "json_array"
L_PAREN "("
SELECT_INTO
SELECT_CLAUSE
SELECT_KW "select"
WHITESPACE " "
INTO_CLAUSE
INTO_KW "into"
WHITESPACE " "
PATH
PATH_SEGMENT
NAME
IDENT "t"
WHITESPACE " "
FROM_CLAUSE
FROM_KW "from"
WHITESPACE " "
FROM_ITEM
NAME_REF
IDENT "u"
R_PAREN ")"
SEMICOLON ";"
WHITESPACE "\n\n"
COMMENT "-- query_expression"
WHITESPACE "\n"
Expand Down
Loading
Loading