summaryrefslogtreecommitdiffstats
path: root/lib/private/Repair
diff options
context:
space:
mode:
authorJulien Veyssier <julien-nc@posteo.net>2023-06-05 11:28:22 +0200
committerJulien Veyssier <julien-nc@posteo.net>2023-06-07 15:32:28 +0200
commit793d5320c38a1016ff7fb8a8dfefb0a9777a4ca8 (patch)
treebb5c9467348488fac267486abedaae084693beef /lib/private/Repair
parent1bd9544a8a28850f47aeb9809ecb259cde2a514c (diff)
downloadnextcloud-server-793d5320c38a1016ff7fb8a8dfefb0a9777a4ca8.tar.gz
nextcloud-server-793d5320c38a1016ff7fb8a8dfefb0a9777a4ca8.zip
shorten oauth2 client names before resizing the column
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
Diffstat (limited to 'lib/private/Repair')
-rw-r--r--lib/private/Repair/Owncloud/MigrateOauthTables.php21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/private/Repair/Owncloud/MigrateOauthTables.php b/lib/private/Repair/Owncloud/MigrateOauthTables.php
index 0b54793ebe2..5bf0816d8de 100644
--- a/lib/private/Repair/Owncloud/MigrateOauthTables.php
+++ b/lib/private/Repair/Owncloud/MigrateOauthTables.php
@@ -77,6 +77,27 @@ class MigrateOauthTables implements IRepairStep {
$schema = new SchemaWrapper($this->db);
$table = $schema->getTable('oauth2_clients');
if ($table->getColumn('name')->getLength() !== 64) {
+ // shorten existing values before resizing the column
+ $qb = $this->db->getQueryBuilder();
+ $qb->update('oauth2_clients')
+ ->set('name', $qb->createParameter('shortenedName'))
+ ->where($qb->expr()->eq('id', $qb->createParameter('theId')));
+
+ $qbSelect = $this->db->getQueryBuilder();
+ $qbSelect->select('id', 'name')
+ ->from('oauth2_clients');
+
+ $result = $qbSelect->executeQuery();
+ while ($row = $result->fetch()) {
+ $id = $row['id'];
+ $shortenedName = mb_substr($row['name'], 0, 64);
+ $qb->setParameter('theId', $id, IQueryBuilder::PARAM_INT);
+ $qb->setParameter('shortenedName', $shortenedName, IQueryBuilder::PARAM_STR);
+ $qb->executeStatement();
+ }
+ $result->closeCursor();
+
+ // safely set the new column length
$table->getColumn('name')->setLength(64);
}
if ($table->hasColumn('allow_subdomains')) {