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

Reply via email to