try to get string_Add to work in recommendation job by adding a cast, take 2, a=chris

Chris Pollett [2022-12-13 20:Dec:th]
try to get string_Add to work in recommendation job by adding a cast, take 2, a=chris
Filename
src/library/media_jobs/RecommendationJob.php
diff --git a/src/library/media_jobs/RecommendationJob.php b/src/library/media_jobs/RecommendationJob.php
index 2e80b7124..6addac561 100644
--- a/src/library/media_jobs/RecommendationJob.php
+++ b/src/library/media_jobs/RecommendationJob.php
@@ -538,10 +538,12 @@ class RecommendationJob extends MediaJob
     {
         L\crawlLog("...Computing User Item Similarity Scores.");
         $db = $this->db;
+        //SQLITE and MYSQL use GROUP_CONCAT, Postgres uses STRING_AGG
         $db_list_function = in_array($db->to_upper_dbms, ["SQLITE3", "MYSQL"]) ?
             "GROUP_CONCAT" : "STRING_AGG";
-        $user_group_sql = "SELECT USER_ID, $db_list_function(GROUP_ID, ',')" .
-            " AS GROUP_IDS FROM USER_GROUP GROUP BY USER_ID";
+        $user_group_sql = "SELECT USER_ID, $db_list_function(" .
+            "CAST(GROUP_ID AS STRING), ',') " .
+            "AS GROUP_IDS FROM USER_GROUP GROUP BY USER_ID";
         $results = $db->execute($user_group_sql);
         $user_groups = [];
         while ($row = $db->fetchArray($results)) {
@@ -685,15 +687,17 @@ class RecommendationJob extends MediaJob
     public function computeGroupUserEmbeddings($group_embeddings)
     {
         $db = $this->db;
+        //SQLITE and MYSQL use GROUP_CONCAT, Postgres uses STRING_AGG
         $db_list_function = in_array($db->to_upper_dbms, ["SQLITE3", "MYSQL"]) ?
             "GROUP_CONCAT" : "STRING_AGG";
         $timestamp = floor(time() / self::UPDATE_PERIOD ) * self::UPDATE_PERIOD;
         $condition = "ITEM_TYPE = ? AND USER_ID <> 2 AND" .
             " ((UPDATE_PERIOD = ? AND UPDATE_TIMESTAMP = ?) OR" .
             " (UPDATE_PERIOD = ?))";
-        $impression_sql = "SELECT USER_ID, $db_list_function(ITEM_ID, ',') AS" .
-            " ITEM_IDS FROM ITEM_IMPRESSION_SUMMARY WHERE $condition" .
-            " GROUP BY USER_ID";
+        $impression_sql = "SELECT USER_ID, $db_list_function( ".
+            "CAST(ITEM_ID AS STRING), ',') AS " .
+            "ITEM_IDS FROM ITEM_IMPRESSION_SUMMARY WHERE $condition " .
+            "GROUP BY USER_ID";
         $results = $db->execute($impression_sql,
             [C\GROUP_IMPRESSION, self::UPDATE_PERIOD, $timestamp,
                 C\MOST_RECENT_VIEW]);
@@ -1154,15 +1158,17 @@ class RecommendationJob extends MediaJob
     public function computeWikiUserEmbeddings($item_embeddings)
     {
         $db = $this->db;
+        //SQLITE and MYSQL use GROUP_CONCAT, Postgres uses STRING_AGG
         $db_list_function = in_array($db->to_upper_dbms, ["SQLITE3", "MYSQL"]) ?
             "GROUP_CONCAT" : "STRING_AGG";
         $timestamp = floor(time() / self::UPDATE_PERIOD ) * self::UPDATE_PERIOD;
         $condition = "ITEM_TYPE = ? AND USER_ID <> 2 AND" .
             " ((UPDATE_PERIOD = ? AND UPDATE_TIMESTAMP = ?) OR" .
             " (UPDATE_PERIOD = ?))";
-        $impression_sql = "SELECT USER_ID, $db_list_function(ITEM_ID, ',') AS" .
-            " ITEM_IDS FROM ITEM_IMPRESSION_SUMMARY WHERE $condition" .
-            " GROUP BY USER_ID";
+        $impression_sql = "SELECT USER_ID, $db_list_function( " .
+            "CAST(ITEM_ID AS STRING), ',') AS " .
+            "ITEM_IDS FROM ITEM_IMPRESSION_SUMMARY WHERE $condition " .
+            "GROUP BY USER_ID";
         $results = $db->execute($impression_sql,
             [C\RESOURCE_IMPRESSION, self::UPDATE_PERIOD, $timestamp,
                 C\MOST_RECENT_VIEW]);
ViewGit