]> git.immae.eu Git - github/wallabag/wallabag.git/blob - src/Wallabag/CoreBundle/Doctrine/DBAL/Schema/CustomPostgreSqlSchemaManager.php
b49166f2ec17b6c3ec899217d3a46dd5f1813e5d
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Doctrine / DBAL / Schema / CustomPostgreSqlSchemaManager.php
1 <?php
2
3 namespace Wallabag\CoreBundle\Doctrine\DBAL\Schema;
4
5 use Doctrine\DBAL\Schema\PostgreSqlSchemaManager;
6 use Doctrine\DBAL\Schema\Sequence;
7
8 /**
9 * This custom schema manager fix the PostgreSQL 10 problem.
10 *
11 * @see https://github.com/wallabag/wallabag/issues/3479
12 * @see https://github.com/doctrine/dbal/issues/2868
13 */
14 class CustomPostgreSqlSchemaManager extends PostgreSqlSchemaManager
15 {
16 /**
17 * {@inheritdoc}
18 */
19 protected function _getPortableSequenceDefinition($sequence)
20 {
21 if ('public' !== $sequence['schemaname']) {
22 $sequenceName = $sequence['schemaname'] . '.' . $sequence['relname'];
23 } else {
24 $sequenceName = $sequence['relname'];
25 }
26
27 $query = 'SELECT min_value, increment_by FROM ' . $this->_platform->quoteIdentifier($sequenceName);
28
29 // patch for PostgreSql >= 10
30 if ((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);
32 }
33
34 $data = $this->_conn->fetchAll($query);
35
36 return new Sequence($sequenceName, $data[0]['increment_by'], $data[0]['min_value']);
37 }
38 }