Changeset: c386f8fb65f9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c386f8fb65f9
Modified Files:
monetdb5/modules/mosaic/mosaic.c
monetdb5/modules/mosaic/mosaic.h
monetdb5/modules/mosaic/mosaic_delta.c
monetdb5/modules/mosaic/mosaic_dictionary.c
monetdb5/modules/mosaic/mosaic_frame.c
Branch: mosaic
Log Message:
Macro definition
diffs (164 lines):
diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c
--- a/monetdb5/modules/mosaic/mosaic.c
+++ b/monetdb5/modules/mosaic/mosaic.c
@@ -52,7 +52,7 @@ MOSinit(MOStask task, BAT *b){
task->hdr = (MosaicHdr) base;
base += MosaicHdrSize;
task->blk = (MosaicBlk) base;
- task->dst = base + MosaicBlkSize;
+ task->dst = MOScodevector(task);
}
void MOSblk(MosaicBlk blk)
@@ -280,7 +280,7 @@ inheritCOL( BAT *bn, COLrec *cn, BAT *b,
#define MOSnewBlk(TASK)\
MOSsetTag(TASK->blk,MOSAIC_EOL);\
MOSsetCnt(TASK->blk,0);\
- TASK->dst = ((char*) TASK->blk)+ MosaicBlkSize;
+ TASK->dst = MOScodevector(TASK);
/* The compression orchestration is dealt with here.
* We assume that the estimates for each scheme returns
@@ -450,7 +450,7 @@ MOScompressInternal(Client cntxt, bat *r
MOSupdateHeader(cntxt,task);
MOSadvance_literal(cntxt,task);
// always start with an EOL block
- task->dst = ((char*) task->blk)+ MosaicBlkSize;
+ task->dst = MOScodevector(task);
MOSsetTag(task->blk,MOSAIC_EOL);
MOSsetCnt(task->blk,0);
}
@@ -461,7 +461,7 @@ MOScompressInternal(Client cntxt, bat *r
MOSupdateHeader(cntxt,task);
MOSadvance_literal(cntxt,task);
// always start with an EOL block
- task->dst = ((char*) task->blk)+ MosaicBlkSize;
+ task->dst = MOScodevector(task);
MOSsetTag(task->blk,MOSAIC_EOL);
MOSsetCnt(task->blk,0);
}
@@ -513,10 +513,10 @@ MOScompressInternal(Client cntxt, bat *r
if( MOSgetTag(task->blk) == MOSAIC_NONE && MOSgetCnt(task->blk)){
MOSupdateHeader(cntxt,task);
MOSadvance_literal(cntxt,task);
- task->dst = ((char*) task->blk)+ MosaicBlkSize;
+ task->dst = MOScodevector(task);
MOSsetTag(task->blk,MOSAIC_EOL);
} else
- task->dst = ((char*) task->blk)+ MosaicBlkSize;
+ task->dst = MOScodevector(task);
task->bsrc->tmosaic->free = (task->dst - (char*)task->hdr);
task->timer = GDKusec() - task->timer;
if(debug)
diff --git a/monetdb5/modules/mosaic/mosaic.h b/monetdb5/modules/mosaic/mosaic.h
--- a/monetdb5/modules/mosaic/mosaic.h
+++ b/monetdb5/modules/mosaic/mosaic.h
@@ -109,6 +109,9 @@ typedef struct MOSAICBLK{
#define MOSgetCnt(Blk) (BUN)((Blk)->cnt)
#define MOSincCnt(Blk,I) (assert((Blk)->cnt +I < MOSAICMAXCNT), (Blk)->cnt+=
(unsigned int)(I))
+/* The start of the encoding withing a Mosaic block */
+#define MOScodevector(Task) (((char*) Task->blk)+ MosaicBlkSize)
+
/* Memory word alignement is type and platform dependent.
* We use an encoding that fits the column type requirements
*/
diff --git a/monetdb5/modules/mosaic/mosaic_delta.c
b/monetdb5/modules/mosaic/mosaic_delta.c
--- a/monetdb5/modules/mosaic/mosaic_delta.c
+++ b/monetdb5/modules/mosaic/mosaic_delta.c
@@ -200,7 +200,7 @@ MOSestimate_delta(Client cntxt, MOStask
#define DELTAcompress(TYPE,EXPR)\
{ TYPE *v = ((TYPE*)task->src) + task->start, val= *v, delta =0;\
BUN limit = task->stop - task->start > MOSlimit()?
MOSlimit():task->stop - task->start;\
- task->dst = ((char*) task->blk) + MosaicBlkSize;\
+ task->dst = MOScodevector(task); \
*(TYPE*)task->dst = val;\
task->dst += sizeof(TYPE);\
for(v++,i =1; i<limit; i++,v++){\
@@ -236,7 +236,7 @@ MOScompress_delta(Client cntxt, MOStask
case TYPE_lng:
{ lng *v = ((lng*)task->src) + task->start, val= *v,
delta;
BUN limit = task->stop - task->start > MOSlimit()?
MOSlimit():task->stop - task->start;
- task->dst = ((char*) task->blk) + MosaicBlkSize;
+ task->dst = MOScodevector(task);
*(lng*)task->dst = val;
task->dst += sizeof(lng);
for(v++, i =1; i<limit; i++, v++){
@@ -269,7 +269,7 @@ MOScompress_delta(Client cntxt, MOStask
#define DELTAdecompress(TYPE)\
{ TYPE val;\
BUN lim = MOSgetCnt(blk);\
- task->dst = ((char*) task->blk) + MosaicBlkSize;\
+ task->dst = MOScodevector(task);\
val = *(TYPE*)task->dst ;\
task->dst += sizeof(TYPE);\
for(i = 0; i < lim; i++) {\
@@ -299,7 +299,7 @@ MOSdecompress_delta(Client cntxt, MOStas
case TYPE_lng:
{ lng val;
BUN lim = MOSgetCnt(blk);
- task->dst = ((char*) task->blk) + MosaicBlkSize;
+ task->dst = MOScodevector(task);
val = *(lng*)task->dst ;
task->dst += sizeof(lng);
for(i = 0; i < lim; i++) {
@@ -327,7 +327,7 @@ MOSdecompress_delta(Client cntxt, MOStas
#define subselect_delta(TPE) {\
TPE val= * (TPE*) (((char*) task->blk) + MosaicBlkSize);\
- task->dst = ((char*)task->blk)+ MosaicBlkSize + sizeof(TYPE);\
+ task->dst = MOScodevector(task) + sizeof(TYPE);\
if( !*anti){\
if( *(TPE*) low == TPE##_nil && *(TPE*) hgh ==
TPE##_nil){\
for( ; first < last; first++){\
@@ -418,7 +418,7 @@ MOSsubselect_delta(Client cntxt, MOStas
case TYPE_int:
// Expanded MOSselect_delta for debugging
{ int val= *(int*) (((char*) task->blk) + MosaicBlkSize);
- task->dst = ((char *)task->blk) +MosaicBlkSize +
sizeof(int);
+ task->dst = MOScodevector(task) + sizeof(int);
if( !*anti){
if( *(int*) low == int_nil && *(int*) hgh ==
int_nil){
@@ -592,7 +592,7 @@ MOSsubselect_delta(Client cntxt, MOStas
hgh= low= *(TPE*) val;\
} \
v= *(TPE*) (((char*) task->blk) + MosaicBlkSize);\
- task->dst = ((char *)task->blk) +MosaicBlkSize + sizeof(int);\
+ task->dst = MOScodevector(task) + sizeof(int);\
for( ; first < last; first++, v+= *(bte*)task->dst, task->dst++){\
if( (low == TPE##_nil || v >= low) && (v <= hgh || hgh ==
TPE##_nil) ){\
if ( !anti) {\
@@ -657,7 +657,7 @@ MOSthetasubselect_delta(Client cntxt, M
hgh= low= *(int*) val;
}
v= *(int*) (((char*) task->blk) + MosaicBlkSize);
- task->dst = ((char *)task->blk) +MosaicBlkSize +
sizeof(int);
+ task->dst = MOScodevector(task) + sizeof(int);
for( ; first < last; first++, v+= *(bte*)task->dst,
task->dst++){
if( (low == int_nil || v >= low) && (v <= hgh
|| hgh == int_nil) ){
if ( !anti) {
diff --git a/monetdb5/modules/mosaic/mosaic_dictionary.c
b/monetdb5/modules/mosaic/mosaic_dictionary.c
--- a/monetdb5/modules/mosaic/mosaic_dictionary.c
+++ b/monetdb5/modules/mosaic/mosaic_dictionary.c
@@ -323,7 +323,7 @@ MOScompress_dictionary(Client cntxt, MOS
MosaicHdr hdr = task->hdr;
BitVector base;
- task->dst = ((char*) task->blk)+ MosaicBlkSize;
+ task->dst = MOScodevector(task);
base = (BitVector) task->dst;
(void) cntxt;
diff --git a/monetdb5/modules/mosaic/mosaic_frame.c
b/monetdb5/modules/mosaic/mosaic_frame.c
--- a/monetdb5/modules/mosaic/mosaic_frame.c
+++ b/monetdb5/modules/mosaic/mosaic_frame.c
@@ -340,7 +340,7 @@ MOSestimate_frame(Client cntxt, MOStask
{ TPE *val = ((TPE*)task->src) + task->start, frame = *val, delta;\
TPE *dict = (TPE*)hdr->frame;\
BUN limit = task->stop - task->start > MOSlimit()? MOSlimit():
task->stop - task->start;\
- task->dst = ((char*) task->blk)+ MosaicBlkSize;\
+ task->dst = MOScodevector(task); \
*(TPE*) task->dst = frame;\
task->dst += sizeof(TPE);\
base = (BitVector) (((char*) task->blk) + MosaicBlkSize +
wordaligned(sizeof(TPE),lng));\
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list