From 9dae845aa4635bbe346a0931c81b62d52a442dc0 Mon Sep 17 00:00:00 2001 From: Tortue Torche Date: Wed, 12 Feb 2020 13:16:54 +0100 Subject: [PATCH 1/4] Fix null value in column "instance" violates not-null constraint since 0.18.2 References: https://github.com/nextcloud/circles/issues/367 Fix #367 Signed-off-by: Tortue Torche --- lib/Migration/Version0017Date20200202112903.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/Migration/Version0017Date20200202112903.php b/lib/Migration/Version0017Date20200202112903.php index 19a593b59..f7ca3d522 100644 --- a/lib/Migration/Version0017Date20200202112903.php +++ b/lib/Migration/Version0017Date20200202112903.php @@ -32,6 +32,7 @@ use Doctrine\DBAL\Schema\SchemaException; use Doctrine\DBAL\Types\Type; use OCP\DB\ISchemaWrapper; +use OCP\IConfig; use OCP\IDBConnection; use OCP\Migration\IOutput; use OCP\Migration\SimpleMigrationStep; @@ -45,12 +46,16 @@ class Version0017Date20200202112903 extends SimpleMigrationStep { /** @var IDBConnection */ private $connection; + /** @var IConfig */ + protected $config; /** * @param IDBConnection $connection + * @param IConfig $config */ - public function __construct(IDBConnection $connection) { + public function __construct(IDBConnection $connection, IConfig $config) { $this->connection = $connection; + $this->config = $config; } /** @@ -90,6 +95,7 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt 'instance', 'string', [ 'notnull' => false, 'length' => 255, + 'default' => $this->config->getSystemValue('instanceid'), ] ); $table->addColumn( From c3a5666a3ad657f5bac305dbc397f32482f8af7e Mon Sep 17 00:00:00 2001 From: Tortue Torche Date: Wed, 12 Feb 2020 14:07:54 +0100 Subject: [PATCH 2/4] Fix SQL query with PostgreSQL when selecting shares. Reference: SQLSTATE[42601]: Syntax error: 7 ERROR: zero-length delimited identifier Signed-off-by: Tortue Torche --- lib/Db/SharesRequestBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Db/SharesRequestBuilder.php b/lib/Db/SharesRequestBuilder.php index 3564a9c6e..87087f9be 100644 --- a/lib/Db/SharesRequestBuilder.php +++ b/lib/Db/SharesRequestBuilder.php @@ -70,7 +70,7 @@ protected function getSharesSelectSql() { ) ->from(self::TABLE_FILE_SHARES, 's'); - $this->defaultSelectAlias = 's'; + $this->default_select_alias = 's'; return $qb; } From f79cc5247b216a34e4be5051318971cd32640561 Mon Sep 17 00:00:00 2001 From: Tortue Torche Date: Wed, 12 Feb 2020 15:48:29 +0100 Subject: [PATCH 3/4] Fix migration to use empty string as default value for the 'instance' column of 'circles_members' table Signed-off-by: Tortue Torche --- lib/Migration/Version0017Date20200202112903.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lib/Migration/Version0017Date20200202112903.php b/lib/Migration/Version0017Date20200202112903.php index f7ca3d522..6531bcffc 100644 --- a/lib/Migration/Version0017Date20200202112903.php +++ b/lib/Migration/Version0017Date20200202112903.php @@ -32,7 +32,6 @@ use Doctrine\DBAL\Schema\SchemaException; use Doctrine\DBAL\Types\Type; use OCP\DB\ISchemaWrapper; -use OCP\IConfig; use OCP\IDBConnection; use OCP\Migration\IOutput; use OCP\Migration\SimpleMigrationStep; @@ -46,16 +45,11 @@ class Version0017Date20200202112903 extends SimpleMigrationStep { /** @var IDBConnection */ private $connection; - /** @var IConfig */ - protected $config; - /** * @param IDBConnection $connection - * @param IConfig $config */ - public function __construct(IDBConnection $connection, IConfig $config) { + public function __construct(IDBConnection $connection) { $this->connection = $connection; - $this->config = $config; } /** @@ -95,7 +89,7 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt 'instance', 'string', [ 'notnull' => false, 'length' => 255, - 'default' => $this->config->getSystemValue('instanceid'), + 'default' => '', ] ); $table->addColumn( From 7caea0f26904e9a0909a3acd7bb79a8bf7720950 Mon Sep 17 00:00:00 2001 From: Tortue Torche Date: Fri, 14 Feb 2020 11:38:08 +0100 Subject: [PATCH 4/4] Add a new migration to use '0' as default value for the 'instance' column of 'circles_members' table NOTE: We can't use an empty string ('') as default value, because it doesn't work with 'Doctrine\DBAL\Schema\Table::changeColumn()' method... Revert commit f79cc5247b216a34e4be5051318971cd32640561 Signed-off-by: Tortue Torche --- .../Version0017Date20200202112903.php | 2 +- .../Version0017Date20200214112607.php | 79 +++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 lib/Migration/Version0017Date20200214112607.php diff --git a/lib/Migration/Version0017Date20200202112903.php b/lib/Migration/Version0017Date20200202112903.php index 6531bcffc..19a593b59 100644 --- a/lib/Migration/Version0017Date20200202112903.php +++ b/lib/Migration/Version0017Date20200202112903.php @@ -45,6 +45,7 @@ class Version0017Date20200202112903 extends SimpleMigrationStep { /** @var IDBConnection */ private $connection; + /** * @param IDBConnection $connection */ @@ -89,7 +90,6 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt 'instance', 'string', [ 'notnull' => false, 'length' => 255, - 'default' => '', ] ); $table->addColumn( diff --git a/lib/Migration/Version0017Date20200214112607.php b/lib/Migration/Version0017Date20200214112607.php new file mode 100644 index 000000000..3f6667e26 --- /dev/null +++ b/lib/Migration/Version0017Date20200214112607.php @@ -0,0 +1,79 @@ + + * @copyright 2019 + * @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 . + * + */ + +declare(strict_types=1); + +namespace OCA\Circles\Migration; + +use Closure; +use Doctrine\DBAL\Schema\SchemaException; +use Doctrine\DBAL\Types\Type; +use OCP\DB\ISchemaWrapper; +use OCP\IDBConnection; +use OCP\Migration\IOutput; +use OCP\Migration\SimpleMigrationStep; + +/** + * Auto-generated migration step: Please modify to your needs! + */ +class Version0017Date20200214112607 extends SimpleMigrationStep { + + + /** @var IDBConnection */ + private $connection; + + + /** + * @param IDBConnection $connection + */ + public function __construct(IDBConnection $connection) { + $this->connection = $connection; + } + + + /** + * @param IOutput $output + * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` + * @param array $options + * + * @return null|ISchemaWrapper + * @throws SchemaException + */ + public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) { + /** @var ISchemaWrapper $schema */ + $schema = $schemaClosure(); + + $table = $schema->getTable('circles_members'); + $table->changeColumn( + 'instance', [ + 'default' => '0', + ] + ); + + return $schema; + } + +}