Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix bug in automatic memory management for table creation rules
Problemes apparaissant avec des schema en flocon est des vues - detecte dans z_TableCreationRules\NoKeyInCreatedSnowflake - variantes selon CheckDatabase, Compute, avec plus ou moins de constructed features - exemple, flocon: Customer-Service-Usage - Vue ServiceView sur Service, avec recuperation des usages - Services en Unused: - destruction des Usages depuis Services, ce qui les rend inutilisables depuis les ServiceView Autre probleme: jeu de test TestKhiops\z_TableCreationRules\BugDeleteSubTableOfView - apprentissage avec creation de variables Bilan - les corrections ci-dessous permettent de resoudre tous les problemes connus - la trace est maintenant suffisante pour identifier les problemes de gestion memoire - il va falloir par contre optimiser la gestion des classe phtsique dans KWDatabase pour oiptiiser les calculs dans le cas de vues - gestion non optimale des attributs utilises pour le calcul de la classe logique par KWDatabase - cf. KWDRRelationCreationRule::BuildAllUsedAttributes Tentative abandonnee de gestion automatique de la memoire par comptage de reference - KWObject: mise en place de la gestion des references - longint lRefCount - SafeReferenceObject, SaveDeleteObject - idem pour tableau d'objets et bloc sparse de tableaux d'objets - utilisation dans KWObject des methodes SafeReference* et SafeDelete* - ComputeAllValues - DeleteAttributes - CleanTemporayDataItemsToComputeAndClean - CleanAllNonNativeAttributes - CleanNativeRelationAttributes - Mutate - KWClass: nettoyage de la gestion des UnloadedOwnedRelationAttribute - GetUnloadedOwnedRelationAttributeNumber: supprime - GetUnloadedOwnedRelationAttributeAt: supprime - GetTotalInternallyLoadedDataItemNumber: a supprimer - impacts sur KWObject: DeleteAttributes, Mutate, GetUsedMemory - KWDatabase: nettoyage du calcul des attributs a garder - BuildPhysicalClass: calcul des attributs a garder commente - supression de ce parametre a propager - ComputeUnusedNativeAttributesToKeep: a suprimer - ComputeUnusedNativeAttributesToKeepForRule: a supprimer - abandon car cela ne marche pas a cause des cycle de references potentiels - cf. graphe de donnees, base de molecules KWDatabase::BuildPhysicalClass - quand on reordonne les attribut physique surnumeraire en fin de classe, on ne deplace ceux qui etaient utilises dfans la classe logique - par exemple: besoin d'un attribut natif used d'un classe en unused, mais en source d'une vue KWDatabase::ComputeUnusedNativeAttributesToKeepForRule - on prend on compte toutes les variables de type relation, quelle que soit leur nature - avant, on se limitait aux operandes relations de même type que celui du code retour de la regle - cela ne suffit pas pour les regles de creation d'instances - on prend maintenant en operande l'ensemble des classes necessaires recursivement dans le flocon - on garde ainsi tous les attributs crees associes a un dictionnaire necessaire - resout le cas d'un dictionnaire utilise pour calculer une vue, mais jamais directement utilise sinon Correction mineure additionnelle - Bug dans les mappings multi-table avec des variables de type relation dont le nom est de longueur 1 - Bug d'assertion dans le mapping multi-table pour un nom de variable de un seul caractere en fin de data path - Bug d'effet de bord - Correction dans KWMTDatabaseMapping::CheckDataPath Amelioration de la trace pour aider au diagnistique des probleme de gestion memoire des KWObject - KWMTDatabase::UpdateMultiTableMappings: ajout de trace - KWDatabase::BuildPhysicalClass: stabilisation de la trace - tri des classe - tri des attributs par classe, puis par nom - impact avec KWAttributeCompareClassAndAttributeName - variante de KWAttributeCompareName avec comparaison prealable du nom de la classe - KWDatabase::MutatePhysicalObject: ajout de trace avant et apres mutation - KWObject::PrettyWrite: version de Write avec indentations - KWObject: ajout de trace pour la mise au point fine des mutations d'objets - ComputeAllValues - DeleteAttributes - Mutate Tests complets sur \z_TableCreationRules en debug
- Loading branch information