From 9fe41d488e38942fcd46658f61e7b3faf02601a3 Mon Sep 17 00:00:00 2001
From: Juraj Nemec <60540-poker10@users.noreply.drupalcode.org>
Date: Wed, 6 Nov 2024 16:26:14 +0000
Subject: [PATCH 1/2] Replace GROUP_CONCAT on PostgreSQL

---
 commerce_pricelist.install | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/commerce_pricelist.install b/commerce_pricelist.install
index 39663f1..7571a52 100644
--- a/commerce_pricelist.install
+++ b/commerce_pricelist.install
@@ -191,10 +191,18 @@ function commerce_pricelist_update_8205() {
  */
 function commerce_pricelist_update_8206() {
   // Check if we have duplicate price list items for the same product/quantity.
-  $query = \Drupal::database()->select('commerce_pricelist_item', 'cpi');
+  $database = \Drupal::database();
+  $query = $database->select('commerce_pricelist_item', 'cpi');
   $query->fields('cpi', ['price_list_id', 'purchasable_entity', 'quantity', 'price__currency_code']);
   $query->addExpression('COUNT(*)', 'cnt');
-  $query->addExpression('GROUP_CONCAT(cpi.id)', 'ids');
+
+  // GROUP_CONCAT is not supported on PostgreSQL.
+  if ($database->driver() == 'pgsql') {
+    $query->addExpression("STRING_AGG(cpi.id, ',')", 'ids');
+  } else {
+    $query->addExpression('GROUP_CONCAT(cpi.id)', 'ids');
+  }
+  
   $query
     ->groupBy('type')
     ->groupBy('price_list_id')
-- 
GitLab


From 25528046a0ca78c73d4dedc6d6d48329ccf2067d Mon Sep 17 00:00:00 2001
From: Juraj Nemec <60540-poker10@users.noreply.drupalcode.org>
Date: Fri, 8 Nov 2024 21:05:42 +0000
Subject: [PATCH 2/2] STRING_AGG needs a text as a first parameter

---
 commerce_pricelist.install | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/commerce_pricelist.install b/commerce_pricelist.install
index 7571a52..3ca1ddd 100644
--- a/commerce_pricelist.install
+++ b/commerce_pricelist.install
@@ -198,7 +198,7 @@ function commerce_pricelist_update_8206() {
 
   // GROUP_CONCAT is not supported on PostgreSQL.
   if ($database->driver() == 'pgsql') {
-    $query->addExpression("STRING_AGG(cpi.id, ',')", 'ids');
+    $query->addExpression("STRING_AGG(cpi.id::text, ',')", 'ids');
   } else {
     $query->addExpression('GROUP_CONCAT(cpi.id)', 'ids');
   }
-- 
GitLab