Changeset: ffb77f9c0379 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ffb77f9c0379 Modified Files: sql/backends/monet5/sql_statement.c sql/server/rel_optimizer.c Branch: Oct2020 Log Message:
merged and small cleanup diffs (115 lines): diff --git a/monetdb5/optimizer/opt_generator.c b/monetdb5/optimizer/opt_generator.c --- a/monetdb5/optimizer/opt_generator.c +++ b/monetdb5/optimizer/opt_generator.c @@ -71,14 +71,11 @@ OPTgeneratorImplementation(Client cntxt, char buf[256]; lng usec= GDKusec(); str msg = MAL_SUCCEED; + int needed = 0; - (void) cntxt; (void) stk; (void) pci; - series = (InstrPtr*) GDKzalloc(sizeof(InstrPtr) * mb->vtop); - if(series == NULL) - throw(MAL,"optimizer.generator", SQLSTATE(HY013) MAL_MALLOC_FAIL); old = mb->stmt; limit = mb->stop; slimit = mb->ssize; @@ -87,12 +84,16 @@ OPTgeneratorImplementation(Client cntxt, for( i=0; i < limit; i++){ p = old[i]; if ( getModuleId(p) == generatorRef && getFunctionId(p) == seriesRef) - break; + needed = 1; + if (p->token == RETURNsymbol || p->barrier == RETURNsymbol) + return 0; } - if (i == limit) { - GDKfree(series); + if (!needed) return 0; - } + + series = (InstrPtr*) GDKzalloc(sizeof(InstrPtr) * mb->vtop); + if(series == NULL) + throw(MAL,"optimizer.generator", SQLSTATE(HY013) MAL_MALLOC_FAIL); if (newMalBlkStmt(mb, mb->ssize) < 0) { GDKfree(series); diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -480,32 +480,24 @@ stmt_varnr(backend *be, int nr, sql_subt stmt * stmt_table(backend *be, stmt *cols, int temp) { + stmt *s = stmt_create(be->mvc->sa, st_table); MalBlkPtr mb = be->mb; - InstrPtr q = newAssignment(mb); - - if (cols->nr < 0) + + if (s == NULL || cols->nr < 0) return NULL; if (cols->type != st_list) { + InstrPtr q = newAssignment(mb); q = newStmt(mb, sqlRef, printRef); q = pushStr(mb, q, "not a valid output list\n"); if (q == NULL) return NULL; } - if (q) { - stmt *s = stmt_create(be->mvc->sa, st_table); - if (s == NULL) { - freeInstruction(q); - return NULL; - } - - s->op1 = cols; - s->flag = temp; - s->nr = cols->nr; - s->nrcols = cols->nrcols; - return s; - } - return NULL; + s->op1 = cols; + s->flag = temp; + s->nr = cols->nr; + s->nrcols = cols->nrcols; + return s; } stmt * @@ -3072,7 +3064,7 @@ stmt_convert(backend *be, stmt *v, stmt !EC_INTERVAL(f->type->eclass) && f->type->eclass != EC_DEC && (t->digits == 0 || f->digits == t->digits) && - type_has_tz(t) == type_has_tz(f)) || + type_has_tz(t) == type_has_tz(f)) || (EC_VARCHAR(f->type->eclass) && EC_VARCHAR(t->type->eclass) && f->digits > 0 && t->digits >= f->digits)) { /* set output type. Despite the MAL code already being generated, the output type may still be checked */ diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -5527,7 +5527,7 @@ rel_push_project_down(visitor *v, sql_re if (rel_is_ref(l)) return rel; - if (is_base(l->op)) { + if (is_basetable(l->op)) { if (list_check_prop_all(rel->exps, (prop_check_func)&exp_is_useless_rename)) { /* TODO reduce list (those in the project + internal) */ rel->l = NULL; @@ -9559,7 +9559,7 @@ optimize_rel(mvc *sql, sql_rel *rel, int rel = rel_visitor_bottomup(&v, rel, &rewrite_reset_used); /* reset used flag, used by rel_merge_select_rse */ } - if (gp.cnt[op_project]) + if (gp.cnt[op_project] && /* DISABLES CODE */ (0)) rel = rel_exp_visitor_bottomup(&v, rel, &rel_merge_project_rse, false); if (gp.cnt[op_join]) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list