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

Reply via email to