3 namespace Wallabag\CoreBundle\Doctrine\DBAL\Schema
;
5 use Doctrine\DBAL\Schema\PostgreSqlSchemaManager
;
6 use Doctrine\DBAL\Schema\Sequence
;
9 * This custom schema manager fix the PostgreSQL 10 problem.
11 * @see https://github.com/wallabag/wallabag/issues/3479
12 * @see https://github.com/doctrine/dbal/issues/2868
14 class CustomPostgreSqlSchemaManager
extends PostgreSqlSchemaManager
19 protected function _getPortableSequenceDefinition($sequence)
21 $sequenceName = $sequence['relname'];
22 if ('public' !== $sequence['schemaname']) {
23 $sequenceName = $sequence['schemaname'] . '.' . $sequence['relname'];
26 $query = 'SELECT min_value, increment_by FROM ' . $this->_platform
->quoteIdentifier($sequenceName);
28 // the `method_exists` is only to avoid test to fail:
29 // DAMA\DoctrineTestBundle\Doctrine\DBAL\StaticConnection doesn't support the `getServerVersion`
30 if (method_exists($this->_conn
->getWrappedConnection(), 'getServerVersion') && (float) ($this->_conn
->getWrappedConnection()->getServerVersion()) >= 10) {
31 $query = "SELECT min_value, increment_by FROM pg_sequences WHERE schemaname = 'public' AND sequencename = " . $this->_conn
->quote($sequenceName);
34 $data = $this->_conn
->fetchAll($query);
36 return new Sequence($sequenceName, $data[0]['increment_by'], $data[0]['min_value']);