summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--includes/database/pgsql/database.inc11
1 files changed, 11 insertions, 0 deletions
diff --git a/includes/database/pgsql/database.inc b/includes/database/pgsql/database.inc
index 79c16b2..00ed799 100644
--- a/includes/database/pgsql/database.inc
+++ b/includes/database/pgsql/database.inc
@@ -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();