Changeset: 13920b18393b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=13920b18393b Modified Files: monetdb5/optimizer/opt_dataflow.c monetdb5/optimizer/opt_generator.c monetdb5/optimizer/opt_mitosis.c monetdb5/optimizer/opt_pushselect.c monetdb5/optimizer/opt_querylog.c Branch: default Log Message:
Avoid growing MAL blocks The MAL blocks used in the optimizers should not be extended without purpose. As long as the underlying pushInstruction is used, it will automatically grow, albeit with just a few elements at a time. If the same MAL block is used over many queries, it would acquire too much un-used space. diffs (71 lines): diff --git a/monetdb5/optimizer/opt_dataflow.c b/monetdb5/optimizer/opt_dataflow.c --- a/monetdb5/optimizer/opt_dataflow.c +++ b/monetdb5/optimizer/opt_dataflow.c @@ -248,7 +248,9 @@ OPTdataflowImplementation(Client cntxt, eolife[getArg(p,j)]= i; } - if ( newMalBlkStmt(mb, mb->ssize+mb->vtop) <0 ) + // make sure we have space for the language.pass operation + // for all variables within the barrier + if ( newMalBlkStmt(mb, mb->ssize) <0 ) goto wrapup; pushInstruction(mb,old[0]); 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 @@ -80,7 +80,7 @@ OPTgeneratorImplementation(Client cntxt, series = (InstrPtr*) GDKzalloc(sizeof(InstrPtr) * mb->vtop); old = mb->stmt; limit = mb->stop; - if (newMalBlkStmt(mb, 2 * limit) < 0) { + if (newMalBlkStmt(mb, mb->ssize) < 0) { GDKfree(series); return 0; } diff --git a/monetdb5/optimizer/opt_mitosis.c b/monetdb5/optimizer/opt_mitosis.c --- a/monetdb5/optimizer/opt_mitosis.c +++ b/monetdb5/optimizer/opt_mitosis.c @@ -169,7 +169,7 @@ OPTmitosisImplementation(Client cntxt, M limit = mb->stop; slimit = mb->ssize; - if (newMalBlkStmt(mb, mb->ssize + 2 * estimate) < 0) + if (newMalBlkStmt(mb, mb->stop + 2 * estimate) < 0) return 0; estimate = 0; diff --git a/monetdb5/optimizer/opt_pushselect.c b/monetdb5/optimizer/opt_pushselect.c --- a/monetdb5/optimizer/opt_pushselect.c +++ b/monetdb5/optimizer/opt_pushselect.c @@ -268,7 +268,7 @@ OPTpushselectImplementation(Client cntxt } } - if ((!subselects.nr && !nr_topn && !nr_likes) || newMalBlkStmt(mb, mb->ssize+20) <0 ) { + if ((!subselects.nr && !nr_topn && !nr_likes) || newMalBlkStmt(mb, mb->ssize) <0 ) { GDKfree(vars); return 0; } @@ -442,7 +442,7 @@ OPTpushselectImplementation(Client cntxt slimit= mb->ssize; old = mb->stmt; - if (newMalBlkStmt(mb, mb->ssize+(5*push_down_delta)) <0 ) { + if (newMalBlkStmt(mb, mb->stop+(5*push_down_delta)) <0 ) { mb->stmt = old; GDKfree(vars); return actions; diff --git a/monetdb5/optimizer/opt_querylog.c b/monetdb5/optimizer/opt_querylog.c --- a/monetdb5/optimizer/opt_querylog.c +++ b/monetdb5/optimizer/opt_querylog.c @@ -52,7 +52,7 @@ OPTquerylogImplementation(Client cntxt, limit= mb->stop; slimit= mb->ssize; - if ( newMalBlkStmt(mb, 2 * mb->ssize) < 0) + if ( newMalBlkStmt(mb, mb->ssize) < 0) return 0; pushInstruction(mb, old[0]); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list