From 9cccf2631181eafd38fd0d10d0275c4c630a82ff Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 19 Jun 2025 11:54:17 +0700 Subject: [PATCH] [ticket/17528] Fix phpBB PostgreSQL platform [ci skip] PHPBB-17528 --- .../phpbb/db/doctrine/postgresql_platform.php | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/phpBB/phpbb/db/doctrine/postgresql_platform.php b/phpBB/phpbb/db/doctrine/postgresql_platform.php index ea637b4203..28f846de03 100644 --- a/phpBB/phpbb/db/doctrine/postgresql_platform.php +++ b/phpBB/phpbb/db/doctrine/postgresql_platform.php @@ -78,6 +78,36 @@ class postgresql_platform extends PostgreSQL94Platform return AbstractPlatform::getDefaultValueDeclarationSQL($column); } + /** + * {@inheritDoc} + */ + public function getAlterTableSQL(TableDiff $diff) + { + $sql = parent::getAlterTableSQL($diff); + $table_name = $diff->getOldTable()->getName(); + $columns = array_merge($diff->getAddedColumns(), $diff->getModifiedColumns()); + $post_sql = $sequence_sql = []; + + foreach ($columns as $column) + { + $column_name = $column->getName(); + if (!empty($column->getAutoincrement())) + { + $sequence = new Sequence($this->getIdentitySequenceName($table_name, $column_name)); + $sequence_sql[] = $this->getCreateSequenceSQL($sequence); + $post_sql[] = 'ALTER SEQUENCE '.$sequence->getName().' OWNED BY ' . $table_name . '.' . $column_name; + } + } + $sql = array_merge($sequence_sql, $sql, $post_sql); + + foreach ($sql as $i => $query) + { + $sql[$i] = str_replace('{{placeholder_sequence}}', "nextval('{$table_name}_seq')", $query); + } + + return $sql; + } + /** * {@inheritDoc} */