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

Reply via email to