Changeset: 6bcf40bbe9e9 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6bcf40bbe9e9 Modified Files: monetdb5/extras/crackers/crackers_holistic.c monetdb5/extras/crackers/crackers_holistic.h monetdb5/extras/crackers/crackers_holistic.mal monetdb5/extras/crackers/crackers_selecthol_ops.mx Branch: holindex Log Message:
Changes in order to handle updates. diffs (222 lines): diff --git a/monetdb5/extras/crackers/crackers_holistic.c b/monetdb5/extras/crackers/crackers_holistic.c --- a/monetdb5/extras/crackers/crackers_holistic.c +++ b/monetdb5/extras/crackers/crackers_holistic.c @@ -55,6 +55,15 @@ CRKinitHolistic(int *ret) return MAL_SUCCEED; } +str +CRKinitHolisticUpdates(int *ret) +{ + MT_lock_init(&frequencylock, "FrequencyStruct"); + *ret = 0; + return MAL_SUCCEED; +} + + /*singleton pattern*/ FrequencyNode * getFrequencyStruct(char which) @@ -468,3 +477,38 @@ CRKrandomCrackST(int *ret) return MAL_SUCCEED; } +str +CRKrandomCrackUpdates(int *ret) +{ + int bid=0; + FrequencyNode* max_node; + BAT *b; + int low=0, hgh=0; + int *t; + int temp=0; + oid posl,posh,p; + bit inclusive=TRUE; + FrequencyNode *fs = getFrequencyStruct('A'); + max_node=findMax(fs); + if(max_node!=NULL && max_node->weight > 0) + { +bid=max_node->bid; + b=BATdescriptor(bid); + t=(int*)Tloc(b,BUNfirst(b)); + posl=BUNfirst(b); + posh=BUNlast(b) - 1; + p=(rand()%(posh-posl+1))+posl; + low=t[p]; + p=(rand()%(posh-posl+1))+posl; + hgh=t[p]; + if(hgh < low) + { + temp=low; + low=hgh; + hgh=temp; + } + CRKselectholBounds_int(ret, &bid, &low, &hgh, &inclusive, &inclusive); + } + *ret = 0; + return MAL_SUCCEED; +} diff --git a/monetdb5/extras/crackers/crackers_holistic.h b/monetdb5/extras/crackers/crackers_holistic.h --- a/monetdb5/extras/crackers/crackers_holistic.h +++ b/monetdb5/extras/crackers/crackers_holistic.h @@ -57,10 +57,11 @@ crackers_export void deleteNode(Frequenc crackers_export IdleFuncPtr IdleFunc; crackers_export str CRKinitHolistic(int *ret); +crackers_export str CRKinitHolisticUpdates(int *ret); crackers_export str CRKinitFrequencyStruct(int *vid,int bid); crackers_export str CRKinitFrequencyStruct_2(int *vid,int *bid,int* N,int* L1); crackers_export str CRKrandomCrack(int *ret); crackers_export str CRKrandomCrackST(int *ret); crackers_export str CRKzeroFrequency(int *vid); - +crackers_export str CRKrandomCrackUpdates(int *ret); #endif /*crackers_holistic*/ diff --git a/monetdb5/extras/crackers/crackers_holistic.mal b/monetdb5/extras/crackers/crackers_holistic.mal --- a/monetdb5/extras/crackers/crackers_holistic.mal +++ b/monetdb5/extras/crackers/crackers_holistic.mal @@ -4,6 +4,10 @@ command holisticprelude():void address CRKinitHolistic comment "Initialize holistic module"; +command holisticpreludeUpdates():void +address CRKinitHolisticUpdates +comment "Initialize holistic module"; + command initFrequencyStruct(b:bat[:oid,:any]):void address CRKinitFrequencyStruct comment "Initialize the struct(lifo) with zero values."; @@ -24,6 +28,9 @@ command randomCrackST():void address CRKrandomCrackST comment "Do random stochastic crack on BATs ordered by descending weight"; +command randomCrackUpdates():void +address CRKrandomCrackUpdates +comment "Handling updates with holistic indexing"; command zeroFrequency():void address CRKzeroFrequency diff --git a/monetdb5/extras/crackers/crackers_selecthol_ops.mx b/monetdb5/extras/crackers/crackers_selecthol_ops.mx --- a/monetdb5/extras/crackers/crackers_selecthol_ops.mx +++ b/monetdb5/extras/crackers/crackers_selecthol_ops.mx @@ -271,11 +271,11 @@ createView: BBPunfix(c->batCacheid); if (createIndex==1) { - MT_lock_unset(&CRKIndexLock,"Cracker Index Lock"); + //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock"); createIndex=0; } - else - MT_lock_unset(&CrackerIndex[m].columnLock,"Lock Attribute"); + //else + //MT_lock_unset(&CrackerIndex[m].columnLock,"Lock Attribute"); @ @= RangeSelectBody @@ -303,31 +303,31 @@ createView: bit rippledDeletions = FALSE; struct Node *lowNode=NULL, *hghNode=NULL, *lowNodeNext=NULL, *temp; BUN idxFirst; - struct timeval tv0, tv1; - double wt=0, ct=0; + //struct timeval tv0, tv1; + //double wt=0, ct=0; bit copy=TRUE; int countBatElements=0; int L1=0; /*Number of elements that can fit into L1 cache (size: 32KB)*/ - FILE *ofp; - char outputFilename1[] = "/export/scratch2/petraki/experiments_paper1/thresholds/client1/waiting01/cpuload70/idletime4/breakdown.txt"; + //FILE *ofp; + //char outputFilename1[] = "/export/scratch2/petraki/experiments_paper1/thresholds/client1/waiting01/cpuload70/idletime4/breakdown.txt"; FrequencyNode* FN; FrequencyNode *FrequencyStructA = getFrequencyStruct('A'); - gettimeofday(&tv0,0); + //gettimeofday(&tv0,0); - ofp = fopen(outputFilename1,"a"); + /*ofp = fopen(outputFilename1,"a"); if (ofp == NULL) { fprintf(stderr, "Can't open output file!\n"); exit(1); - } + }*/ if ((bo = BATdescriptor(*bid)) != NULL) L1=32000/ATOMsize(bo->ttype); - MT_lock_set(&CRKIndexLock,"Cracker Index Lock"); + //MT_lock_set(&CRKIndexLock,"Cracker Index Lock"); - gettimeofday(&tv1,0); wt+=dt(tv0,tv1); tv0=tv1; + //gettimeofday(&tv1,0); wt+=dt(tv0,tv1); tv0=tv1; /*if (@2_GT(low,hgh,@3@1)) throw(MAL, "crackers.crack", "illegal range");*/ @@ -428,10 +428,10 @@ createView: } - MT_lock_unset(&CRKIndexLock,"Cracker Index Lock"); - MT_lock_set(&CrackerIndex[m].columnLock,"Lock Attribute"); + //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock"); + //MT_lock_set(&CrackerIndex[m].columnLock,"Lock Attribute"); - gettimeofday(&tv1,0); wt+=dt(tv0,tv1); tv0=tv1; + //gettimeofday(&tv1,0); wt+=dt(tv0,tv1); tv0=tv1; FN=searchBAT(FrequencyStructA,*bid); @@ -514,7 +514,8 @@ createView: /* deal with pending insertions if any */ if (CrackerIndex[m].mergeInsertions >= 0){ - str msg; assert(0); + str msg; + //assert(0); msg = selectMergeInsertionsPart_@1(bid, low, inclusiveLow, hgh, inclusiveHgh, m); if (msg != NULL) throw(MAL, "crackers.crackRange", "%s", msg); @@ -642,16 +643,16 @@ createView: BBPunfix(c->batCacheid); if (createIndex==1) { - MT_lock_unset(&CRKIndexLock,"Cracker Index Lock"); + //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock"); createIndex=0; } - else - MT_lock_unset(&CrackerIndex[m].columnLock,"Lock Attribute"); + //else + // MT_lock_unset(&CrackerIndex[m].columnLock,"Lock Attribute"); - gettimeofday(&tv1,0); ct+=dt(tv0,tv1); tv0=tv1; - fprintf(ofp,"User_query \t 1 \t Wait_time\t %9.6lf \t Selection_time\t %9.6lf\n",wt,ct); + //gettimeofday(&tv1,0); ct+=dt(tv0,tv1); tv0=tv1; + //fprintf(ofp,"User_query \t 1 \t Wait_time\t %9.6lf \t Selection_time\t %9.6lf\n",wt,ct); - fclose(ofp); + //fclose(ofp); return MAL_SUCCEED; @ @@ -683,7 +684,7 @@ createView: if ((b = BATdescriptor(CrackerIndex[m].cbid)) == NULL) throw(MAL, "crackers.crackRange", "Cannot access crack index"); - MT_lock_set(&CrackerIndex[m].columnLock,"Lock Attribute"); + //MT_lock_set(&CrackerIndex[m].columnLock,"Lock Attribute"); /* find out where in the index the low falls */ foundLow = GetLow_@1(*low, *inclusiveLow, CrackerIndex[m].Tree, c, BUNfirst(c), &cl1, &ch1, 0, BUNlast(b)-(oid)1,&LBound); @@ -761,7 +762,7 @@ createView: BBPunfix(b->batCacheid); BBPunfix(c->batCacheid); - MT_lock_unset(&CrackerIndex[m].columnLock,"Lock Attribute"); + //MT_lock_unset(&CrackerIndex[m].columnLock,"Lock Attribute"); return MAL_SUCCEED; @ @= crackOperations _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list