File tree Expand file tree Collapse file tree 4 files changed +23
-5
lines changed
Expand file tree Collapse file tree 4 files changed +23
-5
lines changed Original file line number Diff line number Diff line change @@ -147,7 +147,14 @@ static void ExtractTablesFromQueryNode(
147147
148148static 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) {
Original file line number Diff line number Diff line change @@ -72,3 +72,9 @@ query I
7272select 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+ []
Original file line number Diff line number Diff line change @@ -68,3 +68,9 @@ query I
6868select 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+ []
Original file line number Diff line number Diff line change @@ -110,8 +110,7 @@ query III
110110SELECT * FROM parse_tables('SELECT 1;');
111111----
112112
113- # malformed SQL should error
114- statement error
113+ # malformed SQL should not error
114+ query III
115115SELECT * FROM parse_tables('SELECT * FROM WHERE');
116- ----
117- Parser Error: syntax error at or near "WHERE"
116+ ----
You can’t perform that action at this time.
0 commit comments