From a1661af17c9054a6c399dd9d5220f8d6a5091fa2 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Tue, 12 Dec 2017 12:14:40 +0100 Subject: Add custom driver & schema manager for PostgreSQL 10 --- .../DBAL/Driver/CustomPostgreSQLDriver.php | 25 ++++++++++++++ .../DBAL/Schema/CustomPostgreSqlSchemaManager.php | 38 ++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/Wallabag/CoreBundle/Doctrine/DBAL/Driver/CustomPostgreSQLDriver.php create mode 100644 src/Wallabag/CoreBundle/Doctrine/DBAL/Schema/CustomPostgreSqlSchemaManager.php (limited to 'src') diff --git a/src/Wallabag/CoreBundle/Doctrine/DBAL/Driver/CustomPostgreSQLDriver.php b/src/Wallabag/CoreBundle/Doctrine/DBAL/Driver/CustomPostgreSQLDriver.php new file mode 100644 index 00000000..eb5b203f --- /dev/null +++ b/src/Wallabag/CoreBundle/Doctrine/DBAL/Driver/CustomPostgreSQLDriver.php @@ -0,0 +1,25 @@ +_platform->quoteIdentifier($sequenceName); + + // patch for PostgreSql >= 10 + if ((float) ($this->_conn->getWrappedConnection()->getServerVersion()) >= 10) { + $query = "SELECT min_value, increment_by FROM pg_sequences WHERE schemaname = 'public' AND sequencename = " . $this->_conn->quote($sequenceName); + } + + $data = $this->_conn->fetchAll($query); + + return new Sequence($sequenceName, $data[0]['increment_by'], $data[0]['min_value']); + } +} -- cgit v1.2.3 From 2e9747a59a6011622588829e4605af3710b61a21 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Tue, 12 Dec 2017 13:34:06 +0100 Subject: Fix tests --- .../Doctrine/DBAL/Schema/CustomPostgreSqlSchemaManager.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/Wallabag/CoreBundle/Doctrine/DBAL/Schema/CustomPostgreSqlSchemaManager.php b/src/Wallabag/CoreBundle/Doctrine/DBAL/Schema/CustomPostgreSqlSchemaManager.php index b49166f2..439ae17d 100644 --- a/src/Wallabag/CoreBundle/Doctrine/DBAL/Schema/CustomPostgreSqlSchemaManager.php +++ b/src/Wallabag/CoreBundle/Doctrine/DBAL/Schema/CustomPostgreSqlSchemaManager.php @@ -18,16 +18,16 @@ class CustomPostgreSqlSchemaManager extends PostgreSqlSchemaManager */ protected function _getPortableSequenceDefinition($sequence) { + $sequenceName = $sequence['relname']; if ('public' !== $sequence['schemaname']) { $sequenceName = $sequence['schemaname'] . '.' . $sequence['relname']; - } else { - $sequenceName = $sequence['relname']; } $query = 'SELECT min_value, increment_by FROM ' . $this->_platform->quoteIdentifier($sequenceName); - // patch for PostgreSql >= 10 - if ((float) ($this->_conn->getWrappedConnection()->getServerVersion()) >= 10) { + // the `method_exists` is only to avoid test to fail: + // DAMA\DoctrineTestBundle\Doctrine\DBAL\StaticConnection doesn't support the `getServerVersion` + if (method_exists($this->_conn->getWrappedConnection(), 'getServerVersion') && (float) ($this->_conn->getWrappedConnection()->getServerVersion()) >= 10) { $query = "SELECT min_value, increment_by FROM pg_sequences WHERE schemaname = 'public' AND sequencename = " . $this->_conn->quote($sequenceName); } -- cgit v1.2.3