diff --git a/procedures/retrieveEntityOverrides.sql b/procedures/retrieveEntityOverrides.sql index e070cbcff1d43cff168ecebd42b4041857eba573..d7c181ddcfa5723d2d21a2d9e5e4d380f6eb02d4 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 4829c53b70c33f57f69feb6bd51e948f010a4f47..01bb6a4a2a0108329844f52c1cfb2ec9533514bb 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 d52fe5a6b2683c2277930b7f89fe4406aef468d5..ced1a9a82c43ba9d3df076c55fa47ce50e951f8e 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 ;