Changeset: 05a7831b81f5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=05a7831b81f5
Modified Files:
        sql/backends/monet5/iot/basket.c
Branch: iot
Log Message:

First append


diffs (91 lines):

diff --git a/sql/backends/monet5/iot/basket.c b/sql/backends/monet5/iot/basket.c
--- a/sql/backends/monet5/iot/basket.c
+++ b/sql/backends/monet5/iot/basket.c
@@ -101,7 +101,7 @@ BSKTnewbasket(sql_schema *s, sql_table *
        // Don't introduce the same basket twice
        if( BSKTlocate(s->base.name, t->base.name) > 0)
                return MAL_SUCCEED;
-       MT_lock_set(&iotLock);
+       //MT_lock_set(&iotLock);
        idx = BSKTnewEntry();
        MT_lock_init(&baskets[idx].lock,"newbasket");
 
@@ -128,7 +128,7 @@ BSKTnewbasket(sql_schema *s, sql_table *
 
        baskets[idx].schema = s;
        baskets[idx].table = t;
-       MT_lock_unset(&iotLock);
+       //MT_lock_unset(&iotLock);
        return MAL_SUCCEED;
 }
 
@@ -186,11 +186,7 @@ BSKTbind(Client cntxt, MalBlkPtr mb, Mal
        str msg;
 
        (void) mb;
-
        *ret = 0;
-       idx= BSKTlocate(sch,tbl);
-       if (idx <= 0)
-               throw(SQL,"iot.bind","Stream table '%s.%s' not 
registered",sch,tbl);
 
        msg= getSQLContext(cntxt,NULL, &m, NULL);
        if( msg != MAL_SUCCEED)
@@ -201,6 +197,13 @@ BSKTbind(Client cntxt, MalBlkPtr mb, Mal
        if ( t)
                c= mvc_bind_column(m, t, col);
 
+       idx= BSKTlocate(sch,tbl);
+       if (idx <= 0){
+               msg=  BSKTnewbasket(s, t);
+               if ( msg != MAL_SUCCEED)
+                       return msg;
+       }
+
        if( c){
                b = store_funcs.bind_col(m->session->tr,c,RD_UPD_VAL);
                if( b)
@@ -376,10 +379,40 @@ BSKTdump(void *ret)
 str
 BSKTappend(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       (void) cntxt;
+    str sch = *getArgReference_str(stk, pci, 2);
+    str tbl = *getArgReference_str(stk, pci, 3);
+    str col = *getArgReference_str(stk, pci, 4);
+    void *val = (void*) getArgReference(stk, pci, 5);
+    int idx;
+       BAT *b;
+       mvc *m = NULL;
+       str msg = MAL_SUCCEED;
+       sql_schema *s = NULL;
+       sql_table *t = NULL;
+       sql_column *c = NULL;
+
+       idx= BSKTlocate(sch,tbl);
+       if (idx <= 0)
+               throw(SQL,"iot.bind","Stream table '%s.%s' not 
registered",sch,tbl);
+
+       msg = getSQLContext(cntxt, 0, &m, NULL);
+       if ( msg != MAL_SUCCEED)
+               throw(SQL, "basket.append", "Unknown SQL context");
+
+       s= mvc_bind_schema(m, sch);
+       if ( s)
+               t= mvc_bind_table(m, s, tbl);
+       if ( t)
+               c= mvc_bind_column(m, t, col);
+
+       if( c){
+               b = store_funcs.bind_col(m->session->tr,c,RD_UPD_VAL);
+               if( b){
+                       BUNappend(b, val, FALSE);
+                       BBPunfix(b->batCacheid);
+               }
+       } else throw(SQL,"basket.append","Stream column %s.%s.%s not 
accessible\n",sch,tbl,col);
        (void) mb;
-       (void) stk;
-       (void) pci;
        return MAL_SUCCEED;
 }
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to