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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list