Skip to content

Commit

Permalink
Merge pull request #36803 from nextcloud/fix/sqlite-comments
Browse files Browse the repository at this point in the history
[db]: Remove not supported column comments for SQLite
  • Loading branch information
blizzz authored Mar 2, 2023
2 parents e08fa78 + 1785a80 commit 289fadf
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
6 changes: 5 additions & 1 deletion lib/private/DB/SQLiteMigrator.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,13 @@ protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $conn
$platform->registerDoctrineTypeMapping('smallint unsigned', 'integer');
$platform->registerDoctrineTypeMapping('varchar ', 'string');

// with sqlite autoincrement columns is of type integer
foreach ($targetSchema->getTables() as $table) {
foreach ($table->getColumns() as $column) {
// column comments are not supported on SQLite
if ($column->getComment() !== null) {
$column->setComment(null);
}
// with sqlite autoincrement columns is of type integer
if ($column->getType() instanceof BigIntType && $column->getAutoincrement()) {
$column->setType(Type::getType('integer'));
}
Expand Down
24 changes: 24 additions & 0 deletions tests/lib/DB/MigratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,30 @@ public function testReservedKeywords() {
$this->addToAssertionCount(1);
}

/**
* Test for nextcloud/server#36803
*/
public function testColumnCommentsInUpdate() {
$startSchema = new Schema([], [], $this->getSchemaConfig());
$table = $startSchema->createTable($this->tableName);
$table->addColumn('id', 'integer', ['autoincrement' => true, 'comment' => 'foo']);
$table->setPrimaryKey(['id']);

$endSchema = new Schema([], [], $this->getSchemaConfig());
$table = $endSchema->createTable($this->tableName);
$table->addColumn('id', 'integer', ['autoincrement' => true, 'comment' => 'foo']);
// Assert adding comments on existing tables work (or at least does not throw)
$table->addColumn('time', 'integer', ['comment' => 'unix-timestamp', 'notnull' => false]);
$table->setPrimaryKey(['id']);

$migrator = $this->getMigrator();
$migrator->migrate($startSchema);

$migrator->migrate($endSchema);

$this->addToAssertionCount(1);
}

public function testAddingForeignKey() {
$startSchema = new Schema([], [], $this->getSchemaConfig());
$table = $startSchema->createTable($this->tableName);
Expand Down

0 comments on commit 289fadf

Please sign in to comment.