Issue #1575790 by greg.1.anderson, sun, tim.plunkett, superhenne: Fixed Update #7002...
authorwebchick
Sun, 30 Sep 2012 17:04:36 +0000 (13:04 -0400)
committerwebchick
Sun, 30 Sep 2012 17:04:36 +0000 (13:04 -0400)
includes/database/pgsql/database.inc

index 79c16b2..00ed799 100644 (file)
@@ -74,6 +74,17 @@ class DatabaseConnection_pgsql extends DatabaseConnection {
     }
   }
 
+  public function prepareQuery($query) {
+    // mapConditionOperator converts LIKE operations to ILIKE for consistency
+    // with MySQL. However, Postgres does not support ILIKE on bytea (blobs)
+    // fields.
+    // To make the ILIKE operator work, we type-cast bytea fields into text.
+    // @todo This workaround only affects bytea fields, but the involved field
+    //   types involved in the query are unknown, so there is no way to
+    //   conditionally execute this for affected queries only.
+    return parent::prepareQuery(preg_replace('/ ([^ ]+) +(I*LIKE|NOT +I*LIKE) /i', ' ${1}::text ${2} ', $query));
+  }
+
   public function query($query, array $args = array(), $options = array()) {
 
     $options += $this->defaultOptions();