Changeset: a666ee9abe50 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a666ee9abe50
Modified Files:
monetdb5/modules/mal/mosaic.c
monetdb5/modules/mal/mosaic.h
monetdb5/modules/mal/mosaic_delta.c
monetdb5/modules/mal/mosaic_dict.c
monetdb5/modules/mal/mosaic_hdr.c
monetdb5/modules/mal/mosaic_linear.c
monetdb5/modules/mal/mosaic_none.c
monetdb5/modules/mal/mosaic_rle.c
monetdb5/modules/mal/mosaic_zone.c
Branch: mosaic
Log Message:
Reduce the storage size of the mosaic blk
diffs (truncated from 1251 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
@@ -67,7 +67,7 @@ MOSdumpInternal(Client cntxt, BAT *b){
return;
MOSinit(task,b);
while(task->blk){
- switch(task->blk->tag){
+ switch(MOStag(task->blk)){
case MOSAIC_NONE:
MOSdump_none(cntxt,task);
MOSskip_none(task);
@@ -235,8 +235,7 @@ MOScompressInternal(Client cntxt, int *r
MOSinitHeader(task);
// always start with an EOL block
- task->blk->tag = MOSAIC_EOL;
- task->blk->cnt = 0;
+ *task->blk = MOSeol;
cutoff = task->elm > 1000? task->elm - 1000: task->elm;
while(task->elm > 0){
@@ -297,16 +296,15 @@ MOScompressInternal(Client cntxt, int *r
case MOSAIC_DELTA:
case MOSAIC_LINEAR:
// close the non-compressed part
- if( (task->blk->tag == MOSAIC_NONE || task->blk->tag ==
MOSAIC_ZONE) && task->blk->cnt ){
+ if( (MOStag(task->blk) == MOSAIC_NONE ||
MOStag(task->blk) == MOSAIC_ZONE) && MOScnt(task->blk) ){
MOSupdateHeader(cntxt,task);
- if( task->blk->tag == MOSAIC_NONE)
+ if( MOStag(task->blk) == MOSAIC_NONE)
MOSskip_none(task);
else
MOSskip_zone(task);
// always start with an EOL block
task->dst = ((char*) task->blk)+ MosaicBlkSize;
- task->blk->tag = MOSAIC_EOL;
- task->blk->cnt = 0;
+ *task->blk = MOSeol;
}
}
// apply the compression to a chunk
@@ -315,51 +313,46 @@ MOScompressInternal(Client cntxt, int *r
MOScompress_dict(cntxt,task);
MOSupdateHeader(cntxt,task);
//prepare new block header
- task->elm -= task->blk->cnt;
+ task->elm -= MOScnt(task->blk);
MOSadvance_dict(task);
- task->blk->tag = MOSAIC_EOL;
- task->blk->cnt = 0;
+ *task->blk = MOSeol;
task->dst = ((char*) task->blk)+ MosaicBlkSize;
break;
case MOSAIC_DELTA:
MOScompress_delta(cntxt,task);
MOSupdateHeader(cntxt,task);
//prepare new block header
- task->elm -= task->blk->cnt;
+ task->elm -= MOScnt(task->blk);
MOSadvance_delta(task);
- task->blk->tag = MOSAIC_EOL;
- task->blk->cnt = 0;
+ *task->blk = MOSeol;
task->dst = ((char*) task->blk)+ MosaicBlkSize;
break;
case MOSAIC_LINEAR:
MOScompress_linear(cntxt,task);
MOSupdateHeader(cntxt,task);
//prepare new block header
- task->elm -= task->blk->cnt;
+ task->elm -= MOScnt(task->blk);
MOSadvance_linear(task);
- task->blk->tag = MOSAIC_EOL;
- task->blk->cnt = 0;
- task->dst = ((char*) task->blk)+ 3 * MosaicBlkSize;
+ *task->blk= MOSeol;
+ task->dst = ((char*) task->blk)+ MosaicBlkSize;
break;
case MOSAIC_RLE:
MOScompress_rle(cntxt,task);
MOSupdateHeader(cntxt,task);
//prepare new block header
- task->elm -= task->blk->cnt;
+ task->elm -= MOScnt(task->blk);
MOSadvance_rle(task);
- task->blk->tag = MOSAIC_EOL;
- task->blk->cnt = 0;
+ *task->blk = MOSeol;
task->dst = ((char*) task->blk)+ MosaicBlkSize;
break;
case MOSAIC_ZONE:
- if( task->blk->cnt == 0)
+ if( MOScnt(task->blk) == 0)
task->dst += 2 * MosaicBlkSize;
- if ( task->blk->cnt > MAXZONESIZE){
+ if ( MOScnt(task->blk) > MAXZONESIZE){
MOSupdateHeader(cntxt,task);
MOSadvance_zone(task);
task->dst = ((char*) task->blk)+ MosaicBlkSize;
- task->blk->tag = MOSAIC_EOL;
- task->blk->cnt = 0;
+ *task->blk = MOSeol;
}
MOScompress_zone(cntxt,task);
break;
@@ -368,17 +361,16 @@ MOScompressInternal(Client cntxt, int *r
MOScompress_none(cntxt,task);
}
}
- if( (task->blk->tag == MOSAIC_NONE || task->blk->tag == MOSAIC_ZONE) &&
task->blk->cnt){
+ if( (MOStag(task->blk) == MOSAIC_NONE || MOStag(task->blk) ==
MOSAIC_ZONE) && MOScnt(task->blk)){
MOSupdateHeader(cntxt,task);
- if( task->blk->tag == MOSAIC_NONE ){
+ if( MOStag(task->blk) == MOSAIC_NONE ){
MOSadvance_none(task);
task->dst = ((char*) task->blk)+ MosaicBlkSize;
} else{
MOSadvance_zone(task);
task->dst = ((char*) task->blk)+ 3 * MosaicBlkSize;
}
- task->blk->tag = MOSAIC_EOL;
- task->blk->cnt = 0;
+ *task->blk = MOSeol;
}
task->xsize = ((lng)task->dst - (lng)task->hdr) + MosaicHdrSize;
task->timer = GDKusec() - task->timer;
@@ -478,7 +470,7 @@ MOSdecompressInternal(Client cntxt, int
task->src = Tloc(bn, BUNfirst(bn));
task->timer = GDKusec();
while(task->blk){
- switch(task->blk->tag){
+ switch(MOStag(task->blk)){
case MOSAIC_DICT:
MOSdecompress_dict(cntxt,task);
MOSskip_dict(task);
@@ -653,36 +645,36 @@ MOSsubselect(Client cntxt, MalBlkPtr mb,
first = (BUN) *task->cl;
first = MOSfindChunk(cntxt,task,first);
while(task->blk && first < last ){
- switch(task->blk->tag){
+ switch(MOStag(task->blk)){
case MOSAIC_RLE:
- MOSsubselect_rle(cntxt,task,first,first +
task->blk->cnt,low,hgh,li,hi,anti);
- first += task->blk->cnt;
+ MOSsubselect_rle(cntxt,task,first,first +
MOScnt(task->blk),low,hgh,li,hi,anti);
+ first += MOScnt(task->blk);
MOSskip_rle(task);
break;
case MOSAIC_DICT:
- MOSsubselect_dict(cntxt,task,first,first +
task->blk->cnt,low,hgh,li,hi,anti);
- first += task->blk->cnt;
+ MOSsubselect_dict(cntxt,task,first,first +
MOScnt(task->blk),low,hgh,li,hi,anti);
+ first += MOScnt(task->blk);
MOSskip_dict(task);
break;
case MOSAIC_DELTA:
- MOSsubselect_delta(cntxt,task,first,first +
task->blk->cnt,low,hgh,li,hi,anti);
- first += task->blk->cnt;
+ MOSsubselect_delta(cntxt,task,first,first +
MOScnt(task->blk),low,hgh,li,hi,anti);
+ first += MOScnt(task->blk);
MOSskip_delta(task);
break;
case MOSAIC_LINEAR:
- MOSsubselect_linear(cntxt,task,first,first +
task->blk->cnt,low,hgh,li,hi,anti);
- first += task->blk->cnt;
+ MOSsubselect_linear(cntxt,task,first,first +
MOScnt(task->blk),low,hgh,li,hi,anti);
+ first += MOScnt(task->blk);
MOSskip_linear(task);
break;
case MOSAIC_ZONE:
- MOSsubselect_zone(cntxt,task,first,first +
task->blk->cnt,low,hgh,li,hi,anti);
- first += task->blk->cnt;
+ MOSsubselect_zone(cntxt,task,first,first +
MOScnt(task->blk),low,hgh,li,hi,anti);
+ first += MOScnt(task->blk);
MOSskip_zone(task);
break;
case MOSAIC_NONE:
default:
- MOSsubselect_none(cntxt,task,first,first +
task->blk->cnt,low,hgh,li,hi,anti);
- first += task->blk->cnt;
+ MOSsubselect_none(cntxt,task,first,first +
MOScnt(task->blk),low,hgh,li,hi,anti);
+ first += MOScnt(task->blk);
MOSskip_none(task);
}
}
@@ -772,36 +764,36 @@ str MOSthetasubselect(Client cntxt, MalB
first = MOSfindChunk(cntxt,task,first);
while(task->blk && first < last ){
- switch(task->blk->tag){
+ switch(MOStag(task->blk)){
case MOSAIC_RLE:
- MOSthetasubselect_rle(cntxt,task,first,first +
task->blk->cnt,low,*oper);
- first += task->blk->cnt;
+ MOSthetasubselect_rle(cntxt,task,first,first +
MOScnt(task->blk),low,*oper);
+ first += MOScnt(task->blk);
MOSskip_rle(task);
break;
case MOSAIC_DELTA:
- MOSthetasubselect_delta(cntxt,task,first,first +
task->blk->cnt,low,*oper);
- first += task->blk->cnt;
+ MOSthetasubselect_delta(cntxt,task,first,first +
MOScnt(task->blk),low,*oper);
+ first += MOScnt(task->blk);
MOSskip_delta(task);
break;
case MOSAIC_LINEAR:
- MOSthetasubselect_linear(cntxt,task,first,first +
task->blk->cnt,low,*oper);
- first += task->blk->cnt;
+ MOSthetasubselect_linear(cntxt,task,first,first +
MOScnt(task->blk),low,*oper);
+ first += MOScnt(task->blk);
MOSskip_linear(task);
break;
case MOSAIC_DICT:
- MOSthetasubselect_dict(cntxt,task,first,first +
task->blk->cnt,low,*oper);
- first += task->blk->cnt;
+ MOSthetasubselect_dict(cntxt,task,first,first +
MOScnt(task->blk),low,*oper);
+ first += MOScnt(task->blk);
MOSskip_dict(task);
break;
case MOSAIC_ZONE:
- MOSthetasubselect_zone(cntxt,task,first,first +
task->blk->cnt,low,*oper);
- first += task->blk->cnt;
+ MOSthetasubselect_zone(cntxt,task,first,first +
MOScnt(task->blk),low,*oper);
+ first += MOScnt(task->blk);
MOSskip_zone(task);
break;
case MOSAIC_NONE:
default:
- MOSthetasubselect_none(cntxt,task,first,first +
task->blk->cnt,low,*oper);
- first += task->blk->cnt;
+ MOSthetasubselect_none(cntxt,task,first,first +
MOScnt(task->blk),low,*oper);
+ first += MOScnt(task->blk);
MOSskip_none(task);
}
}
@@ -884,35 +876,35 @@ str MOSleftfetchjoin(Client cntxt, MalBl
// loop thru all the chunks and fetch all results
while(task->blk )
- switch(task->blk->tag){
+ switch(MOStag(task->blk)){
case MOSAIC_RLE:
- MOSleftfetchjoin_rle(cntxt, task, first, first +
task->blk->cnt);
- first += task->blk->cnt;
+ MOSleftfetchjoin_rle(cntxt, task, first, first +
MOScnt(task->blk));
+ first += MOScnt(task->blk);
MOSskip_rle(task);
break;
case MOSAIC_DICT:
- MOSleftfetchjoin_dict(cntxt, task, first, first +
task->blk->cnt);
- first += task->blk->cnt;
+ MOSleftfetchjoin_dict(cntxt, task, first, first +
MOScnt(task->blk));
+ first += MOScnt(task->blk);
MOSskip_dict(task);
break;
case MOSAIC_DELTA:
- MOSleftfetchjoin_delta(cntxt, task, first, first +
task->blk->cnt);
- first += task->blk->cnt;
+ MOSleftfetchjoin_delta(cntxt, task, first, first +
MOScnt(task->blk));
+ first += MOScnt(task->blk);
MOSskip_delta(task);
break;
case MOSAIC_LINEAR:
- MOSleftfetchjoin_linear(cntxt, task, first, first +
task->blk->cnt);
- first += task->blk->cnt;
+ MOSleftfetchjoin_linear(cntxt, task, first, first +
MOScnt(task->blk));
+ first += MOScnt(task->blk);
MOSskip_linear(task);
break;
case MOSAIC_ZONE:
- MOSleftfetchjoin_zone(cntxt, task, first, first +
task->blk->cnt);
- first += task->blk->cnt;
+ MOSleftfetchjoin_zone(cntxt, task, first, first +
MOScnt(task->blk));
+ first += MOScnt(task->blk);
MOSskip_zone(task);
break;
case MOSAIC_NONE:
- MOSleftfetchjoin_none(cntxt, task, first, first +
task->blk->cnt);
- first += task->blk->cnt;
+ MOSleftfetchjoin_none(cntxt, task, first, first +
MOScnt(task->blk));
+ first += MOScnt(task->blk);
MOSskip_none(task);
break;
default:
@@ -1002,35 +994,35 @@ MOSjoin(Client cntxt, MalBlkPtr mb, MalS
// loop thru all the chunks and collect the results
while(task->blk )
- switch(task->blk->tag){
+ switch(MOStag(task->blk)){
case MOSAIC_RLE:
- MOSjoin_rle(cntxt, task, first, first + task->blk->cnt);
- first += (BUN) task->blk->cnt;
+ MOSjoin_rle(cntxt, task, first, first +
MOScnt(task->blk));
+ first += MOScnt(task->blk);
MOSskip_rle(task);
break;
case MOSAIC_DICT:
- MOSjoin_dict(cntxt, task, first, first +
task->blk->cnt);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list