From 09c88b76eebbe451e16be4cbb1f97c2e69fb4e8f Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Mon, 9 Oct 2023 10:19:39 +0200
Subject: [PATCH] WIP: String IDs

---
 procedures/query/applyIDFilter.sql | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/procedures/query/applyIDFilter.sql b/procedures/query/applyIDFilter.sql
index 183a0f5..2b24947 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,
-- 
GitLab