Skip to content

Commit 8b24047

Browse files
committed
don't fail on parser exceptions
1 parent cb3947c commit 8b24047

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

src/parse_tables.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,14 @@ static void ExtractTablesFromQueryNode(
147147

148148
static void ExtractTablesFromSQL(const std::string &sql, std::vector<TableRefResult> &results) {
149149
Parser parser;
150-
parser.ParseQuery(sql);
150+
151+
try {
152+
parser.ParseQuery(sql);
153+
} catch (const ParserException &ex) {
154+
// swallow parser exceptions to make this function more robust. is_parsable can be used if needed
155+
return;
156+
}
157+
151158

152159
for (auto &stmt : parser.statements) {
153160
if (stmt->type == StatementType::SELECT_STATEMENT) {

test/sql/parse_tools/scalar_functions/parse_table_names.test

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,9 @@ query I
7272
select parse_table_names('SELECT 1;');
7373
----
7474
[]
75+
76+
# malformed SQL should not error
77+
query I
78+
SELECT parse_table_names('SELECT * FROM WHERE');
79+
----
80+
[]

test/sql/parse_tools/scalar_functions/parse_tables.test

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,9 @@ query I
6868
select parse_tables('SELECT 1;');
6969
----
7070
[]
71+
72+
# malformed SQL should not error
73+
query I
74+
SELECT parse_tables('SELECT * FROM WHERE');
75+
----
76+
[]

test/sql/parse_tools/table_functions/parse_tables.test

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ query III
110110
SELECT * FROM parse_tables('SELECT 1;');
111111
----
112112

113-
# malformed SQL should error
114-
statement error
113+
# malformed SQL should not error
114+
query III
115115
SELECT * FROM parse_tables('SELECT * FROM WHERE');
116-
----
117-
Parser Error: syntax error at or near "WHERE"
116+
----

0 commit comments

Comments
 (0)