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