[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: rdf - Fix bug in memory reallocation (in merging CSs)
From:       Minh-Duc Pham <commits () monetdb ! org>
Date:       2014-02-27 17:14:16
Message-ID: hg.cad0a95519ff.1393521256.6315528441665844383 () monetdb2 ! cwi-incubator ! nl
[Download RAW message or body]

Changeset: cad0a95519ff for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cad0a95519ff
Modified Files:
	monetdb5/extras/rdf/rdfschema.c
	monetdb5/extras/rdf/rdfschema.h
Branch: rdf
Log Message:

Fix bug in memory reallocation (in merging CSs)


diffs (95 lines):

diff --git a/monetdb5/extras/rdf/rdfschema.c b/monetdb5/extras/rdf/rdfschema.c
--- a/monetdb5/extras/rdf/rdfschema.c
+++ b/monetdb5/extras/rdf/rdfschema.c
@@ -3251,12 +3251,15 @@ void freeLabelStat(LabelStat *labelStat)
 }
 
 static 
-void doMerge(CSset *freqCSset, int ruleNum, CS* cs1, CS* cs2, int freqId1, int \
freqId2, oid *mergecsId, CSlabel** labels, oid** ontmetadata, int ontmetadataCount, \
oid name){ +void doMerge(CSset *freqCSset, int ruleNum, int freqId1, int freqId2, oid \
*mergecsId, CSlabel** labels, oid** ontmetadata, int ontmetadataCount, oid name){  CS \
*mergecs;   int		existMergecsId; 
 	CS		*existmergecs, *mergecs1, *mergecs2; 
 	int	k; 
-
+	CS 	*cs1, *cs2;
+
+	cs1 = &(freqCSset->items[freqId1]);
+	cs2 = &(freqCSset->items[freqId2]);
 	//Check whether these CS's belong to any mergeCS
 	if (cs1->parentFreqIdx == -1 && cs2->parentFreqIdx == -1){	/* New merge */
 		mergecs = mergeTwoCSs(*cs1,*cs2, freqId1,freqId2, *mergecsId);
@@ -3376,7 +3379,7 @@ str mergeMaxFreqCSByS1(CSset *freqCSset,
 				#endif
 				if ((*labels)[freqId2].isOntology == 1){
 					//printf("Merge FreqCS %d and FreqCS %d by Ontology name \n", freqId1, \
                freqId2);
-					doMerge(freqCSset, S1, cs1, cs2, freqId1, freqId2, mergecsId, labels, \
ontmetadata, ontmetadataCount, *name); +					doMerge(freqCSset, S1, freqId1, freqId2, \
                mergecsId, labels, ontmetadata, ontmetadataCount, *name);
 					//printf("Number of added cs in freqCS: %d \n", freqCSset->numCSadded); 
 					tmpCount++;
 				}
@@ -3406,7 +3409,7 @@ str mergeMaxFreqCSByS1(CSset *freqCSset,
 				#endif
 				if ((*labels)[freqId2].isType == 1){
 					//printf("Merge FreqCS %d and FreqCS %d by Type name \n", freqId1, freqId2);
-					doMerge(freqCSset, S1, cs1, cs2, freqId1, freqId2, mergecsId, labels, \
ontmetadata, ontmetadataCount, *name); +					doMerge(freqCSset, S1, freqId1, freqId2, \
                mergecsId, labels, ontmetadata, ontmetadataCount, *name);
 					//printf("Number of added cs in freqCS: %d \n", freqCSset->numCSadded); 				
 					tmpCount++;
 				}
@@ -3436,7 +3439,7 @@ str mergeMaxFreqCSByS1(CSset *freqCSset,
 				#endif
 				if ((*labels)[freqId2].isFK == 1){
 					//printf("Merge FreqCS %d and FreqCS %d by FK name \n", freqId1, freqId2);
-					doMerge(freqCSset, S1, cs1, cs2, freqId1, freqId2, mergecsId, labels, \
ontmetadata, ontmetadataCount, *name); +					doMerge(freqCSset, S1, freqId1, freqId2, \
                mergecsId, labels, ontmetadata, ontmetadataCount, *name);
 					//printf("Number of added cs in freqCS: %d \n", freqCSset->numCSadded); 					
 					tmpCount++;
 				}
@@ -3580,7 +3583,7 @@ void mergeMaxFreqCSByS6(CSrel *csrelMerg
 						if (cs2->type == DIMENSIONCS) continue; 
 						#endif
 
-						doMerge(freqCSset, S5, cs1, cs2, freqId1, freqId2, mergecsId, labels, \
ontmetadata, ontmetadataCount, BUN_NONE); +						doMerge(freqCSset, S5, freqId1, \
freqId2, mergecsId, labels, ontmetadata, ontmetadataCount, BUN_NONE);  
 					}
 
@@ -3794,12 +3797,13 @@ void mergeCSByS3S5(CSset *freqCSset, CSl
 		isLabelComparable = 0; 
 		if ((*labels)[freqId1].name != BUN_NONE) isLabelComparable = 1; // no "DUMMY"
 
-		cs1 = (CS*) &(freqCSset->items[freqId1]);
 				
 		#if	NOT_MERGE_DIMENSIONCS
-		if (cs1->type == DIMENSIONCS) continue; 
+		if (freqCSset->items[freqId1].type == DIMENSIONCS) continue; 
 		#endif
 	 	for (j = (i+1); j < curNumMergeCS; j++){
+			cs1 = (CS*) &(freqCSset->items[freqId1]);
+
 			freqId2 = mergeCSFreqCSMap[j];
 			cs2 = (CS*) &(freqCSset->items[freqId2]);
 			#if	NOT_MERGE_DIMENSIONCS
@@ -8293,6 +8297,7 @@ RDFreorganize(int *ret, CStableStat *cst
 		free(mfreqIdxTblIdxMapping);
 		free(mTblIdxFreqIdxMapping);
 		freeCSPropTypes(csPropTypes,numTables);
+		freeCSrelSet(csRelFinalFKs, numTables);
 		printf("Finish & Exit exploring step! \n"); 
 		
 		return MAL_SUCCEED;
diff --git a/monetdb5/extras/rdf/rdfschema.h b/monetdb5/extras/rdf/rdfschema.h
--- a/monetdb5/extras/rdf/rdfschema.h
+++ b/monetdb5/extras/rdf/rdfschema.h
@@ -217,8 +217,9 @@ typedef struct SubCSSet{
 	int 	numAllocation; 
 } SubCSSet;
 
-#define INIT_NUM_CS 9999 // workaround
+//#define INIT_NUM_CS 9999 // workaround
 //#define INIT_NUM_CS 500 // workaround
+#define INIT_NUM_CS 2
 #define SIM_THRESHOLD 0.6
 #define SIM_TFIDF_THRESHOLD 0.55
 #define IMPORTANCE_THRESHOLD 0.01
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic