From: Jeremy Benoist Date: Thu, 14 Jun 2018 12:15:07 +0000 (+0200) Subject: We should able to get the table name unescaped X-Git-Tag: 2.3.3~2^2 X-Git-Url: https://git.immae.eu/?p=github%2Fwallabag%2Fwallabag.git;a=commitdiff_plain;h=49b4c875985c7b001af711079662dd3684373229 We should able to get the table name unescaped When we want to perform complex queries to retrieve metadata from the database --- diff --git a/app/DoctrineMigrations/Version20161001072726.php b/app/DoctrineMigrations/Version20161001072726.php index bb7e6968..4e19a54a 100644 --- a/app/DoctrineMigrations/Version20161001072726.php +++ b/app/DoctrineMigrations/Version20161001072726.php @@ -24,7 +24,7 @@ class Version20161001072726 extends WallabagMigration $query = $this->connection->query(" SELECT CONSTRAINT_NAME FROM information_schema.key_column_usage - WHERE TABLE_NAME = '" . $this->getTable('entry_tag') . "' AND CONSTRAINT_NAME LIKE 'FK_%' + WHERE TABLE_NAME = '" . $this->getTable('entry_tag', WallabagMigration::UN_ESCAPED_TABLE) . "' AND CONSTRAINT_NAME LIKE 'FK_%' AND TABLE_SCHEMA = '" . $this->connection->getDatabase() . "'" ); $query->execute(); @@ -42,7 +42,7 @@ class Version20161001072726 extends WallabagMigration FROM pg_constraint c JOIN pg_namespace n ON n.oid = c.connamespace WHERE contype = 'f' - AND conrelid::regclass::text = '" . $this->getTable('entry_tag') . "' + AND conrelid::regclass::text = '" . $this->getTable('entry_tag', WallabagMigration::UN_ESCAPED_TABLE) . "' AND n.nspname = 'public';" ); $query->execute(); @@ -63,7 +63,7 @@ class Version20161001072726 extends WallabagMigration $query = $this->connection->query(" SELECT CONSTRAINT_NAME FROM information_schema.key_column_usage - WHERE TABLE_NAME = '" . $this->getTable('annotation') . "' + WHERE TABLE_NAME = '" . $this->getTable('annotation', WallabagMigration::UN_ESCAPED_TABLE) . "' AND CONSTRAINT_NAME LIKE 'FK_%' AND COLUMN_NAME = 'entry_id' AND TABLE_SCHEMA = '" . $this->connection->getDatabase() . "'" @@ -83,7 +83,7 @@ class Version20161001072726 extends WallabagMigration FROM pg_constraint c JOIN pg_namespace n ON n.oid = c.connamespace WHERE contype = 'f' - AND conrelid::regclass::text = '" . $this->getTable('annotation') . "' + AND conrelid::regclass::text = '" . $this->getTable('annotation', WallabagMigration::UN_ESCAPED_TABLE) . "' AND n.nspname = 'public' AND pg_get_constraintdef(c.oid) LIKE '%entry_id%';" ); diff --git a/src/Wallabag/CoreBundle/Doctrine/WallabagMigration.php b/src/Wallabag/CoreBundle/Doctrine/WallabagMigration.php index eb5ae407..7aa2409a 100644 --- a/src/Wallabag/CoreBundle/Doctrine/WallabagMigration.php +++ b/src/Wallabag/CoreBundle/Doctrine/WallabagMigration.php @@ -9,6 +9,8 @@ use Symfony\Component\DependencyInjection\ContainerInterface; abstract class WallabagMigration extends AbstractMigration implements ContainerAwareInterface { + const UN_ESCAPED_TABLE = true; + /** * @var ContainerInterface */ @@ -28,10 +30,14 @@ abstract class WallabagMigration extends AbstractMigration implements ContainerA $this->container = $container; } - protected function getTable($tableName) + protected function getTable($tableName, $unEscaped = false) { $table = $this->container->getParameter('database_table_prefix') . $tableName; + if (self::UN_ESCAPED_TABLE === $unEscaped) { + return $table; + } + // escape table name is handled using " on postgresql if ('postgresql' === $this->connection->getDatabasePlatform()->getName()) { return '"' . $table . '"';