diff --git a/src/frontend/parser.c b/src/frontend/parser.c
index 785b7e40b59caecc3f34d5e8660f7d04f918e397..f8c82d3e234b856506bb3461b0563ab1f38505fc 100644 (file)
--- a/src/frontend/parser.c
+++ b/src/frontend/parser.c
{
sdb_fe_yyscan_t scanner;
sdb_fe_yyextra_t yyextra;
+ sdb_llist_iter_t *iter;
int yyres;
if (scanner_init(query, len, &scanner, &yyextra))
sdb_llist_destroy(yyextra.parsetree);
return NULL;
}
+
+ iter = sdb_llist_get_iter(yyextra.parsetree);
+ while (sdb_llist_iter_has_next(iter)) {
+ sdb_conn_node_t *node;
+ node = SDB_CONN_NODE(sdb_llist_iter_get_next(iter));
+ if (sdb_fe_analyze(node)) {
+ sdb_llist_iter_destroy(iter);
+ sdb_llist_destroy(yyextra.parsetree);
+ return NULL;
+ }
+ }
+ sdb_llist_iter_destroy(iter);
return yyextra.parsetree;
} /* sdb_fe_parse */