diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2022-03-10 12:03:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-10 12:03:42 +0100 |
commit | b0db62300c3d69abd2f2536b2d27d37412388d29 (patch) | |
tree | 3f5a1722316ae8b47c1dd61e40015051dab8c7e8 | |
parent | afb3c101c650a454121d90cc3b301b59bf50dbca (diff) | |
parent | c0cc764a6accecef09d42f954080c57217bb652b (diff) | |
download | nextcloud-server-b0db62300c3d69abd2f2536b2d27d37412388d29.tar.gz nextcloud-server-b0db62300c3d69abd2f2536b2d27d37412388d29.zip |
Merge pull request #31443 from nextcloud/backport/31436/stable22
[stable22] be conservative when reading from fresh created column
-rw-r--r-- | apps/user_ldap/lib/Migration/Version1130Date20211102154716.php | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php b/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php index 27f5f5ce504..2cca72ac493 100644 --- a/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php +++ b/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php @@ -43,6 +43,8 @@ class Version1130Date20211102154716 extends SimpleMigrationStep { private $dbc; /** @var LoggerInterface */ private $logger; + /** @var string[] */ + private $hashColumnAddedToTables = []; public function __construct(IDBConnection $dbc, LoggerInterface $logger) { $this->dbc = $dbc; @@ -89,6 +91,7 @@ class Version1130Date20211102154716 extends SimpleMigrationStep { 'length' => 64, ]); $changeSchema = true; + $this->hashColumnAddedToTables[] = $tableName; } $column = $table->getColumn('ldap_dn'); if ($tableName === 'ldap_user_mapping') { @@ -109,7 +112,7 @@ class Version1130Date20211102154716 extends SimpleMigrationStep { $table->addUniqueIndex(['directory_uuid'], 'ldap_user_directory_uuid'); $changeSchema = true; } - } else if (!$schema->hasTable('ldap_group_mapping_backup')) { + } elseif (!$schema->hasTable('ldap_group_mapping_backup')) { // We need to copy the table twice to be able to change primary key, prepare the backup table $table2 = $schema->createTable('ldap_group_mapping_backup'); $table2->addColumn('ldap_dn', Types::STRING, [ @@ -177,9 +180,16 @@ class Version1130Date20211102154716 extends SimpleMigrationStep { protected function getSelectQuery(string $table): IQueryBuilder { $qb = $this->dbc->getQueryBuilder(); - $qb->select('owncloud_name', 'ldap_dn', 'ldap_dn_hash') - ->from($table) - ->where($qb->expr()->isNull('ldap_dn_hash')); + $qb->select('owncloud_name', 'ldap_dn') + ->from($table); + + // when added we may run into risk that it's read from a DB node + // where the column is not present. Then the where clause is also + // not necessary since all rows qualify. + if (!in_array($table, $this->hashColumnAddedToTables, true)) { + $qb->where($qb->expr()->isNull('ldap_dn_hash')); + } + return $qb; } @@ -260,7 +270,7 @@ class Version1130Date20211102154716 extends SimpleMigrationStep { * @return Generator<string> * @throws \OCP\DB\Exception */ - protected function getDuplicatedUuids(string $table): Generator{ + protected function getDuplicatedUuids(string $table): Generator { $select = $this->dbc->getQueryBuilder(); $select->select('directory_uuid') ->from($table) |