Changeset: 11e2a5086271 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=11e2a5086271
Modified Files:
monetdb5/modules/mal/mosaic.c
Branch: mosaic
Log Message:
Use type-specific versions of getArgReference.
diffs (truncated from 317 to 300 lines):
diff --git a/monetdb5/modules/mal/mosaic.c b/monetdb5/modules/mal/mosaic.c
--- a/monetdb5/modules/mal/mosaic.c
+++ b/monetdb5/modules/mal/mosaic.c
@@ -115,7 +115,7 @@ MOSdumpInternal(Client cntxt, BAT *b){
str
MOSdump(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int bid = *(int*) getArgReference(stk,pci,1);
+ bat bid = *getArgReference_bat(stk,pci,1);
BAT *b;
str msg = MAL_SUCCEED;
@@ -183,7 +183,7 @@ inheritCOL( BAT *bn, COLrec *cn, BAT *b,
TASK->dst = ((char*) TASK->blk)+ MosaicBlkSize;
str
-MOScompressInternal(Client cntxt, int *ret, int *bid, MOStask task, int
inplace, int debug)
+MOScompressInternal(Client cntxt, bat *ret, bat *bid, MOStask task, int
inplace, int debug)
{
BAT *bsrc; // the source BAT
BAT *bcompress; // the BAT that will contain the compressed version
@@ -241,7 +241,7 @@ MOScompressInternal(Client cntxt, int *r
BATseqbase(bsrc,bcompress->hseqbase);
if( inplace){
- // It should always take less space then the orginal column.
+ // It should always take less space than the orginal column.
// But be prepared that a header and last block header may be
stored
// use a size overshoot. Also be aware of possible dictionary
headers
bcompress = BATextend(bcompress,
BATgrows(bcompress)+MosaicHdrSize);
@@ -269,7 +269,7 @@ MOScompressInternal(Client cntxt, int *r
throw(MAL, "mosaic.compress", "Can not claim server");
}
} else {
- // It should always take less space then the orginal column.
+ // It should always take less space than the orginal column.
// But be prepared that a header and last block header may be
stored
// use a size overshoot. Also be aware of possible dictionary
headers
// Initialize local compressed copy
@@ -484,7 +484,7 @@ MOScompress(Client cntxt, MalBlkPtr mb,
throw(MAL, "mosaic.compress", MAL_MALLOC_FAIL);
if( pci->argc == 3)
- prop = *(str*) getArgReference(stk,pci,2);
+ prop = *getArgReference_str(stk,pci,2);
if( prop && !strstr(prop,"mosaic"))
for( i = 0; i< MOSAIC_METHODS; i++)
task->filter[i]= strstr(prop,MOSfiltername[i]) != 0;
@@ -492,14 +492,14 @@ MOScompress(Client cntxt, MalBlkPtr mb,
for( i = 0; i< MOSAIC_METHODS; i++)
task->filter[i]= 1;
- prop= MOScompressInternal(cntxt, (int*) getArgReference(stk,pci,0),
(int*) getArgReference(stk,pci,1), task, 0, flg);
+ prop= MOScompressInternal(cntxt, getArgReference_bat(stk,pci,0),
getArgReference_bat(stk,pci,1), task, 0, flg);
GDKfree(task);
return prop;
}
// bulk decompress a heap
str
-MOSdecompressInternal(Client cntxt, int *ret, int *bid, int inplace)
+MOSdecompressInternal(Client cntxt, bat *ret, bat *bid, int inplace)
{
BAT *bsrc, *b;
MOStask task;
@@ -668,20 +668,20 @@ str
MOSdecompress(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) mb;
- return MOSdecompressInternal(cntxt, (int*) getArgReference(stk,pci,0),
(int*) getArgReference(stk,pci,1),0);
+ return MOSdecompressInternal(cntxt, getArgReference_bat(stk,pci,0),
getArgReference_bat(stk,pci,1),0);
}
str
MOSdecompressStorage(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
(void) mb;
- return MOSdecompressInternal(cntxt, (int*) getArgReference(stk,pci,0),
(int*) getArgReference(stk,pci,1),1);
+ return MOSdecompressInternal(cntxt, getArgReference_bat(stk,pci,0),
getArgReference_bat(stk,pci,1),1);
}
// The remainders is cloned from the generator code base
// overload the algebra functions to check for compressed heaps.
static int
-isCompressed(int bid)
+isCompressed(bat bid)
{
BAT *b;
int r=0;
@@ -725,7 +725,7 @@ MOSsubselect(Client cntxt, MalBlkPtr mb,
{
bit *li, *hi, *anti;
void *low, *hgh;
- int *ret, *bid, *cid= 0;
+ bat *ret, *bid, *cid= 0;
int i;
int startblk,stopblk; // block range to scan
BUN cnt = 0;
@@ -736,19 +736,19 @@ MOSsubselect(Client cntxt, MalBlkPtr mb,
(void) cntxt;
(void) mb;
- ret = (int *) getArgReference(stk, pci, 0);
- bid = (int *) getArgReference(stk, pci, 1);
+ ret = getArgReference_bat(stk, pci, 0);
+ bid = getArgReference_bat(stk, pci, 1);
if (pci->argc == 8) { /* candidate list included */
- cid = (int *) getArgReference(stk, pci, 2);
+ cid = getArgReference_bat(stk, pci, 2);
i = 3;
} else
i = 2;
low = (void *) getArgReference(stk, pci, i);
hgh = (void *) getArgReference(stk, pci, i + 1);
- li = (bit *) getArgReference(stk, pci, i + 2);
- hi = (bit *) getArgReference(stk, pci, i + 3);
- anti = (bit *) getArgReference(stk, pci, i + 4);
+ li = getArgReference_bit(stk, pci, i + 2);
+ hi = getArgReference_bit(stk, pci, i + 3);
+ anti = getArgReference_bit(stk, pci, i + 4);
//
// use default implementation if possible
if( !isCompressed(*bid)){
@@ -794,11 +794,11 @@ MOSsubselect(Client cntxt, MalBlkPtr mb,
// determine block range to scan for partitioned columns
MOSgetPartition(cntxt, mb, stk, getArg(pci,1), &part, &nrofparts );
if ( nrofparts > 1){
- // don't use more parallelism then entries in the header
+ // don't use more parallelism than entries in the header
if( nrofparts > task->hdr->top)
nrofparts = task->hdr->top;
if( part > nrofparts){
- * (bat *) getArgReference(stk, pci, 0) = bn->batCacheid;
+ *getArgReference_bat(stk, pci, 0) = bn->batCacheid;
BBPkeepref(bn->batCacheid);
GDKfree(task);
return MAL_SUCCEED;
@@ -851,7 +851,7 @@ MOSsubselect(Client cntxt, MalBlkPtr mb,
bn->tsorted = 1;
bn->trevsorted = BATcount(bn) <= 1;
bn->tkey = 1;
- * (bat *) getArgReference(stk, pci, 0) = bn->batCacheid;
+ *getArgReference_bat(stk, pci, 0) = bn->batCacheid;
GDKfree(task);
BBPkeepref(bn->batCacheid);
return msg;
@@ -860,7 +860,8 @@ MOSsubselect(Client cntxt, MalBlkPtr mb,
str MOSthetasubselect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int idx, *cid =0, *ret, *bid;
+ int idx;
+ bat *cid =0, *ret, *bid;
int startblk, stopblk; // block range to scan
int part,nrofparts;
BAT *b = 0, *cand = 0, *bn = NULL;
@@ -872,14 +873,14 @@ str MOSthetasubselect(Client cntxt, MalB
(void) mb;
(void) cntxt;
- ret= (int*) getArgReference(stk,pci,0);
- bid= (int*) getArgReference(stk,pci,1);
+ ret= getArgReference_bat(stk,pci,0);
+ bid= getArgReference_bat(stk,pci,1);
if( pci->argc == 5){ // candidate list included
- cid = (int*) getArgReference(stk,pci, 2);
+ cid = getArgReference_bat(stk,pci, 2);
idx = 3;
} else idx = 2;
low= (void*) getArgReference(stk,pci,idx);
- oper= (char**) getArgReference(stk,pci,idx+1);
+ oper= getArgReference_str(stk,pci,idx+1);
if( !isCompressed(*bid)){
if( cid)
@@ -925,11 +926,11 @@ str MOSthetasubselect(Client cntxt, MalB
// determine block range to scan for partitioned columns
MOSgetPartition(cntxt, mb, stk, getArg(pci,1), &part, &nrofparts );
if ( nrofparts > 1){
- // don't use more parallelism then entries in the header
+ // don't use more parallelism than entries in the header
if( nrofparts > task->hdr->top)
nrofparts = task->hdr->top;
if( part > nrofparts){
- BBPkeepref(*(int*)getArgReference(stk,pci,0)=
bn->batCacheid);
+ BBPkeepref(*getArgReference_bat(stk,pci,0)=
bn->batCacheid);
GDKfree(task);
return MAL_SUCCEED;
}
@@ -984,7 +985,7 @@ str MOSthetasubselect(Client cntxt, MalB
bn->tsorted = 1;
bn->trevsorted = BATcount(bn) <= 1;
bn->tkey = 1;
- BBPkeepref(*(int*)getArgReference(stk,pci,0)= bn->batCacheid);
+ BBPkeepref(*getArgReference_bat(stk,pci,0)= bn->batCacheid);
}
GDKfree(task);
return msg;
@@ -992,7 +993,7 @@ str MOSthetasubselect(Client cntxt, MalB
str MOSleftfetchjoin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int *ret, *lid =0, *rid=0;
+ bat *ret, *lid =0, *rid=0;
int part, nrofparts;
int startblk,stopblk;
BAT *bl = NULL, *br = NULL, *bn;
@@ -1004,9 +1005,9 @@ str MOSleftfetchjoin(Client cntxt, MalBl
(void) mb;
(void) cntxt;
- ret = (int*) getArgReference(stk,pci,0);
- lid = (int*) getArgReference(stk,pci,1);
- rid = (int*) getArgReference(stk,pci,2);
+ ret = getArgReference_bat(stk,pci,0);
+ lid = getArgReference_bat(stk,pci,1);
+ rid = getArgReference_bat(stk,pci,2);
if( !isCompressed(*rid))
return ALGleftfetchjoin(ret,lid,rid);
@@ -1055,7 +1056,7 @@ str MOSleftfetchjoin(Client cntxt, MalBl
// determine block range to scan for partitioned columns
MOSgetPartition(cntxt, mb, stk, getArg(pci,1), &part, &nrofparts );
if ( nrofparts > 1){
- // don't use more parallelism then entries in the header
+ // don't use more parallelism than entries in the header
if( nrofparts > task->hdr->top)
nrofparts = task->hdr->top;
if( part >= nrofparts){
@@ -1129,7 +1130,7 @@ str MOSleftfetchjoin(Client cntxt, MalBl
str
MOSjoin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int *ret, *ret2,*lid,*rid;
+ bat *ret, *ret2,*lid,*rid;
int part, nrofparts;
int startblk,stopblk;
BAT *bl = NULL, *br = NULL, *bln = NULL, *brn= NULL;
@@ -1140,18 +1141,18 @@ MOSjoin(Client cntxt, MalBlkPtr mb, MalS
(void) cntxt;
(void) mb;
- ret = (int*) getArgReference(stk,pci,0);
- ret2 = (int*) getArgReference(stk,pci,1);
- lid = (int*) getArgReference(stk,pci,2);
- rid = (int*) getArgReference(stk,pci,3);
+ ret = getArgReference_bat(stk,pci,0);
+ ret2 = getArgReference_bat(stk,pci,1);
+ lid = getArgReference_bat(stk,pci,2);
+ rid = getArgReference_bat(stk,pci,3);
if( !isCompressed(*lid) && !isCompressed(*rid))
return ALGjoin2(ret,ret2,lid,rid);
- bl = BATdescriptor(*(int*) getArgReference(stk,pci,2));
+ bl = BATdescriptor(*lid);
if( bl == NULL)
throw(MAL,"mosaic.join",RUNTIME_OBJECT_MISSING);
- br = BATdescriptor(*(int*) getArgReference(stk,pci,3));
+ br = BATdescriptor(*rid);
if( br == NULL){
BBPreleaseref(bl->batCacheid);
throw(MAL,"mosaic.join",RUNTIME_OBJECT_MISSING);
@@ -1245,11 +1246,11 @@ MOSjoin(Client cntxt, MalBlkPtr mb, MalS
brn->trevsorted = cnt <= 1;
BATderiveProps(brn,0);
if( swapped){
- BBPkeepref(*(int*)getArgReference(stk,pci,0)= brn->batCacheid);
- BBPkeepref(*(int*)getArgReference(stk,pci,1)= bln->batCacheid);
+ BBPkeepref(*ret= brn->batCacheid);
+ BBPkeepref(*ret2= bln->batCacheid);
} else {
- BBPkeepref(*(int*)getArgReference(stk,pci,0)= bln->batCacheid);
- BBPkeepref(*(int*)getArgReference(stk,pci,1)= brn->batCacheid);
+ BBPkeepref(*ret= bln->batCacheid);
+ BBPkeepref(*ret2= brn->batCacheid);
}
GDKfree(task);
return msg;
@@ -1259,7 +1260,7 @@ MOSjoin(Client cntxt, MalBlkPtr mb, MalS
// all possible compression options.
static int
-MOSanalyseInternal(Client cntxt, int threshold, MOStask task, int bid)
+MOSanalyseInternal(Client cntxt, int threshold, MOStask task, bat bid)
{
BAT *b;
int ret = 0;
@@ -1403,7 +1404,8 @@ MOSslice(Client cntxt, MalBlkPtr mb, Mal
str
MOSanalyse(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- int i,j,k,limit,bid, cand=1;
+ int i,j,k,limit, cand=1;
+ bat bid;
int threshold= 1000;
str properties[32] ={0};
float xf[32];
@@ -1417,7 +1419,7 @@ MOSanalyse(Client cntxt, MalBlkPtr mb, M
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list