improved count join for the equals case.
[SXSI/xpathcomp.git] / src / lexindex_stub.cpp
index ce18cd3..f597a41 100644 (file)
@@ -156,20 +156,22 @@ void VectorCountMergeJoin::mergeJoin(vector<pair<int32_t,int32_t>> v1, vector<pa
   int comp=0;
   int i1=0;
   int i2=0;
-  int k;
+  int k,j;
   while((i1<v1.size()) && (i2<v2.size())){
     k = strcmp((const char*) tree->get_text(v1[i1].first),
               (const char*) tree->get_text(v2[i2].first));
     comp++;
     if (k==0) 
       {
-       resultVector.push_back(v1[i1]);
-       i1++; //advance left
+       for(j=0; j<v1[i1].second ; j++)
+         resultVector.push_back(v1[i1+j]);
+       i1=i1+j;
+       //      i1++; //advance left
       }
-    else if (k<0) i1++; //advance left
-    //    else if (k<0) i1=i1+v1[i1].second; //advance left
-    else i2++; //advance right
-    //    else i2=i2+v2[i2].second; //advance right
+    //    else if (k<0) i1++; //advance left
+    else if (k<0) i1=i1+v1[i1].second; //advance left
+    //    else i2++; //advance right
+    else i2=i2+v2[i2].second; //advance right
 
   }
   printf("Number of comparisons during MergeJoin: %i\n",comp);