Changeset: 4aef0f140fed for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4aef0f140fed
Modified Files:
        sql/backends/monet5/datacell/basket.mx
        sql/backends/monet5/datacell/datacell.mx
        sql/backends/monet5/datacell/petrinet.mx
Branch: default
Log Message:

Switch to schema.table convention
Events are handled, but only partially appear in the emitter basket yet.


diffs (truncated from 1039 to 300 lines):

diff --git a/sql/backends/monet5/datacell/basket.mx 
b/sql/backends/monet5/datacell/basket.mx
--- a/sql/backends/monet5/datacell/basket.mx
+++ b/sql/backends/monet5/datacell/basket.mx
@@ -24,27 +24,27 @@
 @mal
 module basket;
 
-pattern register(schema:str,tab:str):void
+pattern register(tab:str):void
 address BSKTregister
 comment "Initialize a new basket based on a specific table definition in the 
datacell schema");
 
-command lock{unsafe}(schema:str, tbl:str,delay:int):void
+command lock{unsafe}(tbl:str,delay:int):void
 address BSKTlock
 comment "Lock a basket group and spinlock upon need";
 
-command lock{unsafe}(schema:str, tbl:str):void
+command lock{unsafe}(tbl:str):void
 address BSKTlock2
 comment "Lock a basket group ";
 
-command unlock{unsafe}(schema:str, tbl:str):void
+command unlock{unsafe}(tbl:str):void
 address BSKTunlock
 comment "Unlock the basket";
 
-pattern grab(schema:str, tbl:str, flg:int):bat[:oid,:any]...
+pattern grab(tbl:str, flg:int):bat[:oid,:any]...
 address BSKTgrab
 comment "Take a snapshot of the basket, destroying the origin when flg is set";
 
-command drop(schema:str, tbl:str):void
+command drop(tbl:str):void
 address BSKTdrop
 comment "Remove the basket";
 
