diff --git a/procedures/query/applyIDFilter.sql b/procedures/query/applyIDFilter.sql index 183a0f512d2973188cb3fa0893846f83e1a19fe1..2b249471a0e70c673be1159eaffda7b0fa519ec2 100644 --- a/procedures/query/applyIDFilter.sql +++ b/procedures/query/applyIDFilter.sql @@ -55,6 +55,7 @@ IDFILTER_LABEL: BEGIN DECLARE data VARCHAR(20000) DEFAULT NULL; DECLARE aggVal VARCHAR(255) DEFAULT NULL; DECLARE direction CHAR(4) DEFAULT NULL; +DECLARE entity_id_type VARCHAR(255) DEFAULT "eids.id "; #-- get aggVal if possible IF agg IS NOT NULL THEN @@ -82,6 +83,10 @@ IF agg IS NOT NULL THEN SET aggVal = @sAggVal; END IF; +IF o = ">" OR o = ">=" OR o = "<" or o = "<=" THEN + SET entity_id_type = "CAST(eids.id AS UNSIGNED INT) "; +END IF; + #-- generate stmt string IF targetSet IS NULL OR targetSet = sourceSet THEN SET data = CONCAT( @@ -90,7 +95,8 @@ IF targetSet IS NULL OR targetSet = sourceSet THEN "` WHERE ", IF(o IS NULL OR EntityID IS NULL, "1=1", - CONCAT("NOT EXISTS (SELECT 1 FROM entity_ids AS eids WHERE eids.id ", + CONCAT("NOT EXISTS (SELECT 1 FROM entity_ids AS eids WHERE ", + entity_id_type, o, ' "', EntityID, @@ -111,7 +117,7 @@ ELSEIF versioned AND sourceSet = "entities" THEN '` (id, _iversion) SELECT e.id, _get_head_iversion(e.id) FROM `entities` AS e JOIN entity_ids AS eids ON (e.id = eids.internal_id) WHERE ', IF(o IS NULL OR EntityID IS NULL, "1=1", - CONCAT("eids.id ", + CONCAT(entity_id_type, o, ' "', EntityID, @@ -124,7 +130,7 @@ ELSEIF versioned AND sourceSet = "entities" THEN ' UNION SELECT e.id, _iversion FROM `archive_entities` AS e JOIN entity_ids AS eids ON (e.id = eids.internal_id) WHERE ', IF(o IS NULL OR EntityID IS NULL, "1=1", - CONCAT("eids.id ", + CONCAT(entity_id_type, o, ' "', EntityID, @@ -147,7 +153,7 @@ ELSE "` AS data JOIN entity_ids AS eids ON (eids.internal_id = data.id) WHERE ", IF(o IS NULL OR EntityID IS NULL, "1=1", - CONCAT("eids.id", + CONCAT(entity_id_type, o, ' "', EntityID,