Changeset: b140078bcff0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b140078bcff0
Modified Files:
        gdk/gdk_logger.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_instruction.h
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_namespace.c
        monetdb5/mal/mal_resource.c
        monetdb5/mal/mal_resource.h
        monetdb5/modules/mal/querylog.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/storage/store.c
        sql/test/BugTracker-2014/Tests/querylog.Bug-3607.sql
        sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
Branch: geo
Log Message:

Merge with default branch.


diffs (truncated from 406 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1409,7 +1409,15 @@ logger_load(int debug, const char* fn, c
                        logger_fatal("logger_load: writing log file %s failed",
                                     filename, 0, 0);
                }
-               if (fclose(fp) < 0) {
+               if (fflush(fp) < 0 ||
+#if defined(_MSC_VER)
+                   _commit(_fileno(fp)) < 0 ||
+#elif defined(HAVE_FDATASYNC)
+                   fdatasync(fileno(fp)) < 0 ||
+#elif defined(HAVE_FSYNC)
+                   fsync(fileno(fp)) < 0 ||
+#endif
+                   fclose(fp) < 0) {
                        unlink(filename);
                        logger_fatal("logger_load: closing log file %s failed",
                                     filename, 0, 0);
@@ -2040,7 +2048,15 @@ logger_exit(logger *lg)
                        return LOG_ERR;
                }
 
-               if (fclose(fp) < 0) {
+               if (fflush(fp) < 0 ||
+#if defined(_MSC_VER)
+                   _commit(_fileno(fp)) < 0 ||
+#elif defined(HAVE_FDATASYNC)
+                   fdatasync(fileno(fp)) < 0 ||
+#elif defined(HAVE_FSYNC)
+                   fsync(fileno(fp)) < 0 ||
+#endif
+                   fclose(fp) < 0) {
                        fprintf(stderr, "!ERROR: logger_exit: flush of %s 
failed\n",
                                filename);
                        return LOG_ERR;
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -476,7 +476,7 @@ debugFunction(stream *fd, MalBlkPtr mb, 
                        if (p->token == REMsymbol)
                                mnstr_printf(fd,"%-40s\n",ps);
                        else {
-                               mnstr_printf(fd,"%-40s\t#[%d] %s ",ps, i, 
(p->blk && p->blk->binding? p->blk->binding:""));
+                               mnstr_printf(fd,"%-40s\t#[%d] ("BUNFMT") %s 
",ps, i, getRowCnt(mb,getArg(p,0)), (p->blk && p->blk->binding? 
p->blk->binding:""));
                                for(j =0; j < p->retc; j++)
                                        mnstr_printf(fd,"%d ",getArg(p,j));
                                if( p->argc - p->retc > 0)
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_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -639,12 +639,14 @@ str runMALsequence(Client cntxt, MalBlkP
 
                                                if (isaBatType(t)) {
                                                        bat bid = 
stk->stk[a].val.bval;
+                                                       BAT *_b = 
BATdescriptor(bid);
                                                        t = getColumnType(t);
                                                        
assert(stk->stk[a].vtype == TYPE_bat);
                                                        assert(bid == 0 ||
                                                                   bid == 
bat_nil ||
                                                                   t == 
TYPE_any ||
-                                                                  
ATOMtype(BBP_cache(bid)->ttype) == ATOMtype(t));
+                                                                  
ATOMtype(_b->ttype) == ATOMtype(t));
+                                                       if(_b) BBPunfix(bid);
                                                } else {
                                                        assert(t == 
stk->stk[a].vtype);
                                                }
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/monetdb5/mal/mal_resource.c b/monetdb5/mal/mal_resource.c
--- a/monetdb5/mal/mal_resource.c
+++ b/monetdb5/mal/mal_resource.c
@@ -12,9 +12,6 @@
 #include "mal_resource.h"
 #include "mal_private.h"
 
-#define heapinfo(X) if ((X) && (X)->base) vol = (X)->free; else vol = 0;
-#define hashinfo(X) if ((X) && (X) != (Hash *) 1 && (X)->mask) vol = 
(((X)->mask + cnt ) * (X)-> width); else vol = 0;
-
 /* MEMORY admission does not seem to have a major impact */
 lng memorypool = 0;      /* memory claimed by concurrent threads */
 int memoryclaims = 0;    /* number of threads active with expensive operations 
*/
@@ -66,9 +63,8 @@ mal_resource_reset(void)
 lng
 getMemoryClaim(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int i, int flag)
 {
-       lng total = 0, vol = 0;
+       lng total = 0;
        BAT *b;
-       BUN cnt;
 
        (void)mb;
        if (stk->stk[getArg(pci, i)].vtype == TYPE_bat) {
@@ -79,15 +75,14 @@ getMemoryClaim(MalBlkPtr mb, MalStkPtr s
                        BBPunfix(b->batCacheid);
                        return 0;
                }
-               cnt = BATcount(b);
 
-               heapinfo(&b->T->heap); total += vol;
+               total += heapinfo(&b->T->heap); 
                // string heaps can be shared, consider them as space-less views
                if ( b->T->vheap && b->T->vheap->parentid ){
-                       heapinfo(b->T->vheap); total += vol;
+                       total += heapinfo(b->T->vheap); 
                }
-               hashinfo(b->T->hash); total += vol;
-               total = total > (lng)(MEMORY_THRESHOLD ) ? 
(lng)(MEMORY_THRESHOLD ) : total;
+               //total += hashinfo(b->T->hash); 
+               //total = total > (lng)(MEMORY_THRESHOLD ) ? 
(lng)(MEMORY_THRESHOLD ) : total;
                BBPunfix(b->batCacheid);
        }
        return total;
diff --git a/monetdb5/mal/mal_resource.h b/monetdb5/mal/mal_resource.h
--- a/monetdb5/mal/mal_resource.h
+++ b/monetdb5/mal/mal_resource.h
@@ -15,6 +15,9 @@
 #define DELAYUNIT 2 /* ms delay in parallel processing decisions */
 #define MAX_DELAYS 1000 /* never wait forever */
 
+#define heapinfo(X) ((X) && (X)->base ? (X)->free: 0)
+#define hashinfo(X) ( (X)? heapinfo((X)->heap):0)
+
 #define USE_MAL_ADMISSION
 #ifdef USE_MAL_ADMISSION
 mal_export int MALadmission(lng argclaim, lng hotclaim);
diff --git a/monetdb5/modules/mal/querylog.c b/monetdb5/modules/mal/querylog.c
--- a/monetdb5/modules/mal/querylog.c
+++ b/monetdb5/modules/mal/querylog.c
@@ -180,8 +180,8 @@ static void
        QLOG_cat_defined = QLOGcreate("cat","defined",TYPE_timestamp);
        QLOG_cat_query = QLOGcreate("cat","query",TYPE_str);
        QLOG_cat_pipe = QLOGcreate("cat","pipe",TYPE_str);
+       QLOG_cat_plan = QLOGcreate("cat","size",TYPE_str);
        QLOG_cat_mal = QLOGcreate("cat","mal",TYPE_int);
-       QLOG_cat_plan = QLOGcreate("cat","size",TYPE_str);
        QLOG_cat_optimize = QLOGcreate("cat","optimize",TYPE_lng);
        
        QLOG_calls_id = QLOGcreate("calls","id",TYPE_oid);
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -35,6 +35,7 @@
 #include <opt_pipes.h>
 #include "clients.h"
 #include "mal_instruction.h"
+#include "mal_resource.h"
 
 static int
 rel_is_table(sql_rel *rel)
@@ -4864,10 +4865,6 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
                                                                }
                                                                BUNappend(atom, 
&w, FALSE);
 
-#define heapinfo(X) ((X) && (X)->base ? (X)->free: 0)
-#define hashinfo(X) ( (X)? heapinfo((X)->heap):0)
-
-
                                                                sz = 
heapinfo(&bn->T->heap);
                                                                BUNappend(size, 
&sz, FALSE);
 
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);
 
@@ -2843,7 +2842,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;
@@ -2871,7 +2870,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)
@@ -2886,7 +2885,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)
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -2127,6 +2127,17 @@ sql_trans_tname_conflict( sql_trans *tr,
                        return 1;
                *tp++ = '_';
        }
+               tmp = sa_strdup(tr->sa, cname);
+       tp = tmp;
+       while ((tp = strchr(tp, '_')) != NULL) {
+               char *ntmp;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to