Changeset: ab879ac2f2f9 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ab879ac2f2f9 Modified Files: monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/mal/mal_namespace.c sql/backends/monet5/sql_gencode.c Branch: default Log Message:
Reduce storage footprint of MAL catalog. diffs (129 lines): diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c --- a/monetdb5/mal/mal_instruction.c +++ b/monetdb5/mal/mal_instruction.c @@ -33,7 +33,7 @@ newSymbol(str nme, int kind) cur->name = putName(nme, strlen(nme)); cur->kind = kind; cur->peer = NULL; - cur->def = newMalBlk(MAXVARS, STMT_INCREMENT); + cur->def = newMalBlk(kind == FUNCTIONsymbol?MAXVARS : MAXARG, kind == FUNCTIONsymbol? STMT_INCREMENT : 1); if ( cur->def == NULL){ GDKfree(cur); return NULL; @@ -971,9 +971,9 @@ renameVariable(MalBlkPtr mb, int id, str if (v->name) GDKfree(v->name); - nme= GDKmalloc(SMALLBUFSIZ); + nme= GDKmalloc(IDLENGTH); if( nme) { - snprintf(nme,SMALLBUFSIZ,pattern,newid); + snprintf(nme,IDLENGTH,pattern,newid); v->name = nme; v->tmpindex = 0; } else diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h --- a/monetdb5/mal/mal_instruction.h +++ b/monetdb5/mal/mal_instruction.h @@ -22,11 +22,10 @@ #define DEBUG_MAL_INSTR /* #define DEBUG_REDUCE */ #define MAXARG 4 /* BEWARE the code depends on this knowledge */ -#define STMT_INCREMENT 32 +#define STMT_INCREMENT 512 #define MAL_VAR_WINDOW 32 -#define MAXVARS 32 +#define MAXVARS 512 /* >= STMT_INCREMENT */ #define MAXLISTING 64*1024 -#define SMALLBUFSIZ 64 /* Allocation of space assumes a rather exotic number of * arguments. Access to module and function name are cast in macros to diff --git a/monetdb5/mal/mal_namespace.c b/monetdb5/mal/mal_namespace.c --- a/monetdb5/mal/mal_namespace.c +++ b/monetdb5/mal/mal_namespace.c @@ -146,6 +146,7 @@ str putName(const char *nme, size_t len) n->nme= GDKstrdup(buf); if (n->nme == NULL) { /* absolute an error we can not recover from */ + GDKfree(n); showException(GDKout, MAL,"initNamespace",MAL_MALLOC_FAIL); mal_exit(); } diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -871,7 +871,6 @@ multiplex2(MalBlkPtr mb, char *mod, char static int backend_create_subfunc(backend *be, sql_subfunc *f, list *ops); static int backend_create_subaggr(backend *be, sql_subaggr *f); -#define SMALLBUFSIZ 64 static int dump_joinN(backend *sql, MalBlkPtr mb, stmt *s) { @@ -1023,10 +1022,10 @@ static int if (sql->mvc->argc && sql->mvc->args[s->flag]->varid >= 0) { q = pushArgument(mb, q, sql->mvc->args[s->flag]->varid); } else { - char *buf = GDKmalloc(SMALLBUFSIZ); + char *buf = GDKmalloc(IDLENGTH); if (buf == NULL) return -1; - (void) snprintf(buf, SMALLBUFSIZ, "A%d", s->flag); + (void) snprintf(buf, IDLENGTH, "A%d", s->flag); q = pushArgumentId(mb, q, buf); } if (q == NULL) @@ -1810,10 +1809,10 @@ static int /* delta bat */ if (s->op3) { - char nme[SMALLBUFSIZ]; + char nme[IDLENGTH]; int uval = -1; - snprintf(nme, SMALLBUFSIZ, "r1_%d", r); + snprintf(nme, IDLENGTH, "r1_%d", r); uval = findVariable(mb, nme); assert(uval >= 0); @@ -1967,10 +1966,10 @@ static int if (s->flag) s->nr = s->op1->op2->nr; } else if (s->flag) { - char nme[SMALLBUFSIZ]; + char nme[IDLENGTH]; int v = -1; - snprintf(nme, SMALLBUFSIZ, "r%d_%d", s->flag, l); + snprintf(nme, IDLENGTH, "r%d_%d", s->flag, l); v = findVariable(mb, nme); assert(v >= 0); @@ -2821,7 +2820,7 @@ backend_dumpproc(backend *be, Client c, Symbol curPrg = 0, backup = NULL; InstrPtr curInstr = 0; int argc = 0; - char arg[SMALLBUFSIZ]; + char arg[IDLENGTH]; node *n; backup = c->curprg; @@ -2849,7 +2848,7 @@ backend_dumpproc(backend *be, Client c, int type = atom_type(a)->type->localtype; int varid = 0; - snprintf(arg, SMALLBUFSIZ, "A%d", argc); + snprintf(arg, IDLENGTH, "A%d", argc); a->varid = varid = newVariable(mb, _STRDUP(arg), type); curInstr = pushArgument(mb, curInstr, varid); if (curInstr == NULL) @@ -2864,7 +2863,7 @@ backend_dumpproc(backend *be, Client c, int type = a->type.type->localtype; int varid = 0; - snprintf(arg, SMALLBUFSIZ, "A%d", argc); + snprintf(arg, IDLENGTH, "A%d", argc); varid = newVariable(mb, _STRDUP(arg), type); curInstr = pushArgument(mb, curInstr, varid); if (curInstr == NULL) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list