X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Ffrontend%2Fparser.c;h=f8c82d3e234b856506bb3461b0563ab1f38505fc;hp=785b7e40b59caecc3f34d5e8660f7d04f918e397;hb=0b126bada8e1baa0ee4fe82ef182bb4139cd83bf;hpb=0633a3150c8d2c9539b64145a2600b68d3d9b62d diff --git a/src/frontend/parser.c b/src/frontend/parser.c index 785b7e4..f8c82d3 100644 --- a/src/frontend/parser.c +++ b/src/frontend/parser.c @@ -72,6 +72,7 @@ sdb_fe_parse(const char *query, int len) { sdb_fe_yyscan_t scanner; sdb_fe_yyextra_t yyextra; + sdb_llist_iter_t *iter; int yyres; if (scanner_init(query, len, &scanner, &yyextra)) @@ -84,6 +85,18 @@ sdb_fe_parse(const char *query, int len) 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 */