[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