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