Changeset: f6ce3447b3b2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f6ce3447b3b2
Modified Files:
        monetdb5/mal/mal_instruction.mx
Branch: Aug2011
Log Message:

Be more relaxed about temporary naming
And solve an issue in representation of nil:bat[].


diffs (136 lines):

diff --git a/monetdb5/mal/mal_instruction.mx b/monetdb5/mal/mal_instruction.mx
--- a/monetdb5/mal/mal_instruction.mx
+++ b/monetdb5/mal/mal_instruction.mx
@@ -251,7 +251,7 @@
 mal_export int cloneVariable(MalBlkPtr dst, MalBlkPtr src, int varid);
 mal_export void renameVariable(MalBlkPtr mb, int i, str name);
 mal_export void resetVarName(MalBlkPtr mb, int i);
-mal_export void copyVariable(MalBlkPtr dst, MalBlkPtr src, VarPtr v);
+mal_export void copyVariable(MalBlkPtr dst, VarPtr v);
 mal_export void removeVariable(MalBlkPtr mb, int varid);
 mal_export int newTmpVariable(MalBlkPtr mb, malType type);
 mal_export int newTmpSink(MalBlkPtr mb, malType type);
@@ -508,11 +508,10 @@
                return NULL;
        }
        mb->vsize = old->vsize;
-       memcpy((char *) mb->var, old->var, sizeof(VarPtr) * old->vtop);
 
        mb->vtop = 0;
        for (i = 0; i < old->vtop; i++) {
-               copyVariable(mb, old, getVar(old, i));
+               copyVariable(mb, getVar(old, i));
                mb->vtop++;
        }
 
@@ -910,7 +909,7 @@
 @= chkTemporary
     if( isTmpName(name)){
                int j;
-        i= atol(name+1);
+        i= atol(name+ (*name == TMPMARKER? 1:2));
         /* quick test validity*/
         if( i< mb->vtop && isTmpVar(mb,i) && getVarTmp(mb,i) == i)
             return i;
@@ -1161,7 +1160,7 @@
                return -1;
        @:makeVarSpace@
        if (isTmpName(name)) {
-               int i = atol(name + 1);
+               int i = atol(name+ (*name == TMPMARKER? 1:2));
 
                /* test validity */
                if (i > mb->vtop) {
@@ -1285,12 +1284,11 @@
        }
 }
 void
-copyVariable(MalBlkPtr dst, MalBlkPtr src, VarPtr v)
+copyVariable(MalBlkPtr dst, VarPtr v)
 {
        int i;
        VarPtr w;
 
-       (void) src;             /* fool the compiler */
        assert(v->propc <= v->maxprop);
        w = (VarPtr) GDKzalloc(sizeof(VarRecord) + v->maxprop * sizeof(int));
        w->name = v->name ? GDKstrdup(v->name) : 0;
@@ -1714,6 +1712,10 @@
        ValPtr vr;
        str msg;
 
+       if (isaBatType(type) && cst->vtype == TYPE_void){
+               cst->vtype = TYPE_bat;
+               cst->val.bval = 0;
+       } else
        if (cst->vtype != type && !isaBatType(type) && !isPolyType(type)){
                ValRecord vr = *cst;
                int otype = cst->vtype;
@@ -2421,7 +2423,7 @@
                                cv = NULL;
                                VALformat(&cv, &stk->stk[getArg(p, i)]);
                                if ( cv && strlen(cv) > len - (t - s)) {
-                                       char *ns = (char *) GDKmalloc(len = 
strlen(cv) + len + 2);
+                                       char *ns = (char *) GDKmalloc(len = 
strlen(cv) + len + 5);
                                        *t = 0;
                                        strcpy(ns, s);
                                        t = ns + (t - s);
@@ -2429,6 +2431,7 @@
                                        s = ns;
                                }
                                if ( cv && strcmp(cv,"nil") ){
+                                       strcat(t, "=");
                                        strcat(t, cv);
                                        advance(t,base,len);
                                        if (cv)
@@ -2438,7 +2441,7 @@
                                                snprintf(t,(len-(t-base)),"[" 
BUNFMT "]", BATcount(d));
                                                advance(t,base,len);
                                        }
-                               }
+                               } else strcat(t, "=nil");
                        }
                        if (i < p->retc - 1)
                                *t++ = ',';
@@ -2512,14 +2515,14 @@
                                        ct= (char*) GDKmalloc(1024+strlen(cv));
                                        if (isVarUDFtype(mb, getArg(p, i)) ) {
                                                if ( strcmp(cv,"nil") == 0)
-                                                       snprintf(ct, 
1024+strlen(cv), "%s", cv);
+                                                       snprintf(ct, 
1024+strlen(cv), "=%s", cv);
                                                else
-                                                       snprintf(ct, 
1024+strlen(cv), "\"%s\"", cv);
+                                                       snprintf(ct, 
1024+strlen(cv), "=\"%s\"", cv);
                                        } else
                                        if ( strcmp(cv,"nil") == 0)
-                                               snprintf(ct, 1024+strlen(cv), 
"%s:%s", cv, getTypeName(getTailType(getArgType(mb,p,i))));
+                                               snprintf(ct, 1024+strlen(cv), 
"=%s:%s", cv, getTypeName(getTailType(getArgType(mb,p,i))));
                                        else
-                                               snprintf(ct, 1024+strlen(cv), 
"\"%s\":%s", cv, getTypeName(getTailType(getArgType(mb,p,i))));
+                                               snprintf(ct, 1024+strlen(cv), 
"=\"%s\":%s", cv, getTypeName(getTailType(getArgType(mb,p,i))));
                                        if( cv) GDKfree(cv);
                                        cv= ct;
                                } else
@@ -2545,7 +2548,7 @@
                                        VALformat(&cv, &getVar(mb, getArg(p, 
i))->value);
                        }
                        if ( cv && strlen(cv) > len - (t - s)) {
-                               char *ns = (char *) GDKmalloc(len = strlen(cv) 
+ len + 2);
+                               char *ns = (char *) GDKmalloc(len = strlen(cv) 
+ len + 5);
 
                                *t = 0;
                                strcpy(ns, s);
@@ -2553,8 +2556,12 @@
                                GDKfree(s);
                                s = ns;
                        }
-                       if ( cv )
+                       if ( cv )  {
+                               if ( !isVarConstant(mb, getArg(p, i)) )
+                                       strcat(t,"=");
                                strcat(t, cv);
+                       }
+                       
                        advance(t,base,len);
                        if ( (cv && strlen(cv)==0) || isVarUDFtype(mb, 
getArg(p, i)) ||
                                isAmbiguousType(getArgType(mb,p,i)) ){
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to