Skip to content

Commit

Permalink
Merge pull request #37003 from nextcloud/backport/36803/stable25
Browse files Browse the repository at this point in the history
[stable25] [db]: Remove not supported column comments for SQLite
  • Loading branch information
szaimen authored Mar 7, 2023
2 parents 7a309a2 + d91f27b commit fb594fc
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 @@ -40,9 +40,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 fb594fc

Please sign in to comment.