Changeset: 03e7e6336379 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=03e7e6336379
Modified Files:
        monetdb5/modules/kernel/column.c.mx
Branch: headless
Log Message:

Make replace explicit.
Need to check the force flag properties.


diffs (151 lines):

diff --git a/monetdb5/modules/kernel/column.c.mx 
b/monetdb5/modules/kernel/column.c.mx
--- a/monetdb5/modules/kernel/column.c.mx
+++ b/monetdb5/modules/kernel/column.c.mx
@@ -185,8 +185,58 @@
                throwagain(MAL, "column.replace", msg);
        }
        rbase = (oid*) COLbase(r);
-       COLforloop(r,o)
-               BUNinplace(b,rbase[o], COLget(v,o), FALSE);
+       switch( COLtype(b) ){
+       case TYPE_bit: {
+               bit *lbase= (bit*) COLbase(b);
+               bit *vbase= (bit*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_sht: {
+               sht *lbase= (sht*) COLbase(b);
+               sht *vbase= (sht*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_int: {
+               int *lbase= (int*) COLbase(b);
+               int *vbase= (int*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_lng: {
+               lng *lbase= (lng*) COLbase(b);
+               lng *vbase= (lng*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_flt: {
+               flt *lbase= (flt*) COLbase(b);
+               flt *vbase= (flt*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_dbl: {
+               dbl *lbase= (dbl*) COLbase(b);
+               dbl *vbase= (dbl*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_str: {
+               COLforloop(r,o)
+                       COLputString(b,rbase[o], COLgetString(v,rbase[o]));
+               break;
+               }
+       default:
+               assert(0);
+               break;
+       }
        *ret = CBPkeepref( b);
        CBPreleaseref(r);
        CBPreleaseref(v);
@@ -213,9 +263,61 @@
                CBPreleaseref(r);
                throwagain(MAL, "column.replace", msg);
        }
-       rbase= (oid*) COLbase(r);
-       COLforloop(r,o)
-               BUNinplace(b,rbase[o], COLget(v,o),*force);
+       rbase = (oid*) COLbase(r);
+       /* use FORCE flag */
+       (void ) force;
+       switch( COLtype(b) ){
+       case TYPE_bit: {
+               bit *lbase= (bit*) COLbase(b);
+               bit *vbase= (bit*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_sht: {
+               sht *lbase= (sht*) COLbase(b);
+               sht *vbase= (sht*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_int: {
+               int *lbase= (int*) COLbase(b);
+               int *vbase= (int*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_lng: {
+               lng *lbase= (lng*) COLbase(b);
+               lng *vbase= (lng*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_flt: {
+               flt *lbase= (flt*) COLbase(b);
+               flt *vbase= (flt*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_dbl: {
+               dbl *lbase= (dbl*) COLbase(b);
+               dbl *vbase= (dbl*) COLbase(v);
+               COLforloop(r,o)
+                       lbase[rbase[o]]= vbase[o];
+               break;
+               }
+       case TYPE_str: {
+               COLforloop(r,o)
+                       COLputString(b,rbase[o], COLgetString(v,rbase[o]));
+               break;
+               }
+       default:
+               assert(0);
+               break;
+       }
        *ret = CBPkeepref( b);
        CBPreleaseref(r);
        CBPreleaseref(v);
@@ -778,7 +880,7 @@
                                if ( x < xlim && o == dbase[x])
                                        x++;
                                else
-                                       BUNappend(bn, COLget(b, o), FALSE);
+                                       BUNappend(bn, COLgetString(b, o), 
FALSE);
                } else {
                        switch( b->width){
                        case 1:@:shrinkloop(bte)@ break;
@@ -918,10 +1020,10 @@
                                                olim--;
                                                xlim--;
                                        }
-                                       BUNappend(bn, COLget(b, olim--), FALSE);
+                                       BUNappend(bn, COLgetString(b, olim--), 
FALSE);
                                } else
                                if ( o < olim )
-                                       BUNappend(bn, COLget(b, o), FALSE);
+                                       BUNappend(bn, COLgetString(b, o), 
FALSE);
                } else {
                        switch( b->width){
                        case 1:@:reuseloop(bte)@ break;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to