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