Changeset: f33dedca3b86 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f33dedca3b86
Modified Files:
        monetdb5/optimizer/opt_parappend.c
        sql/backends/monet5/sql.c
Branch: copybinary
Log Message:

Also append single values in parallel


diffs (72 lines):

diff --git a/monetdb5/optimizer/opt_parappend.c 
b/monetdb5/optimizer/opt_parappend.c
--- a/monetdb5/optimizer/opt_parappend.c
+++ b/monetdb5/optimizer/opt_parappend.c
@@ -63,7 +63,7 @@ OPTparappendImplementation(Client cntxt,
 
        for (size_t i = 0; i < old_stop; i++) {
                InstrPtr p = old_mb_stmt[i];
-               if (p->modname == sqlRef && p->fcnname == appendRef && 
isaBatType(getArgType(mb, p, 5))) {
+               if (p->modname == sqlRef && p->fcnname == appendRef) {
                        msg = transform(&state, cntxt, mb, p, &actions);
                } else {
                        if (p->barrier != 0 || mayhaveSideEffects(cntxt, mb, p, 
false) || needs_chain_var(&state, p)) {
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
@@ -1783,22 +1783,33 @@ str
 mvc_append_exec_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        (void) cntxt;
-       (void) mb;
-       void *cookie = *getArgReference_ptr(stk, pci, 1);
-       bat batid = *getArgReference_bat(stk, pci, 2);
-
-       BAT *b = BATdescriptor(batid);
-       if (b == NULL)
-               throw(SQL, "sql.append_bat_exec", SQLSTATE(HY005) "Cannot 
access column descriptor");
-       if( b && BATcount(b) > 4096 && !b->batTransient)
-               BATmsync(b);
-
-       int ret = store_funcs.append_col_exec(cookie, b, true);
-
-       BBPunfix(b->batCacheid);
+       int ret;
+       ptr cookie = *getArgReference_ptr(stk, pci, 1);
+       ptr incoming = getArgReference(stk, pci, 2);
+       int incoming_type = getArgType(mb, pci, 2);
+
+       if (incoming_type > GDKatomcnt)
+               incoming_type = TYPE_bat;
+
+       if (incoming_type == TYPE_bat) {
+               bat batid = *(bat*)incoming;
+               BAT *b = BATdescriptor(batid);
+               if (b == NULL)
+                       throw(SQL, "sql.append_bat_exec", SQLSTATE(HY005) 
"Cannot access column descriptor");
+               if (BATcount(b) > 4096 && !b->batTransient)
+                       BATmsync(b);
+
+               ret = store_funcs.append_col_exec(cookie, b, true);
+               BBPunfix(b->batCacheid);
+       } else {
+               if (ATOMextern(incoming_type))
+                       incoming = *(ptr*)incoming;
+
+               ret = store_funcs.append_col_exec(cookie, incoming, false);
+       }
 
        if (ret != LOG_OK)
-               throw(SQL, "sql_append_bat_exec", GDK_EXCEPTION);
+               throw(SQL, "sql_append_exec", GDK_EXCEPTION);
 
        return MAL_SUCCEED;
 }
@@ -5398,7 +5409,7 @@ static mel_func sql_init_funcs[] = {
  pattern("sql", "append_exec", mvc_append_exec_wrap, false, "Perform the 
actual append",
     args(1,3,
                arg("",ptr),
-               arg("cookie",ptr),batargany("ins",1))),
+               arg("cookie",ptr),argany("ins",1))),
 
     // tmp_1, cookie_1 := sql.append_prep(chain_0, s, t, c_1);
     // done_1 := sql.append_exec(cookie_1, bat_1);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to