]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
We should able to get the table name unescaped 3538/head
authorJeremy Benoist <jeremy.benoist@gmail.com>
Thu, 14 Jun 2018 12:15:07 +0000 (14:15 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Thu, 14 Jun 2018 12:15:07 +0000 (14:15 +0200)
When we want to perform complex queries to retrieve metadata from the database

app/DoctrineMigrations/Version20161001072726.php
src/Wallabag/CoreBundle/Doctrine/WallabagMigration.php

index bb7e69686be233f7e5198fb02d6f28e7e1389a73..4e19a54a7f375c37ba805960d5b7b8917bd90e38 100644 (file)
@@ -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%';"
                 );
index eb5ae4072f51d1cc5c0218e5695a50ad1f49eea2..7aa2409a120c0c6de2459588a671fb1a64ed9964 100644 (file)
@@ -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 . '"';