From d511da7b713dae0dd1ce9f5a497e4d660b49f93d Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Fri, 20 Mar 2020 22:48:42 +0100 Subject: [PATCH] EHN: versioning phase 5 --- procedures/retrieveEntityOverrides.sql | 9 ++++-- procedures/retrieveEntityProperties.sql | 10 +++++-- tests/test_0_next_patch.sql | 39 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/procedures/retrieveEntityOverrides.sql b/procedures/retrieveEntityOverrides.sql index e070cbc..d7c181d 100644 --- a/procedures/retrieveEntityOverrides.sql +++ b/procedures/retrieveEntityOverrides.sql @@ -35,13 +35,18 @@ retrieveOverridesBody: BEGIN IF is_feature_config("ENTITY_VERSIONING", "ENABLED") THEN IF Version IS NOT NULL THEN - SELECT get_head_version(EntityID) = Version INTO IsHead; + IF DomainID = 0 THEN + SELECT get_head_version(EntityID) = Version INTO IsHead; + ELSE + SELECT get_head_version(DomainID) = Version INTO IsHead; + END IF; END IF; IF IsHead IS FALSE THEN SELECT e._iversion INTO IVersion FROM entity_version as e - WHERE e.entity_id = EntityID + WHERE ((e.entity_id = EntityID AND DomainID = 0) + OR (e.entity_id = DomainID)) AND e.version = Version; IF IVersion IS NULL THEN diff --git a/procedures/retrieveEntityProperties.sql b/procedures/retrieveEntityProperties.sql index 4829c53..01bb6a4 100644 --- a/procedures/retrieveEntityProperties.sql +++ b/procedures/retrieveEntityProperties.sql @@ -37,13 +37,19 @@ retrieveEntityPropertiesBody: BEGIN IF is_feature_config("ENTITY_VERSIONING", "ENABLED") THEN IF Version IS NOT NULL THEN - SELECT get_head_version(EntityID) = Version INTO IsHead; + IF DomainID = 0 THEN + SELECT get_head_version(EntityID) = Version INTO IsHead; + ELSE + SELECT get_head_version(DomainID) = Version INTO IsHead; + END IF; + END IF; IF IsHead IS FALSE THEN SELECT e._iversion INTO IVersion FROM entity_version as e - WHERE e.entity_id = EntityID + WHERE ((e.entity_id = EntityID AND DomainID = 0) + OR (e.entity_id = DomainID)) AND e.version = Version; IF IVersion IS NULL THEN diff --git a/tests/test_0_next_patch.sql b/tests/test_0_next_patch.sql index d52fe5a..ced1a9a 100644 --- a/tests/test_0_next_patch.sql +++ b/tests/test_0_next_patch.sql @@ -358,6 +358,45 @@ BEGIN END // +DROP PROCEDURE IF EXISTS retrieveQueryTemplateDef // +CREATE PROCEDURE retrieveQueryTemplateDef ( + in EntityID INT UNSIGNED, + in Version VARBINARY(255)) +retrieveQueryTemplateDefBody: BEGIN + + DECLARE IVersion INT UNSIGNED DEFAULT NULL; + DECLARE IsHead BOOLEAN DEFAULT TRUE; + + IF is_feature_config("ENTITY_VERSIONING", "ENABLED") THEN + IF Version IS NOT NULL THEN + SELECT get_head_version(EntityID) = Version INTO IsHead; + END IF; + + IF IsHead IS FALSE THEN + SELECT e._iversion INTO IVersion + FROM entity_version as e + WHERE e.entity_id = EntityID + AND e.version = Version; + + IF IVersion IS NULL THEN + -- RETURN EARLY - Version does not exist. + LEAVE retrieveQueryTemplateDefBody; + END IF; + + SELECT definition + FROM archive_query_template_def + WHERE id = EntityID + AND _iversion = IVersion; + + LEAVE retrieveQueryTemplateDefBody; + END IF; + END IF; + + SELECT definition + FROM query_template_def + WHERE id = EntityID; + +END // delimiter ; -- GitLab