From 8e7f88592810b9b382f712246507920fcd85ab37 Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Tue, 7 Sep 2021 13:25:00 +0200
Subject: [PATCH] Use new method to collect driver-name and use it to optimize
 query

---
 .../Metadata/MetaDataStorageHandlerPdo.php     | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
index f662f5138..bbd5d99e3 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
@@ -279,18 +279,28 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource
     {
         $stmt = 0;
         $fine = true;
+        $driver = $this->db->getDriver();
+
+        $text = 'TEXT';
+        if ($driver === 'mysql') {
+            $text = 'MEDIUMTEXT';
+        }
+
         foreach ($this->supportedSets as $set) {
             $tableName = $this->getTableName($set);
-            $rows = $this->db->write(
-                "CREATE TABLE IF NOT EXISTS $tableName (entity_id VARCHAR(255) PRIMARY KEY NOT NULL, entity_data " .
-                "TEXT NOT NULL)"
-            );
+            $rows = $this->db->write(sprintf(
+                "CREATE TABLE IF NOT EXISTS $tableName (entity_id VARCHAR(255) PRIMARY KEY NOT NULL, "
+                    . "entity_data %s NOT NULL)",
+                $text
+            ));
+
             if ($rows === false) {
                 $fine = false;
             } else {
                 $stmt += $rows;
             }
         }
+
         if (!$fine) {
             return false;
         }
-- 
GitLab