void addQueryToCache(Client c) { MalBlkPtr mb; backend *be; str msg = 0, pipe; be = (backend *) c->sqlcontext; assert(be && be->mvc); /* SQL clients should always have their state set */ pipe = getSQLoptimizer(be->mvc); insertSymbol(c->nspace, c->curprg); trimMalBlk(c->curprg->def); c->blkmode = 0; mb = c->curprg->def; chkProgram(c->fdout, c->nspace, mb); #ifdef _SQL_OPTIMIZER_DEBUG mnstr_printf(GDKout, "ADD QUERY TO CACHE\n"); printFunction(GDKout, mb, 0, LIST_MAL_ALL); #endif /* * An error in the compilation should be reported to the user. * And if the debugging option is set, the debugger is called * to allow inspection. */ if (mb->errors) { showErrors(c); if (c->listing) printFunction(c->fdout, mb, 0, c->listing); if (be->mvc->debug) { msg = runMALDebugger(c, c->curprg); if (msg != MAL_SUCCEED) GDKfree(msg); /* ignore error */ } return; } addOptimizers(c, mb, pipe); msg = optimizeMALBlock(c, mb); if (msg != MAL_SUCCEED) { showScriptException(c->fdout, mb, 0, MAL, "%s", msg); GDKfree(msg); return; } /* time to execute the optimizers */ if (c->debug) optimizerCheck(c, mb, "sql.baseline", -1, 0); #ifdef _SQL_OPTIMIZER_DEBUG mnstr_printf(GDKout, "ADD optimized QUERY TO CACHE\n"); printFunction(GDKout, mb, 0, LIST_MAL_ALL); #endif }
void addQueryToCache(Client c) { str msg = NULL; insertSymbol(c->nspace, c->curprg); msg = optimizeQuery(c); if (msg != MAL_SUCCEED) { showScriptException(c->fdout, c->curprg->def, 0, MAL, "%s", msg); GDKfree(msg); } }