Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory 
sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv1972/src/backends/monet5

Modified Files:
        sql.mx sql_gencode.mx sql_optimizer.mx 
Log Message:

A sequence of group new and derives is now closed with a group.done (does
the last step ie a group.new or derive).
This makes the code in merge table a bit cleaner (more could be done later)

sql.bind and append/update/delete now have an extra (first) argument,
making them safe to use in the dataflow (ie solved using variable dependencies)
(BREAKS octopus !)

Implemented read only tables. Use 
ALTER TABLE x SET READ ONLY; 
(cannot be reverted currently)

fixed bug in limit/offset handling, now we have 64 bit wrd instead of int.

The new read only required schema changes, ie backup/restore your db.
We therefor claimed some more oid's for internal functions.



Index: sql_gencode.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_gencode.mx,v
retrieving revision 1.356
retrieving revision 1.357
diff -u -d -r1.356 -r1.357
--- sql_gencode.mx      10 Feb 2010 22:40:11 -0000      1.356
+++ sql_gencode.mx      27 Feb 2010 19:27:45 -0000      1.357
@@ -632,6 +632,7 @@
                        q = newStmt2(mb, sqlRef, bindRef);
                        setVarType(mb, getArg(q, 0), newBatType(ht, tt));
                        setVarUDFtype(mb,getArg(q,0));
+                       q = pushArgument(mb, q, sql->mvc_var); 
                        q = pushSchema(mb, q, s->op1.cval->t);
                        q = pushStr(mb, q, s->op1.cval->t->base.name);
                        q = pushStr(mb, q, s->op1.cval->base.name);
