Changeset: 84baca89eb43 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=84baca89eb43
Modified Files:
        configure.ag
        monetdb5/mal/mal_interpreter.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_pipes.c
        sql/backends/monet5/sql.mx
Branch: headless
Log Message:

Merge with default branch.


diffs (truncated from 1444 to 300 lines):

diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -1260,6 +1260,9 @@
 AC_CHECK_PROG(MV,mv,mv -f)
 AC_PROG_LN_S
 AC_CHECK_PROG(LOCKFILE,lockfile,lockfile -r 2,echo)
+if test x"$LOCKFILE" = x"echo" ; then
+       AC_MSG_WARN([no lockfile found, please do NOT parallelise the build 
process!])
+fi
 
 AC_CHECK_PROGS(RPMBUILD,rpmbuild rpm)
 
diff --git a/monetdb5/optimizer/opt_mitosis.c b/monetdb5/optimizer/opt_mitosis.c
--- a/monetdb5/optimizer/opt_mitosis.c
+++ b/monetdb5/optimizer/opt_mitosis.c
@@ -209,14 +209,16 @@
 
                for(j=0; j < pieces; j++){
                        q= copyInstruction(p);
-                       q= pushOid(mb,q,low.value.val.oval);
+                       q= pushInt(mb,q,j);
+                       q= pushInt(mb,q,pieces);
+                       //q= pushOid(mb,q,low.value.val.oval);
                        if (j+1 < pieces) {
                                hgh.value.val.oval= low.value.val.oval+slice;
                        } else {
                                assert(rowcnt <= (wrd) BUN_MAX);
                                hgh.value.val.oval= (BUN) rowcnt;
                        }
-                       q = pushOid(mb,q,hgh.value.val.oval);
+                       //q = pushOid(mb,q,hgh.value.val.oval);
 
                        k= getArg(q,0)= newTmpVariable(mb,tpe);
                        setVarFixed(mb,k);
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -113,11 +113,11 @@
 getPipeDefinition(str name)
 {
        int i;
+
        for( i=0; *pipes[i].name; i++)
-       if ( strcmp(name, pipes[i].name) == 0)
-               return GDKstrdup(pipes[i].def);
-
-       return GDKstrdup(pipes[0].def);
+               if ( strcmp(name, pipes[i].name) == 0)
+                       return GDKstrdup(pipes[i].def);
+       return NULL;
 }
 
 str
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -169,6 +169,13 @@
        1 - inserts
        2 - updates";
 
+pattern bind_idxbat(mvc:ptr, schema:str, table:str, index:str, access:int, 
part_nr:int, nr_parts:int):col[:any_1]
+address mvc_bind_idxbat_wrap
+comment "Bind the 'schema.table.index' BAT with access kind:
+       0 - base table
+       1 - inserts
+       2 - updates";
+
 pattern bind(mvc:ptr, schema:str, table:str, column:str, access:int 
):col[:any_1]
 address mvc_bind_wrap
 comment "Bind the 'schema.table.column' BAT with access kind:
@@ -183,6 +190,13 @@
        1 - inserts
        2 - updates";
 
+pattern bind(mvc:ptr, schema:str, table:str, column:str, access:int, 
part_nr:int, nr_parts:int ):col[:any_1]
+address mvc_bind_wrap
+comment "Bind the 'schema.table.column' BAT partition with access kind:
+       0 - base table
+       1 - inserts
+       2 - updates";
+
 command bind_dbat(clientid:int, schema:str, table:str, access:int, 
oldversion:lng, version:lng):col[:oid]
 address mvc_diff_dbat_wrap
 comment "Bind to 'schema.table' BAT with deleted objecs
@@ -2612,12 +2626,41 @@
        (void) cntxt;
        b = mvc_bind(m, *sname, *tname, *cname, *access);
        if (b) {
-               if ( pci->argc == 8){
+               if ( pci->argc == 8 && getArgType(mb,pci,6) == TYPE_oid){
                        /* partitioned access */
                        lval = *(oid *)getArgReference(stk, pci, 6);
                        hval = *(oid *)getArgReference(stk, pci, 7);
-                       bn =  BATslice(b, lval,hval);
-                       BATseqbase(bn, lval);
+                       if (*access == 0) {
+                               bn =  BATslice(b, lval,hval);
+                               BATseqbase(bn, lval);
+                               BBPreleaseref(b->batCacheid);
+                       } else {
+                               bn = b;
+                       }
+                       BBPkeepref( *bid = bn->batCacheid);
+                       return MAL_SUCCEED;
+               } else if ( pci->argc == 8 && getArgType(mb,pci,6) == TYPE_int){
+                       BUN cnt = BATcount(b), psz;
+                       /* partitioned access */
+                       int part_nr = *(int *)getArgReference(stk, pci, 6);
+                       int nr_parts = *(int *)getArgReference(stk, pci, 7);
+
+                       if (*access == 0) {
+                               psz = cnt?(cnt/nr_parts):0;
+                               bn =  BATslice(b, part_nr*psz, 
(part_nr+1==nr_parts)?cnt:((part_nr+1)*psz));
+                               BATseqbase(bn, part_nr*psz);
+                       } else {
+                               oid l, h;
+                               BAT *c = mvc_bind(m, *sname, *tname, *cname, 0);
+                               cnt = BATcount(c);
+                               psz = cnt?(cnt/nr_parts):0;
+                               l = part_nr*psz;
+                               h = (part_nr+1==nr_parts)?cnt:((part_nr+1)*psz);
+                               h--;
+                               bn = BATmirror(BATselect(BATmirror(b), &l, &h));
+                       
+                               BBPreleaseref(c->batCacheid);
+                       }
                        BBPkeepref( *bid = bn->batCacheid);
                        BBPreleaseref(b->batCacheid);
                        return MAL_SUCCEED;
@@ -2646,12 +2689,41 @@
        (void) cntxt;
        b = mvc_bind_idxbat(m, *sname, *tname, *iname, *access);
        if (b) {
-               if ( pci->argc == 8){
-                       /* partitioned access */
+               if ( pci->argc == 8 && getArgType(mb,pci,6) == TYPE_oid){
+                       /* partitioned access, TODO fix update bats */
                        lval = *(oid *)getArgReference(stk, pci, 6);
                        hval = *(oid *)getArgReference(stk, pci, 7);
-                       bn =  BATslice(b, lval,hval);
-                       BATseqbase(bn, lval);
+                       if (*access == 0) {
+                               bn =  BATslice(b, lval,hval);
+                               BATseqbase(bn, lval);
+                               BBPreleaseref(b->batCacheid);
+                       } else {
+                               bn = b;
+                       }
+                       BBPkeepref( *bid = bn->batCacheid);
+                       return MAL_SUCCEED;
+               } else if ( pci->argc == 8 && getArgType(mb,pci,6) == TYPE_int){
+                       BUN cnt = BATcount(b), psz;
+                       /* partitioned access */
+                       int part_nr = *(int *)getArgReference(stk, pci, 6);
+                       int nr_parts = *(int *)getArgReference(stk, pci, 7);
+
+                       if (*access == 0) {
+                               psz = cnt?(cnt/nr_parts):0;
+                               bn =  BATslice(b, part_nr*psz, 
(part_nr+1==nr_parts)?cnt:((part_nr+1)*psz));
+                               BATseqbase(bn, part_nr*psz);
+                       } else {
+                               oid l, h;
+                               BAT *c = mvc_bind_idxbat(m, *sname, *tname, 
*iname, 0);
+                               cnt = BATcount(c);
+                               psz = cnt?(cnt/nr_parts):0;
+                               l = part_nr*psz;
+                               h = (part_nr+1==nr_parts)?cnt:((part_nr+1)*psz);
+                               h--;
+                               bn = BATmirror(BATselect(BATmirror(b), &l, &h));
+                       
+                               BBPreleaseref(c->batCacheid);
+                       }
                        BBPkeepref( *bid = bn->batCacheid);
                        BBPreleaseref(b->batCacheid);
                        return MAL_SUCCEED;
diff --git a/sql/server/rel_bin.c b/sql/server/rel_bin.c
--- a/sql/server/rel_bin.c
+++ b/sql/server/rel_bin.c
@@ -288,7 +288,7 @@
                sql_subtype *to = tps->h->next->data;
                if (!l) 
                        return NULL;
-               s = stmt_convert(sql->sa, l, from, to);
+               s = stmt_convert(sql->sa, l, from, to, 0);
        }       break;
        case e_func: {
                node *en;
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -1499,7 +1499,6 @@
                        node *n,*m;
                        sql_rel *rel;
 
-
                        if (sql->emode == m_deps)
                                rel = rel_basetable(sql, t, tname);
                        else
@@ -1516,10 +1515,6 @@
                                        sql_exp *e = m->data;
        
                                        exp_setname(sql->sa, e, tname, 
c->base.name);
-/*
-                                       if (e->card == CARD_AGGR)
-                                               e->card = CARD_MULTI;
-*/
                                }
                        }
                        return rel;
diff --git a/sql/server/rel_semantic.c b/sql/server/rel_semantic.c
--- a/sql/server/rel_semantic.c
+++ b/sql/server/rel_semantic.c
@@ -146,7 +146,9 @@
                m->session->status = status;
                strcpy(m->errstr, errstr);
        } else {
+               int label = m->label;
                *m = o;
+               m->label = label;
        }
        return rel;
 }
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -44,7 +44,7 @@
 
        mvc_debug = debug;
        if (mvc_debug)
-               fprintf(stderr, "mvc_init logdir %s%c%s\n", logdir, DIR_SEP, 
dbname);
+               fprintf(stderr, "#mvc_init logdir %s%c%s\n", logdir, DIR_SEP, 
dbname);
        keyword_init();
        scanner_init_keywords();
 
@@ -117,7 +117,7 @@
 mvc_exit()
 {
        if (mvc_debug)
-               fprintf(stderr, "mvc_exit\n");
+               fprintf(stderr, "#mvc_exit\n");
 
        store_exit();
        keyword_exit();
@@ -184,7 +184,7 @@
        assert(m->session->active);     /* only commit an active transaction */
        
        if (mvc_debug)
-               fprintf(stderr, "mvc_commit %s\n", (name) ? name : "");
+               fprintf(stderr, "#mvc_commit %s\n", (name) ? name : "");
 
        if (m->session->status < 0) {
                (void)sql_error(m, 010, "COMMIT: transaction is aborted, will 
ROLLBACK instead");
@@ -196,7 +196,7 @@
        if (name && name[0] != '\0') {
                sql_trans *tr = m->session->tr;
                if (mvc_debug)
-                       fprintf(stderr, "mvc_savepoint\n");
+                       fprintf(stderr, "#mvc_savepoint\n");
                store_lock();
                m->session->tr = sql_trans_create(m->session->stk, tr, name);
                store_unlock();
@@ -204,7 +204,7 @@
                m->session->schema = find_sql_schema(m->session->tr, 
m->session->schema_name);
                m->last = NULL;
                if (mvc_debug)
-                       fprintf(stderr, "mvc_commit %s done\n", (name) ? name : 
"");
+                       fprintf(stderr, "#mvc_commit %s done\n", (name) ? name 
: "");
                return 0;
        }
 
@@ -233,7 +233,7 @@
                        sql_trans_end(m->session);
                m->type = Q_TRANS;
                if (mvc_debug)
-                       fprintf(stderr, "mvc_commit %s done\n", (name) ? name : 
"");
+                       fprintf(stderr, "#mvc_commit %s done\n", (name) ? name 
: "");
                m->last = NULL;
                store_unlock();
                return 0;
@@ -259,7 +259,7 @@
        m->type = Q_TRANS;
        m->last = NULL;
        if (mvc_debug)
-               fprintf(stderr, "mvc_commit %s done\n", (name) ? name : "");
+               fprintf(stderr, "#mvc_commit %s done\n", (name) ? name : "");
        return ok;
 }
 
@@ -270,7 +270,7 @@
        sql_trans *tr = m->session->tr;
 
        if (mvc_debug)
-               fprintf(stderr, "mvc_rollback %s\n", (name) ? name : "");
+               fprintf(stderr, "#mvc_rollback %s\n", (name) ? name : "");
 
        assert(tr);
        assert(m->session->active);     /* only abort an active transaction */
@@ -318,7 +318,7 @@
        m->type = Q_TRANS;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to