Skip to content

Commit

Permalink
WIP Step 2
Browse files Browse the repository at this point in the history
Correction de tous les problemes connus de gestion automatique de la memoire

Mais gestion non optimale des attributs utilises pour le calcul de la classe logique par KWDatabase
- cf. KWDRRelationCreationRule::BuildAllUsedAttributes
  • Loading branch information
marcboulle committed Jul 19, 2024
1 parent 6ef1df4 commit 7a2ed34
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/Learning/KWData/KWDatabase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2232,6 +2232,8 @@ void KWDatabase::ComputeUnusedNativeAttributesToKeepForRule(const NumericKeyDict
attribute->GetAnyDerivationRule());

// Memorisation de l'attribut natif ou cree sinon, s'il n'est pas utilise
//DDD On prend en compte toutes les classes, sinon cela fait planter z_TableCreationRules\BugDeleteSubTableOfView
//DDD le parametre nkdNeededClasses est donc ignoer et inutile!!!
/*DDD
if (not attribute->IsInBlock() and not attribute->GetReference() and
not attribute->GetUsed() and
Expand Down
31 changes: 30 additions & 1 deletion src/Learning/KWData/KWRelationCreationRule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -963,7 +963,9 @@ void KWDRRelationCreationRule::BuildAllUsedAttributes(const KWAttribute* derived
{
// On ne traite que les attributs natifs utilises non deja prise en compte
// par une alimentation de type calcul
//DDD if (targetAttribute->GetUsed() and targetAttribute->GetDerivationRule() == NULL)
//DDD On doit integrer meme les attribut en Unused (BUG EN COURS)
//DDD if (targetAttribute->GetUsed() and targetAttribute->GetDerivationRule() == NULL and
//DDD odOutputAttributeNames.Lookup(targetAttribute->GetName()) == NULL)
if (targetAttribute->GetDerivationRule() == NULL and
odOutputAttributeNames.Lookup(targetAttribute->GetName()) == NULL)
{
Expand Down Expand Up @@ -991,6 +993,33 @@ void KWDRRelationCreationRule::BuildAllUsedAttributes(const KWAttribute* derived
// Attribut suivant
kwcTargetClass->GetNextAttribute(targetAttribute);
}

//DDD On doit integrer tous les attribut Used de la classe source (BUG EN COURS)
//DDD Sinon, on a des incoherences entre la classe source et cible lors des calculs
//DDD de classe phyisuqe dans les Database
// Parcours des attributs utilises de la classe source
sourceAttribute = kwcSourceClass->GetHeadAttribute();
while (sourceAttribute != NULL)
{
if (sourceAttribute->GetUsed())
{
// Analyse de l'attribut si necessaire
if (nkdAllUsedAttributes->Lookup(sourceAttribute) == NULL)
{
// Memorisation de l'attribut dans le dictionnaire
nkdAllUsedAttributes->SetAt(sourceAttribute, sourceAttribute);

// Acces a la regle d'attribut ou de bloc
sourceAttributeRule = sourceAttribute->GetAnyDerivationRule();
if (sourceAttributeRule != NULL)
sourceAttributeRule->BuildAllUsedAttributes(sourceAttribute,
nkdAllUsedAttributes);
}
}

// Attribut suivant
kwcSourceClass->GetNextAttribute(sourceAttribute);
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/Learning/MODL/MODL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ int main(int argc, char** argv)
// Choix du repertoire de lancement pour le debugage sous Windows (a commenter apres fin du debug)
// SetWindowsDebugDir("Standard", "IrisLight");
// SetWindowsDebugDir("Standard", "IrisU2D");
SetWindowsDebugDir("z_TableCreationRules", "BugDeleteSubTableOfView");
SetWindowsDebugDir("z_TableCreationRules", "BUG");

// Parametrage des logs memoires depuis les variables d'environnement, pris en compte dans KWLearningProject
// KhiopsMemStatsLogFileName, KhiopsMemStatsLogFrequency, KhiopsMemStatsLogToCollect
Expand Down

0 comments on commit 7a2ed34

Please sign in to comment.