@@ -78,7 +78,6 @@
 
 typedef struct{
        MT_Lock lock;
-       str schema;     /* lives in the datacell schema by default */
        str name;       /* table that represents the basket */
        int colcount;
        str *cols;
@@ -88,22 +87,25 @@
 
 datacell_export str schema_default;
 datacell_export str BSKTregister(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
-datacell_export str BSKTnewbasket(sql_schema *s, sql_table *t, sql_trans *tr);
-datacell_export str BSKTdrop(int *ret, str *sch, str *tbl);
+datacell_export str BSKTdrop(int *ret, str *tbl);
 datacell_export str BSKTinventory(int *ret);
-datacell_export int BSKTmemberCount(str schema, str tbl);
-datacell_export int BSKTlocate(str schema, str tbl);
+datacell_export int BSKTmemberCount(str tbl);
+datacell_export int BSKTlocate(str tbl);
 datacell_export str BSKTdump(int *ret);
 datacell_export str BSKTgrab(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 
-datacell_export str BSKTlock(int *ret, str *schema, str *tbl, int *delay);
-datacell_export str BSKTunlock(int *ret, str *schema, str *tbl);
-datacell_export str BSKTlock2(int *ret, str *schema, str *tbl);
+datacell_export str BSKTlock(int *ret, str *tbl, int *delay);
+datacell_export str BSKTunlock(int *ret, str *tbl);
+datacell_export str BSKTlock2(int *ret, str *tbl);
+
+datacell_export str BSKTnewbasket(sql_schema *s, sql_table *t, sql_trans *tr);
+datacell_export void BSKTelements(str nme, str buf, str *schema, str *tbl);
+datacell_export InstrPtr BSKTgrabInstruction(MalBlkPtr mb, str tbl);
+datacell_export void BSKTtolower(char *src);
 
 datacell_export BSKTbasketRec *baskets;
 datacell_export int bsktTop, bsktLimit;
 datacell_export lng usec(void);
-datacell_export InstrPtr BSKTgrabInstruction(MalBlkPtr mb, str shema, str tbl);
 #endif
 @c
 #include "basket.h"
@@ -134,11 +136,27 @@
 }
 @c
 
+/* assume BUFSIZ buffer space */
+void
+BSKTelements(str nme, str buf, str *schema, str *tbl)
+{
+       char *c;
+       strncpy(buf,nme, BUFSIZ);
+       buf[BUFSIZ-1]= 0;
+       c = strchr(buf,(int) '.');
+       if ( c == 0) 
+               snprintf(buf,BUFSIZ,"datacell.%s",nme);
+       c = strchr(buf,(int) '.');
+       *schema = buf;
+       *c++ = 0;
+       *tbl = c;
+}
+
 static int BSKTnewEntry()
 {
        int i;
        for ( i=1; i< bsktLimit; i++)
-       if (baskets[i].schema == NULL)
+       if (baskets[i].name == NULL)
                break;
        if ( i < bsktLimit) {
                if ( i == bsktTop)
@@ -157,26 +175,25 @@
        return bsktTop++;
 }
 
-static void
-BSKTtolower(char *dst, const char *src)
+void
+BSKTtolower(char *src)
 {
        int i;
        for( i=0; i < BUFSIZ-1 && src[i]; i++)
-               dst[i] = (char) tolower((int)src[i]);
-       dst[i] = 0;
+               src[i] = (char) tolower((int)src[i]);
 }
+
 int
-BSKTlocate(str schema, str tbl)
+BSKTlocate(str tbl)
 {
        int i;
-       char lsch[BUFSIZ], ltbl[BUFSIZ];
+       char buf[BUFSIZ];
 
-       BSKTtolower(lsch,schema);
-       BSKTtolower(ltbl,tbl);
+       strncpy(buf,tbl,BUFSIZ);
+       BSKTtolower(buf);
 
        for (i = 1; i < bsktTop; i++)
-               if (tbl && baskets[i].name && strcmp(ltbl, baskets[i].name) == 
0 &&
-                       (schema == 0 || (baskets[i].schema && strcmp(lsch, 
baskets[i].schema) == 0)))
+               if (tbl && baskets[i].name && strcmp(tbl, baskets[i].name) == 0 
)
                        return i;
        return 0;
 }
@@ -189,13 +206,14 @@
        str msg = MAL_SUCCEED;;
        BAT *b;
        sql_column  *c;
+       char buf[BUFSIZ];
 
        mal_set_lock(mal_contextLock, "register");
        idx = BSKTnewEntry();
        MT_lock_init(&baskets[idx].lock, "register");
 
-       baskets[idx].schema = GDKstrdup(s->base.name);
-       baskets[idx].name = GDKstrdup(t->base.name);
+       snprintf(buf,BUFSIZ,"%s.%s",s->base.name, t->base.name);
+       baskets[idx].name = GDKstrdup(buf);
 
        baskets[idx].colcount = 0;
        for (o = t->columns.set->h; o; o = o->next) baskets[idx].colcount++;
@@ -231,15 +249,19 @@
        mvc *m = NULL;
        str msg = getContext(cntxt, mb, &m, NULL);
        sql_trans *tr;
-       char lsch[BUFSIZ];
-       char ltbl[BUFSIZ];
+       char buf[BUFSIZ], *lsch, *ltbl;
+       str tbl;
+
+       BSKTelements( tbl = *(str*) getArgReference(stk,pci,1), buf, &lsch, 
&ltbl);
+       BSKTtolower(lsch);
+       BSKTtolower(ltbl);
+       
 
        if (msg != MAL_SUCCEED)
                return msg;
-       BSKTtolower(lsch,*(str*)getArgReference(stk, pci, 1));
+
        tr = m->session->tr;
        s = mvc_bind_schema(m, lsch);
-       BSKTtolower(ltbl, *(str*)getArgReference(stk, pci, 2));
        if (s == NULL)
                throw(SQL, "datacell.register", "Schema missing");
 
@@ -248,15 +270,15 @@
                throw(SQL, "datacell.register", "Table missing");
 
        /* check double registration */
-       if (BSKTlocate(lsch, ltbl))
+       if (BSKTlocate(tbl))
                throw(SQL, "datacell.register", "Basket defined twice.");
 
        return BSKTnewbasket(s, t, tr);
 }
 
-int BSKTmemberCount(str schema, str tbl)
+int BSKTmemberCount(str tbl)
 {
-       int idx = BSKTlocate(schema, tbl);
+       int idx = BSKTlocate(tbl);
        return baskets[idx].colcount;
 }
 
@@ -264,11 +286,11 @@
 The locks are designated towards the baskets.
 If you can not grab the lock then we have to wait.
 @c
-str BSKTlock(int *ret, str *schema, str *tbl, int *delay)
+str BSKTlock(int *ret, str *tbl, int *delay)
 {
        int bskt;
 
-       bskt = BSKTlocate(*schema, *tbl);
+       bskt = BSKTlocate(*tbl);
        if (bskt == 0)
                throw(MAL, "basket.lock", "Could not find the basket");
 #ifdef _DEBUG_BASKET
@@ -284,17 +306,17 @@
 }
 
 
-str BSKTlock2(int *ret, str *schema, str *tbl)
+str BSKTlock2(int *ret, str *tbl)
 {
        int delay = 0;
-       return BSKTlock(ret, schema, tbl, &delay);
+       return BSKTlock(ret, tbl, &delay);
 }
 
-str BSKTunlock(int *ret, str *schema, str *tbl)
+str BSKTunlock(int *ret, str *tbl)
 {
        int bskt;
 
-       bskt = BSKTlocate(*schema, *tbl);
+       bskt = BSKTlocate(*tbl);
        if (bskt == 0)
                throw(MAL, "basket.lock", "Could not find the basket");
        mal_unset_lock(baskets[bskt].lock, "lock basket");
@@ -304,19 +326,17 @@
 
 
 str
-BSKTdrop(int *ret, str *schema, str *tbl)
+BSKTdrop(int *ret, str *tbl)
 {
        int bskt;
 
-       bskt = BSKTlocate(*schema, *tbl);
+       bskt = BSKTlocate(*tbl);
        if (bskt == 0)
                throw(MAL, "basket.drop", "Could not find the basket");
        baskets[bskt].colcount = 0;
-       GDKfree(baskets[bskt].schema);
        GDKfree(baskets[bskt].name);
        GDKfree(baskets[bskt].cols);
        GDKfree(baskets[bskt].primary);
-       baskets[bskt].schema = 0;
        baskets[bskt].name = 0;
        baskets[bskt].cols = 0;
        baskets[bskt].primary = 0;
@@ -331,9 +351,8 @@
        int bskt;
 
        for ( bskt = 0; bskt < bsktLimit; bskt++) 
-       if ( baskets[bskt].schema){
-               mnstr_printf(GDKout, "#baskets[%2d] %s.%s columns %d events " 
BUNFMT "\n", bskt,
-                       baskets[bskt].schema,
+       if ( baskets[bskt].name){
+               mnstr_printf(GDKout, "#baskets[%2d] %s columns %d events " 
BUNFMT "\n", bskt,
                        baskets[bskt].name,
                        baskets[bskt].colcount,
                        (baskets[bskt].primary[0]? 
BATcount(baskets[bskt].primary[0]): 0));
@@ -345,16 +364,16 @@
 str
 BSKTgrab(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       str schema, tbl;
-       int bskt, i, *ret;
+       str tbl;
+       int bskt, i, *ret, flg;
        BAT *b;
 
        (void) cntxt;
        (void) mb;
-       schema = *(str*) getArgReference(stk,pci, pci->argc-3);
        tbl = *(str*) getArgReference(stk,pci, pci->argc-2);
+       flg = *(int*) getArgReference(stk,pci, pci->argc-1);
 
-       bskt = BSKTlocate(schema, tbl);
+       bskt = BSKTlocate(tbl);
        if (bskt == 0 )
                throw(MAL,"basket.grab","Basket not found");
        if ( baskets[bskt].colcount != pci->retc)
@@ -364,25 +383,28 @@
                ret= (int*) getArgReference(stk,pci,i);
                b = baskets[bskt].primary[i];
                *ret = b->batCacheid;
+               BBPfix(*ret);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to