Index: Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/Migration_17.3_18.1.sql =================================================================== diff -u -rd9567ad9a530beced57fa695be79dbfba404d5fd -rd46a891e1b44443392e77b1f84224c89e1ec8785 --- Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/Migration_17.3_18.1.sql (.../Migration_17.3_18.1.sql) (revision d9567ad9a530beced57fa695be79dbfba404d5fd) +++ Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/Migration_17.3_18.1.sql (.../Migration_17.3_18.1.sql) (revision d46a891e1b44443392e77b1f84224c89e1ec8785) @@ -818,19 +818,23 @@ ); -- Create the calculations for the Hydraulic Boundary Locations on Grass Cover Erosion Outwards Failure Mechanism level --- Note: it is assumed that the HBL entities of the grass cover erosion outwards failure mechanism have the same PK value --- as the HBL entities on assessment section level. Otherwise a join needs to be done on each column to find matching results +-- Note 1: It is assumed that LocationId is unique within an assessment section. Because it is possible for multiple +-- assessment sections to have the same hydraulic boundary locations (and thus same LocationIds), a join needs to be +-- performed based on the LocationId and the AssessmentSection +-- Note 2: The Hydraulic Location ID on assessment section level is chosen as a reference, because the hydraulic boundary +-- location calculation entities contain references to these entities. INSERT INTO TempHydraulicLocationCalculationEntity ( [HydraulicLocationEntityId], [GrassCoverErosionOutwardsFailureMechanismMetaEntityId], [CalculationType]) SELECT - [GrassCoverErosionOutwardsHydraulicLocationEntityId], + hl.HydraulicLocationEntityId, [GrassCoverErosionOutwardsFailureMechanismMetaEntityId], [CalculationType] -FROM [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationEntity -JOIN [SOURCEPROJECT].FailureMechanismEntity USING(FailureMechanismEntityId) +FROM [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationEntity gceohl +JOIN [SOURCEPROJECT].FailureMechanismEntity fm USING(FailureMechanismEntityId) JOIN [SOURCEPROJECT].GrassCoverErosionOutwardsFailureMechanismMetaEntity USING(FailureMechanismEntityId) +JOIN [SOURCEPROJECT].HydraulicLocationEntity hl ON (hl.LocationId = gceohl.LocationId AND hl.AssessmentSectionEntityId = fm.AssessmentSectionEntityId) JOIN ( SELECT * FROM TempCalculationTypes @@ -1080,13 +1084,13 @@ JOIN HydraulicLocationCalculationEntity USING(HydraulicLocationCalculationCollectionEntityId) JOIN HydraulicLocationEntity hl USING(HydraulicLocationEntityId) JOIN ( - SELECT - LocationId, - AssessmentSectionEntityId, - ShouldDesignWaterLevelIllustrationPointsBeCalculated, - ShouldWaveHeightIllustrationPointsBeCalculated - FROM [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationEntity - JOIN [SOURCEPROJECT].FailureMechanismEntity USING(FailureMechanismEntityId) + SELECT + [LocationId], + [AssessmentSectionEntityId], + [ShouldDesignWaterLevelIllustrationPointsBeCalculated], + [ShouldWaveHeightIllustrationPointsBeCalculated] + FROM [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationEntity + JOIN [SOURCEPROJECT].FailureMechanismEntity USING(FailureMechanismEntityId) ) SOURCE ON (SOURCE.LocationId = hl.LocationId AND SOURCE.AssessmentSectionEntityId = fm.AssessmentSectionEntityId) WHERE (ShouldDesignWaterLevelIllustrationPointsBeCalculated = 1 AND NormativeNormType = 2 AND gceofmme.HydraulicLocationCalculationCollectionEntity2Id = hlcce.HydraulicLocationCalculationCollectionEntityId) OR (ShouldDesignWaterLevelIllustrationPointsBeCalculated = 1 AND NormativeNormType = 1 AND gceofmme.HydraulicLocationCalculationCollectionEntity3Id = hlcce.HydraulicLocationCalculationCollectionEntityId) @@ -1114,16 +1118,31 @@ [CalculatedReliability], [CalculationConvergence] FROM GrassCoverErosionOutwardsFailureMechanismMetaEntity gceofmme -JOIN FailureMechanismEntity USING(FailureMechanismEntityId) +JOIN FailureMechanismEntity fm USING(FailureMechanismEntityId) JOIN AssessmentSectionEntity USING(AssessmentSectionEntityId) JOIN HydraulicLocationCalculationCollectionEntity hlcce ON gceofmme.HydraulicLocationCalculationCollectionEntity2Id = hlcce.HydraulicLocationCalculationCollectionEntityId OR gceofmme.HydraulicLocationCalculationCollectionEntity3Id = hlcce.HydraulicLocationCalculationCollectionEntityId OR gceofmme.HydraulicLocationCalculationCollectionEntity5Id = hlcce.HydraulicLocationCalculationCollectionEntityId OR gceofmme.HydraulicLocationCalculationCollectionEntity6Id = hlcce.HydraulicLocationCalculationCollectionEntityId JOIN HydraulicLocationCalculationEntity USING(HydraulicLocationCalculationCollectionEntityId) -JOIN [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationEntity ON GrassCoverErosionOutwardsHydraulicLocationEntityId = HydraulicLocationEntityId -JOIN [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationOutputEntity USING(GrassCoverErosionOutwardsHydraulicLocationEntityId) +JOIN HydraulicLocationEntity hl USING(HydraulicLocationEntityId) +JOIN ( + SELECT + [LocationId], + [AssessmentSectionEntityId], + [GeneralResultSubMechanismIllustrationPointEntityId], + [Result], + [TargetProbability], + [TargetReliability], + [CalculatedProbability], + [CalculatedReliability], + [CalculationConvergence], + [HydraulicLocationOutputType] + FROM [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationOutputEntity + JOIN [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationEntity USING(GrassCoverErosionOutwardsHydraulicLocationEntityId) + JOIN [SOURCEPROJECT].FailureMechanismEntity USING(FailureMechanismEntityId) +) SOURCE ON (SOURCE.LocationId = hl.LocationId AND SOURCE.AssessmentSectionEntityId = fm.AssessmentSectionEntityId) WHERE (HydraulicLocationOutputType = 1 AND NormativeNormType = 2 AND gceofmme.HydraulicLocationCalculationCollectionEntity2Id = hlcce.HydraulicLocationCalculationCollectionEntityId) OR (HydraulicLocationOutputType = 1 AND NormativeNormType = 1 AND gceofmme.HydraulicLocationCalculationCollectionEntity3Id = hlcce.HydraulicLocationCalculationCollectionEntityId) OR (HydraulicLocationOutputType = 2 AND NormativeNormType = 2 AND gceofmme.HydraulicLocationCalculationCollectionEntity5Id = hlcce.HydraulicLocationCalculationCollectionEntityId) Index: Application/Ringtoets/test/Application.Ringtoets.Migration.Core.Test/test-data/FullTestProject173.rtd =================================================================== diff -u -rd9567ad9a530beced57fa695be79dbfba404d5fd -rd46a891e1b44443392e77b1f84224c89e1ec8785 Binary files differ Index: Application/Ringtoets/test/Application.Ringtoets.Migration.Core.Test/test-data/FullTestProject181.rtd =================================================================== diff -u -r7581847b1a3f63af059c6ac976f14d6ec842e8cd -rd46a891e1b44443392e77b1f84224c89e1ec8785 Binary files differ Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/MigrationTo181IntegrationTest.cs =================================================================== diff -u -rd9567ad9a530beced57fa695be79dbfba404d5fd -rd46a891e1b44443392e77b1f84224c89e1ec8785 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/MigrationTo181IntegrationTest.cs (.../MigrationTo181IntegrationTest.cs) (revision d9567ad9a530beced57fa695be79dbfba404d5fd) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/MigrationTo181IntegrationTest.cs (.../MigrationTo181IntegrationTest.cs) (revision d46a891e1b44443392e77b1f84224c89e1ec8785) @@ -1767,16 +1767,34 @@ private static string GetHydraulicLocationCalculationsFromFailureMechanismQuery(CalculationType calculationType) { - return "FROM GrassCoverErosionOutwardsFailureMechanismMetaEntity " + + return "FROM GrassCoverErosionOutwardsFailureMechanismMetaEntity gceofmm " + "JOIN HydraulicLocationCalculationCollectionEntity " + - $"ON HydraulicLocationCalculationCollectionEntity{(int) calculationType}Id = HydraulicLocationCalculationCollectionEntityId " + - "JOIN HydraulicLocationCalculationEntity USING(HydraulicLocationCalculationCollectionEntityId) "; + $"ON gceofmm.HydraulicLocationCalculationCollectionEntity{(int) calculationType}Id = HydraulicLocationCalculationCollectionEntityId " + + "JOIN HydraulicLocationCalculationEntity USING(HydraulicLocationCalculationCollectionEntityId) " + + "JOIN HydraulicLocationEntity hl USING(HydraulicLocationEntityId) " + + "JOIN FailureMechanismEntity fm USING(FailureMechanismEntityId) " + + "JOIN AssessmentSectionEntity USING(AssessmentSectionEntityId) "; } private static string GetHydraulicLocationCalculationOutputValidationSubQuery() { return "JOIN HydraulicLocationOutputEntity NEW USING(HydraulicLocationCalculationEntityId) " + - "JOIN [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationOutputEntity OLD ON NEW.GeneralResultSubMechanismIllustrationPointEntityId IS OLD.GeneralResultSubMechanismIllustrationPointEntityId " + + "JOIN ( " + + "SELECT " + + "LocationId, " + + "AssessmentSectionEntityId, " + + "GeneralResultSubMechanismIllustrationPointEntityId, " + + "Result, " + + "TargetProbability, " + + "TargetReliability, " + + "CalculatedProbability, " + + "CalculatedReliability, " + + "CalculationConvergence " + + "FROM [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationOutputEntity " + + "JOIN [SOURCEPROJECT].GrassCoverErosionOutwardsHydraulicLocationEntity USING(GrassCoverErosionOutwardsHydraulicLocationEntityId) " + + "JOIN [SOURCEPROJECT].FailureMechanismEntity USING(FailureMechanismEntityId) " + + ") OLD ON (fm.AssessmentSectionEntityId = OLD.AssessmentSectionEntityId AND OLD.LocationId = hl.LocationId)" + + "WHERE NEW.GeneralResultSubMechanismIllustrationPointEntityId IS OLD.GeneralResultSubMechanismIllustrationPointEntityId " + "AND NEW.Result IS OLD.Result " + "AND NEW.TargetProbability IS OLD.TargetProbability " + "AND NEW.TargetReliability IS OLD.TargetReliability " +