Update of /cvsroot/monetdb/MonetDB5/src/optimizer
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv9628/optimizer
Modified Files:
opt_replicator.mx
Log Message:
Fixes
Index: opt_replicator.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/optimizer/opt_replicator.mx,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- opt_replicator.mx 5 Feb 2008 12:52:45 -0000 1.7
+++ opt_replicator.mx 5 Feb 2008 20:47:28 -0000 1.8
@@ -158,11 +158,13 @@
static int
OPTreplicatorImplementation(MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
- int i, actions=0;
+ int i, actions=0, si;
InstrPtr *old;
int limit,slimit;
sht v,v1;
sht *ps, *pt, *pc ;
+ ValPtr sv;
+
(void) stk;
ps= (sht*) alloca(sizeof(sht)* mb->vtop); /* bind schema */
@@ -190,9 +192,15 @@
getFunctionId(p) == selectRef
) && pc[getArg(p,1)]){
v1 = getArg(p,1);
- p= pushArgument(mb,p,ps[v1]);
+ sv = VALnew();
+ VALcopy(sv,&getVar(mb,ps[v1])->value);
+ si = defConstant(mb, TYPE_str, sv);
+ p= pushArgument(mb,p,si);
+
p= pushArgument(mb,p,pt[v1]);
- p= pushArgument(mb,p,pc[v1]);
+ p= pushArgument(mb,p,pc[v1]);
+
+
setModuleId(p,replicatorRef);
pushInstruction(mb,p);
} else
@@ -217,7 +225,7 @@
str
REPuselect(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int *ret, *bid;
+ int *ret, *bid, tpe;
ptr low,hgh;
bit t=TRUE,*li=&t,*hi=&t;
BAT *b,*bn;
@@ -226,14 +234,15 @@
sht argcnt = pci->argc;
(void) mb;
- ret= (int*) getArgReference(stk, pci,0);
- bid= (int*) getArgReference(stk, pci,1);
- low= (ptr) getArgReference(stk, pci,2);
- if( argcnt>=7)
- hgh= (ptr) getArgReference(stk, pci,3);
- if( argcnt==9){
- li= (bit*) getArgReference(stk, pci,4);
- hi= (bit*) getArgReference(stk, pci,5);
+ ret= (int*) getArgReference(stk,pci,0);
+ bid= (int*) getArgReference(stk,pci,1);
+ low= (ptr) getArgReference(stk,pci,2);
+ if( argcnt >= 7)
+ hgh = (ptr) getArgReference(stk,pci,3);
+ else hgh = 0;
+ if( argcnt == 9){
+ li= (bit*) getArgReference(stk,pci,4);
+ hi= (bit*) getArgReference(stk,pci,5);
}
@@ -241,13 +250,13 @@
throw(MAL, "REPuselect", "Cannot access descriptor");
}
- {int _tpe= ATOMstorage(b->ttype);
- if( _tpe == TYPE_str || _tpe > TYPE_str ){
+ tpe= ATOMstorage(b->T->type);
+ if( tpe == TYPE_str || tpe > TYPE_str ){
if(low== 0 || *(str*)low==0) low = (str)str_nil;
else low = *(str *)low;
if(hgh== 0 || *(str*)hgh==0) hgh = (str)str_nil;
else hgh = *(str *)hgh;
- }}
+ }
clk= GDKusec();
bn = BAT_select_(b, low, hgh, *li, *hi, FALSE, FALSE);
@@ -272,8 +281,10 @@
r->tname = GDKstrdup((str) getArgReference(stk, pci,argcnt-2));
r->cname = GDKstrdup((str) getArgReference(stk, pci,argcnt-1));
- VALset(&r->low,b->ttype,(ValPtr) low);
- VALset(&r->hgh,b->ttype,(ValPtr) hgh);
+ VALset(&r->low,tpe, low);
+ if( hgh == 0)
+ VALset(&r->hgh,tpe, ATOMnilptr(tpe));
+ else VALset(&r->hgh,tpe, hgh);
r->li = *li;
r->hi = *hi;
r->cnt = cnt;
@@ -293,7 +304,7 @@
str
REPselect(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int *ret, *bid;
+ int *ret, *bid, tpe;
ptr low,hgh;
bit t=TRUE,*li=&t,*hi=&t;
BAT *b,*bn;
@@ -306,8 +317,10 @@
ret= (int*) getArgReference(stk, pci,0);
bid= (int*) getArgReference(stk, pci,1);
low= (ptr) getArgReference(stk, pci,2);
- if( argcnt>=7)
- hgh= (ptr) getArgReference(stk, pci,3);
+ if( argcnt >= 7)
+ hgh = (ptr) getArgReference(stk,pci,3);
+ else hgh = 0;
+
if( argcnt==9){
li= (bit*) getArgReference(stk, pci,4);
hi= (bit*) getArgReference(stk, pci,5);
@@ -318,13 +331,13 @@
throw(MAL, "REPselect", "Cannot access descriptor");
}
- {int _tpe= ATOMstorage(b->ttype);
- if( _tpe == TYPE_str || _tpe > TYPE_str ){
- if(low== 0 || *(str*)low==0) low = (str)str_nil;
- else low = *(str *)low;
- if(hgh== 0 || *(str*)hgh==0) hgh = (str)str_nil;
- else hgh = *(str *)hgh;
- }}
+ tpe= ATOMstorage(b->T->type);
+ if( tpe == TYPE_str || tpe > TYPE_str ){
+ if(low== 0 || *(str*)low==0) low = (str)str_nil;
+ else low = *(str *)low;
+ if(hgh== 0 || *(str*)hgh==0) hgh = (str)str_nil;
+ else hgh = *(str *)hgh;
+ }
clk= GDKusec();
bn = BAT_select_(b, low, hgh, *li, *hi, TRUE, FALSE);
@@ -348,9 +361,11 @@
r->sname = GDKstrdup((str) getArgReference(stk, pci,argcnt-3));
r->tname = GDKstrdup((str) getArgReference(stk, pci,argcnt-2));
r->cname = GDKstrdup((str) getArgReference(stk, pci,argcnt-1));
-
- VALset(&r->low,b->ttype,(ValPtr) low);
- VALset(&r->hgh,b->ttype,(ValPtr) hgh);
+
+ VALset(&r->low,tpe, low);
+ if( hgh == 0)
+ VALset(&r->hgh,tpe, ATOMnilptr(tpe));
+ else VALset(&r->hgh,tpe, hgh);
r->li = *li;
r->hi = *hi;
r->cnt = cnt;
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins