From 2140188dbf82eca83bf781ac0e75a228b804337f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Mon, 6 Nov 2023 17:29:48 +0100 Subject: [PATCH 1/2] chore: bump dev version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- appinfo/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 0787b0683..089f26b69 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -16,7 +16,7 @@ - 🚀 Get your project organized - 1.11.0-dev + 1.11.0-dev.1 agpl Julius Härtl From 029082bf7f4644d6122f415a6239ab1489e99ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Mon, 6 Nov 2023 17:30:31 +0100 Subject: [PATCH 2/2] fix: Avoid too large index on postgres as indexing just the last_editor column is enough MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/Db/CardMapper.php | 3 +- .../Version1011Date20231106160059.php | 62 +++++++++++++++++++ .../Version10800Date20220422061816.php | 2 +- 3 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 lib/Migration/Version1011Date20231106160059.php diff --git a/lib/Db/CardMapper.php b/lib/Db/CardMapper.php index 5de8b5018..60938002c 100644 --- a/lib/Db/CardMapper.php +++ b/lib/Db/CardMapper.php @@ -306,8 +306,7 @@ public function findUnexposedDescriptionChances() { $qb = $this->db->getQueryBuilder(); $qb->select('id', 'title', 'duedate', 'notified', 'description_prev', 'last_editor', 'description') ->from('deck_cards') - ->where($qb->expr()->isNotNull('last_editor')) - ->andWhere($qb->expr()->isNotNull('description_prev')); + ->where($qb->expr()->isNotNull('last_editor')); return $this->findEntities($qb); } diff --git a/lib/Migration/Version1011Date20231106160059.php b/lib/Migration/Version1011Date20231106160059.php new file mode 100644 index 000000000..97428a225 --- /dev/null +++ b/lib/Migration/Version1011Date20231106160059.php @@ -0,0 +1,62 @@ + + * + * @author Your name + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Deck\Migration; + +use Closure; +use OCP\DB\ISchemaWrapper; +use OCP\Migration\IOutput; +use OCP\Migration\SimpleMigrationStep; + +class Version1011Date20231106160059 extends SimpleMigrationStep { + + public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { + $schema = $schemaClosure(); + + $createIndex = false; + + $table = $schema->getTable('deck_cards'); + + if (!$table->hasIndex('idx_last_editor')) { + $createIndex = true; + } + + if (!$createIndex) { + $index = $table->getIndex('idx_last_editor'); + if (in_array('description_prev', $index->getColumns(), true)) { + $table->dropIndex('idx_last_editor'); + $createIndex = true; + } + } + + if ($createIndex) { + $table->addIndex(['last_editor'], 'idx_last_editor'); + return $schema; + } + + return null; + } +} diff --git a/lib/Migration/Version10800Date20220422061816.php b/lib/Migration/Version10800Date20220422061816.php index c952da3d6..deee73efd 100644 --- a/lib/Migration/Version10800Date20220422061816.php +++ b/lib/Migration/Version10800Date20220422061816.php @@ -66,7 +66,7 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt $indexAdded = $this->addIndex($schema, 'deck_cards', 'idx_last_editor', [ - 'last_editor', 'description_prev' + 'last_editor' /*, 'description_prev' */ ], [], // Adding a partial index on the description_prev as it is only used for a NULL check ['lengths' => [null, 1]]