@@ -641,9 +642,11 @@
                        break;
                case st_dbat:{
                        int ht = TYPE_oid;
+
                        q = newStmt2(mb, sqlRef, binddbatRef);
                        setVarType(mb, getArg(q,0), newBatType(ht,TYPE_oid));
                        setVarUDFtype(mb,getArg(q,0));
+                       q = pushArgument(mb, q, sql->mvc_var); 
                        q = pushSchema(mb, q, s->op1.tval);
                        q = pushStr(mb, q, s->op1.tval->base.name);
                        q = pushInt(mb, q, s->flag);
@@ -658,6 +661,7 @@
                        tt = tail_type(s)->type->localtype;
                        setVarType(mb, getArg(q, 0), newBatType(ht, tt));
                        setVarUDFtype(mb,getArg(q,0));
+                       q = pushArgument(mb, q, sql->mvc_var); 
                        q = pushSchema(mb, q, s->op1.idxval->t);
                        q = pushStr(mb, q, s->op1.idxval->t->base.name);
                        q = pushStr(mb, q, s->op1.idxval->base.name);
@@ -1191,7 +1195,7 @@
                        char *nme = GDKmalloc(SMALLBUFSIZ);
                        int ext, grp, o1 = _dumpstmt(sql, mb, s->op1.stval);
 
-                       q = newStmt2(mb, groupRef, newRef);
+                       q = newStmt2(mb, groupRef, 
s->flag&GRP_DONE?doneRef:newRef);
                        ext = getDestVar(q);
                        snprintf(nme, SMALLBUFSIZ, "grp%d", getDestVar(q));
                        q = pushReturn(mb, q, newVariable(mb, nme, TYPE_any));
@@ -1226,7 +1230,7 @@
                        int g = _dumpstmt(sql, mb, s->op1.stval);
                        int l = _dumpstmt(sql, mb, s->op2.stval);
 
-                       q = newStmt2(mb, groupRef, deriveRef);
+                       q = newStmt2(mb, groupRef, 
s->flag&GRP_DONE?doneRef:deriveRef);
                        ext = getDestVar(q);
                        snprintf(nme, SMALLBUFSIZ, "grp%d", getDestVar(q));
                        q = pushReturn(mb, q, newVariable(mb, nme, TYPE_any));
@@ -1554,43 +1558,46 @@
                } break;
                case st_update_col:
                case st_append_col:{
-                       int l = 0;
                        int r = _dumpstmt(sql, mb, s->op2.stval);
                        sql_column *c = s->op1.cval;
                        char *n = (s->type==st_append_col)?appendRef:updateRef;
 
                        q = newStmt2(mb, sqlRef, n);
+                       getArg(q, 0) = sql->mvc_var;
+                       q = pushArgument(mb, q, sql->mvc_var); 
                        q = pushSchema(mb, q, c->t);
                        q = pushStr(mb, q, c->t->base.name);
                        q = pushStr(mb, q, c->base.name);
                        q = pushArgument(mb, q, r);
-                       s->nr = l;
+                       sql->mvc_var = s->nr = getDestVar(q);
                } break;
 
                case st_update_idx:
                case st_append_idx:{
-                       int l = 0;
                        int r = _dumpstmt(sql, mb, s->op2.stval);
                        sql_idx *i = s->op1.idxval; 
                        char *n = (s->type==st_append_idx)?appendRef:updateRef;
 
                        q = newStmt2(mb, sqlRef, n);
+                       getArg(q, 0) = sql->mvc_var;
+                       q = pushArgument(mb, q, sql->mvc_var); 
                        q = pushSchema(mb, q, i->t);
                        q = pushStr(mb, q, i->t->base.name);
                        q = pushStr(mb, q, i->base.name);
                        q = pushArgument(mb, q, r);
-                       s->nr = l;
+                       sql->mvc_var = s->nr = getDestVar(q);
                } break;
                case st_delete:{
-                       int l = 0;
                        int r = _dumpstmt(sql, mb, s->op2.stval);
                        sql_table *t = s->op1.tval;
 
                        q = newStmt1(mb, sqlRef, "delete");
+                       getArg(q, 0) = sql->mvc_var;
+                       q = pushArgument(mb, q, sql->mvc_var); 
                        q = pushSchema(mb, q, t);
                        q = pushStr(mb, q, t->base.name);
                        q = pushArgument(mb, q, r);
-                       s->nr = l;
+                       sql->mvc_var = s->nr = getDestVar(q);
                } break;
                case st_table_clear:{
                        sql_table *t = s->op1.tval;
@@ -1981,11 +1988,15 @@
 {
        mvc *c = be->mvc;
        InstrPtr q;
+       int old_mv = be->mvc_var;
 
        /* announce the transaction mode */
        if ( c->session->auto_commit)
                setCommitProperty(mb);
+       q = newStmt1(mb, sqlRef, "mvc");
+       be->mvc_var = getDestVar(q);
        (void)_dumpstmt(be, mb, s);
+       be->mvc_var = old_mv;
        if (c->cache && (c->type == Q_SCHEMA || c->type == Q_TRANS)) {
                q = newStmt2(mb, sqlRef, exportOperationRef);
                q = pushStr(mb, q, ""); /* warning */
@@ -2263,7 +2274,7 @@
                InstrPtr p = getInstrPtr(curBlk,i);
                if ( getFunctionId(p)== bindRef || getFunctionId(p)== 
bindidxRef)
                        continue;
-               sideeffects = sideeffects || hasSideEffects(p,FALSE) || 
isUpdateInstruction(p);
+               sideeffects = sideeffects || hasSideEffects(p,FALSE) || 
(getModuleId(p) != sqlRef && isUpdateInstruction(p));
                if ( p->token == RETURNsymbol || p->token == YIELDsymbol ||
                     p->barrier == RETURNsymbol || p->barrier == YIELDsymbol)
                        retseen++;

Index: sql_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_optimizer.mx,v
retrieving revision 1.243
retrieving revision 1.244
diff -u -d -r1.243 -r1.244
--- sql_optimizer.mx    10 Jan 2010 15:33:33 -0000      1.243
+++ sql_optimizer.mx    27 Feb 2010 19:27:47 -0000      1.244
@@ -320,8 +320,8 @@
                    (f == bindRef || f == bindidxRef || f == binddbatRef ) ){
                        ValRecord vr;
                        InstrPtr q;
-                       char *sname = getVarConstant(mb, getArg(p,1)).val.sval;
-                       char *tname = getVarConstant(mb, getArg(p,2)).val.sval;
+                       char *sname = getVarConstant(mb, getArg(p,2)).val.sval;
+                       char *tname = getVarConstant(mb, getArg(p,3)).val.sval;
                        char *cname = NULL;
                        int not_null = 0;
                        oid rows = 1; /* default to cope with delta bats */
@@ -336,10 +336,10 @@
                                continue;
                        }
                        if (f == binddbatRef) {
-                               mode = getVarConstant(mb, getArg(p,3)).val.ival;
-                       } else {
-                               cname = getVarConstant(mb, 
getArg(p,3)).val.sval;
                                mode = getVarConstant(mb, getArg(p,4)).val.ival;
+                       } else {
+                               cname = getVarConstant(mb, 
getArg(p,4)).val.sval;
+                               mode = getVarConstant(mb, getArg(p,5)).val.ival;
                        }
 
 

Index: sql.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql.mx,v
retrieving revision 1.403
retrieving revision 1.404
diff -u -d -r1.403 -r1.404
--- sql.mx      26 Feb 2010 20:37:56 -0000      1.403
+++ sql.mx      27 Feb 2010 19:27:40 -0000      1.404
@@ -40,6 +40,10 @@
 address SQLinitEnvironment
 comment "Initialize the environment for MAL";
 
+pattern mvc():ptr
+address SQLmvc
+comment "get the multiversion catalog context, needed for correct statement 
dependencies (ie sql.update, should be after sql.bind in concurrent execution)";
+
 pattern trans(type:int,chain:int,name:str):void
 address SQLtransaction
 comment "a transaction statement (type can be commit,release,rollback or 
start)";
@@ -121,7 +125,7 @@
 address mvc_restart_seq
 comment "restart the sequence with value start";
 
-pattern bind_dbat(schema:str, table:str, access:int):bat[:oid,:oid]
+pattern bind_dbat(mvc:ptr, schema:str, table:str, access:int):bat[:oid,:oid]
 address mvc_bind_dbat_wrap
 comment "Bind to 'schema.table' BAT with deleted objecs
 and with specific access kind:
@@ -129,28 +133,28 @@
        1 - inserts
        2 - updates";
 
-pattern bind_idxbat(schema:str, table:str, index:str, 
access:int):bat[:oid,:any_1]
+pattern bind_idxbat(mvc:ptr, schema:str, table:str, index:str, 
access:int):bat[:oid,: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_idxbat(schema:str, table:str, index:str, access:int, low:oid, 
hgh:oid):bat[:oid,:any_1]
+pattern bind_idxbat(mvc:ptr, schema:str, table:str, index:str, access:int, 
low:oid, hgh:oid):bat[:oid,: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(schema:str, table:str, column:str, access:int ):bat[:oid,:any_1]
+pattern bind(mvc:ptr, schema:str, table:str, column:str, access:int 
):bat[:oid,:any_1]
 address mvc_bind_wrap
 comment "Bind the 'schema.table.column' BAT with access kind:
        0 - base table
        1 - inserts
        2 - updates";
 
-pattern bind(schema:str, table:str, column:str, access:int, low:oid, hgh:oid 
):bat[:oid,:any_1]
+pattern bind(mvc:ptr, schema:str, table:str, column:str, access:int, low:oid, 
hgh:oid ):bat[:oid,:any_1]
 address mvc_bind_wrap
 comment "Bind the 'schema.table.column' BAT partition with access kind:
        0 - base table
@@ -169,19 +173,19 @@
 address mvc_getVersion
 comment "Return the database version identifier for a client";
 
-pattern append{unsafe}(sname:str, tname:str, cname:str, ins:any ):void
+pattern append(mvc:ptr, sname:str, tname:str, cname:str, ins:any):ptr
 address mvc_append_wrap
-comment "Append b to the column tname.cname (possibly optimized to replace the 
insert bat of tname.cname";
+comment "Append b to the column tname.cname (possibly optimized to replace the 
insert bat of tname.cname (returns sequence number for order dependence)";
 
-pattern update{unsafe}(sname:str, tname:str, cname:str, ins:any ):void
+pattern update(mvc:ptr, sname:str, tname:str, cname:str, ins:any):ptr
 address mvc_update_wrap
-comment "Append b to the column tname.cname (possibly optimized to replace the 
insert bat of tname.cname";
+comment "Append b to the column tname.cname (possibly optimized to replace the 
insert bat of tname.cname (returns sequence number for order dependence)";
 
 pattern clear_table{unsafe}(sname:str, tname:str) :wrd
 address mvc_clear_table_wrap
 comment "Clear table";
 
-pattern delete{unsafe}(sname:str, tname:str, b:any) :void 
+pattern delete(mvc:ptr, sname:str, tname:str, b:any):ptr 
 address mvc_delete_wrap
 comment "delete from table";
 
@@ -824,19 +828,20 @@
 It should be cast into a more efficient C procedure, which also
 takes care of NAS opportunities.
 @mal
-function octopus.bind(sch:str, tab:str,col:str,kind:int, 
+function octopus.bind(mvc:ptr, sch:str, tab:str,col:str,kind:int, 
 low:oid, hgh:oid, version:int):bat[:oid,:any_1];
-       b:bat[:oid,:any_1]:= sql.bind(sch,tab,col,kind,low,hgh);
+       b:bat[:oid,:any_1]:= sql.bind(mvc,sch,tab,col,kind,low,hgh);
        return bind:= b;
 end bind;
 
-function octopus.bind(sch:str, tab:str,col:str,kind:int, 
version:int):bat[:oid,:any_1];
-       b:bat[:oid,:any_1]:= sql.bind(sch,tab,col,kind);
+function octopus.bind(mvc:ptr, sch:str, tab:str,col:str,kind:int, 
version:int):bat[:oid,:any_1];
+       b:bat[:oid,:any_1]:= sql.bind(mvc,sch,tab,col,kind);
        return bind:= b;
 end bind;
 
-function octopus.bind(conn:str, sch:str, tab:str,col:str,kind:int, 
+function octopus.bind(conn:str, mvc:ptr, sch:str, tab:str,col:str,kind:int, 
 low:oid, hgh:oid, version:int):bat[:oid,:any_1];
+       m := remote.exec(conn,"sql","mvc");
        s := remote.put(conn,sch);
        t := remote.put(conn,tab);
        c := remote.put(conn,col);
@@ -845,51 +850,54 @@
        l := remote.put(conn,low);
        h := remote.put(conn,hgh);
        bh:= remote.put(conn,bind);
-       bh:= remote.exec(conn,"sql","bind",s,t,c,k,l,h);
+       bh:= remote.exec(conn,"sql","bind",m,s,t,c,k,l,h);
        b:bat[:oid,:any_1]:= remote.get(conn,bh);
        return bind:= b;
 end octopus.bind;
 
-function octopus.bind(conn:str, sch:str, tab:str,col:str,kind:int, 
+function octopus.bind(conn:str, mvc:ptr, sch:str, tab:str,col:str,kind:int, 
 version:int):bat[:oid,:any_1];
+       m := remote.exec(conn,"sql","mvc");
        s := remote.put(conn,sch);
        t := remote.put(conn,tab);
        c := remote.put(conn,col);
        k := remote.put(conn,kind);
        bh:= remote.put(conn,bind);
-       bh:= remote.exec(conn,"sql","bind",s,t,c,k);
+       bh:= remote.exec(conn,"sql","bind",m,s,t,c,k);
        b:bat[:oid,:any_1]:= remote.get(conn,bh);
        return bind:= b;
 end octopus.bind;
 
-function octopus.bind_dbat(sch:str, tab:str,access:int, 
version:int):bat[:oid,:any_1];
-       b := sql.bind_dbat(sch,tab,access);
+function octopus.bind_dbat(mvc:ptr, sch:str, tab:str,access:int, 
version:int):bat[:oid,:any_1];
+       b := sql.bind_dbat(mvc,sch,tab,access);
        return bind_dbat:= b;
 end octopus.bind_dbat;
 
-function octopus.bind_dbat(conn:str,sch:str, tab:str, access:int, 
version:int):bat[:oid,:oid];
+function octopus.bind_dbat(conn:str, mvc:ptr, sch:str, tab:str, access:int, 
version:int):bat[:oid,:oid];
+       m := remote.exec(conn,"sql","mvc");
        s := remote.put(conn,sch);
        t := remote.put(conn,tab);
        a := remote.put(conn,access);
        bh:= remote.put(conn,bind_dbat);
-       bh:= remote.exec(conn,"sql","bind_dbat",s,t,a);
+       bh:= remote.exec(conn,"sql","bind_dbat",m,s,t,a);
        b:bat[:oid,:oid]:= remote.get(conn,bh);
        
        return bind_dbat:= b;
 end octopus.bind_dbat;
 
-function octopus.bind_idxbat(sch:str, tab:str, index:str, access:int, 
version:int):bat[:oid,:any_1];
-       b := sql.bind_idxbat(sch,tab,index,access);
+function octopus.bind_idxbat(mvc:ptr, sch:str, tab:str, index:str, access:int, 
version:int):bat[:oid,:any_1];
+       b := sql.bind_idxbat(mvc,sch,tab,index,access);
        return bind_idxbat:= b;
 end octopus.bind_idxbat;
 
-function octopus.bind_idxbat(conn:str,sch:str, tab:str, index:str, access:int, 
version:int):bat[:oid,:oid];
+function octopus.bind_idxbat(conn:str, mvc:ptr, sch:str, tab:str, index:str, 
access:int, version:int):bat[:oid,:oid];
+       m := remote.exec(conn,"sql","mvc");
        s := remote.put(conn,sch);
        t := remote.put(conn,tab);
        i := remote.put(conn,index);
        a := remote.put(conn,access);
        bh:= remote.put(conn,bind_idxbat);
-       bh:= remote.exec(conn,"sql","bind_idxbat",s,t,i,a);
+       bh:= remote.exec(conn,"sql","bind_idxbat",m,s,t,i,a);
        b:bat[:oid,:oid]:= remote.get(conn,bh);
        
        return bind_idxbat:= b;
@@ -1010,6 +1018,7 @@
        sql_column *currColumn;
        sql_key *currKey;
        sql_idx *currIndex;
+       int     mvc_var;        
        int     vtop;           /* top of the variable stack before the current 
function */
        cq *q;                  /* pointer to the cached query */
 } backend;
@@ -1025,6 +1034,7 @@
 extern BAT *mvc_bind_dbat(mvc *m, char *sname, char *tname, int access);
 extern BAT *mvc_bind_idxbat(mvc *m, char *sname, char *tname, char *iname, int 
access);
 
+sql5_export str SQLmvc(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 sql5_export str SQLtransaction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str SQLcatalog(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 
@@ -1421,6 +1431,19 @@
 }
 
 str
+SQLmvc(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       mvc *sql = NULL;
+       str msg = getContext(cntxt, mb, &sql, NULL);
+       ptr *res = (ptr*) getArgReference(stk, pci, 0);
+
+       if (msg)
+               return msg;
+       *res = (ptr)sql;
+       return MAL_SUCCEED;
+}
+
+str
 SQLtransaction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        mvc *sql = NULL;
@@ -1576,6 +1599,9 @@
                return sql_message("ALTER TABLE: insufficient privileges for 
user '%s' in schema '%s'", stack_get_string(sql, "current_user"), s->base.name);
        }
 
+       if (t->readonly != nt->readonly) 
+               mvc_readonly( sql, nt, t->readonly);
+
        /* check for changes */
        if (t->columns.dset) for (n = t->columns.dset->h; n; n = n->next) {
                /* propagate alter table .. drop column */
@@ -2238,24 +2264,22 @@
 mvc_bind_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        BAT *b = NULL, *bn;
-       mvc *m = NULL;
-       str msg = getContext(cntxt,mb, &m, NULL);
        int *bid = (int *)getArgReference(stk, pci, 0);
-       str *sname = (str *)getArgReference(stk, pci, 1);
-       str *tname = (str *)getArgReference(stk, pci, 2);
-       str *cname = (str *)getArgReference(stk, pci, 3);
-       int *access = (int *)getArgReference(stk, pci, 4);
+       mvc *m = *(mvc**)getArgReference(stk, pci, 1);
+       str *sname = (str *)getArgReference(stk, pci, 2);
+       str *tname = (str *)getArgReference(stk, pci, 3);
+       str *cname = (str *)getArgReference(stk, pci, 4);
+       int *access = (int *)getArgReference(stk, pci, 5);
        oid lval,hval=0;
 
+       (void) mb;
        (void) cntxt;
-       if (msg)
-               return msg;
        b = mvc_bind(m, *sname, *tname, *cname, *access);
        if (b) {
-               if ( pci->argc == 7){
+               if ( pci->argc == 8){
                        /* partitioned access */
-                       lval = *(oid *)getArgReference(stk, pci, 5);
-                       hval = *(oid *)getArgReference(stk, pci, 6);
+                       lval = *(oid *)getArgReference(stk, pci, 6);
+                       hval = *(oid *)getArgReference(stk, pci, 7);
                        bn =  BATslice(b, lval,hval);
                        BATseqbase(bn, lval);
                        BBPreleaseref(b->batCacheid);
@@ -2273,24 +2297,22 @@
 mvc_bind_idxbat_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        BAT *b = NULL,*bn;
-       mvc *m = NULL;
-       str msg = getContext(cntxt,mb, &m, NULL);
        int *bid = (int *)getArgReference(stk, pci, 0);
-       str *sname = (str *)getArgReference(stk, pci, 1);
-       str *tname = (str *)getArgReference(stk, pci, 2);
-       str *iname = (str *)getArgReference(stk, pci, 3);
-       int *access = (int *)getArgReference(stk, pci, 4);
+       mvc *m = *(mvc**)getArgReference(stk, pci, 1);
+       str *sname = (str *)getArgReference(stk, pci, 2);
+       str *tname = (str *)getArgReference(stk, pci, 3);
+       str *iname = (str *)getArgReference(stk, pci, 4);
+       int *access = (int *)getArgReference(stk, pci, 5);
        oid lval,hval=0;
 
+       (void) mb;
        (void) cntxt;
-       if (msg)
-               return msg;
        b = mvc_bind_idxbat(m, *sname, *tname, *iname, *access);
        if (b) {
-               if ( pci->argc == 7){
+               if ( pci->argc == 8){
                        /* partitioned access */
-                       lval = *(oid *)getArgReference(stk, pci, 5);
-                       hval = *(oid *)getArgReference(stk, pci, 6);
+                       lval = *(oid *)getArgReference(stk, pci, 6);
+                       hval = *(oid *)getArgReference(stk, pci, 7);
                        bn =  BATslice(b, lval,hval);
                        BATseqbase(bn, lval);
                        BBPreleaseref(b->batCacheid);
@@ -2327,22 +2349,20 @@
 str
 mvc_append_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       mvc *m = NULL;
-       str msg = getContext(cntxt,mb, &m, NULL);
-       str sname = *(str *)getArgReference(stk, pci, 1);
-       str tname = *(str *)getArgReference(stk, pci, 2);
-       str cname = *(str *)getArgReference(stk, pci, 3);
-       ptr ins = (ptr)getArgReference(stk, pci, 4);
-       int tpe = getArgType(mb, pci, 4);
-
+       ptr *res = (ptr*)getArgReference(stk, pci, 0);
+       mvc *m = *(mvc**)getArgReference(stk, pci, 1);
+       str sname = *(str *)getArgReference(stk, pci, 2);
+       str tname = *(str *)getArgReference(stk, pci, 3);
+       str cname = *(str *)getArgReference(stk, pci, 4);
+       ptr ins = (ptr)getArgReference(stk, pci, 5);
+       int tpe = getArgType(mb, pci, 5);
        sql_schema *s;
        sql_table *t;
        sql_column *c;
 
+       (void) mb;
        (void) cntxt;
-       if (msg)
-               return msg;
-
+       *res = (ptr)m;
        if (tpe > TYPE_any)
                tpe = TYPE_bat;
        if (tpe == TYPE_bat && (ins = BATdescriptor(*(int*)ins)) == NULL) 
@@ -2376,22 +2396,19 @@
 str
 mvc_update_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       mvc *m = NULL;
-       str msg = getContext(cntxt,mb, &m, NULL);
-       str sname = *(str *)getArgReference(stk, pci, 1);
-       str tname = *(str *)getArgReference(stk, pci, 2);
-       str cname = *(str *)getArgReference(stk, pci, 3);
-       ptr ins = (ptr)getArgReference(stk, pci, 4);
-       int tpe = getArgType(mb, pci, 4);
-
+       ptr *res = (ptr*)getArgReference(stk, pci, 0);
+       mvc *m = *(mvc**)getArgReference(stk, pci, 1);
+       str sname = *(str *)getArgReference(stk, pci, 2);
+       str tname = *(str *)getArgReference(stk, pci, 3);
+       str cname = *(str *)getArgReference(stk, pci, 4);
+       ptr ins = (ptr)getArgReference(stk, pci, 5);
+       int tpe = getArgType(mb, pci, 5);
        sql_schema *s;
        sql_table *t;
        sql_column *c;
 
        (void) cntxt;
-       if (msg)
-               return msg;
-
+       *res = (ptr)m;
        if (tpe > TYPE_any)
                tpe = TYPE_bat;
        if( tpe == TYPE_bat && (ins = BATdescriptor(*(int*)ins)) == NULL) 
@@ -2467,16 +2484,14 @@
 mvc_bind_dbat_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        BAT *b;
-       mvc *m = NULL;
-       str msg = getContext(cntxt,mb, &m, NULL);
        int *ret = (int *)getArgReference(stk, pci, 0);
-       str *sname = (str *)getArgReference(stk, pci, 1);
-       str *tname = (str *)getArgReference(stk, pci, 2);
-       int *access = (int*)getArgReference(stk, pci, 3);
+       mvc *m = *(mvc**)getArgReference(stk, pci, 1);
+       str *sname = (str *)getArgReference(stk, pci, 2);
+       str *tname = (str *)getArgReference(stk, pci, 3);
+       int *access = (int*)getArgReference(stk, pci, 4);
 
+       (void) mb;
        (void) cntxt;
-       if (msg)
-               return msg;
        b = mvc_bind_dbat(m, *sname, *tname, *access);
        if (b) {
                BBPkeepref( *ret = b->batCacheid);
@@ -2534,21 +2549,20 @@
 str
 mvc_delete_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       mvc *m = NULL;
-       str msg = getContext(cntxt,mb, &m, NULL);
-       str sname = *(str *)getArgReference(stk, pci, 1);
-       str tname = *(str *)getArgReference(stk, pci, 2);
-       ptr ins = (ptr)getArgReference(stk, pci, 3);
-       int tpe = getArgType(mb, pci, 3);
+       ptr *res = (ptr*)getArgReference(stk, pci, 0);
+       mvc *m = *(mvc**)getArgReference(stk, pci, 1);
+       str sname = *(str *)getArgReference(stk, pci, 2);
+       str tname = *(str *)getArgReference(stk, pci, 3);
+       ptr ins = (ptr)getArgReference(stk, pci, 4);
+       int tpe = getArgType(mb, pci, 4);
        BAT *b = NULL;
 
        sql_schema *s;
        sql_table *t;
 
+       (void) mb;
        (void) cntxt;
-       if (msg)
-               return msg;
-
+       *res = (ptr)m;
        if (tpe > TYPE_any)
                tpe = TYPE_bat;
        if (tpe == TYPE_bat && (b = BATdescriptor(*(int*)ins)) == NULL) 


------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to