diff --git a/lib/Doctrine/Expression/Mysql.php b/lib/Doctrine/Expression/Mysql.php index f3d294cc8..3118c91d2 100644 --- a/lib/Doctrine/Expression/Mysql.php +++ b/lib/Doctrine/Expression/Mysql.php @@ -1,92 +1,92 @@ -. - */ -Doctrine::autoload('Doctrine_Expression'); -/** - * Doctrine_Expression_Mysql - * - * @package Doctrine - * @license http://www.opensource.org/licenses/lgpl-license.php LGPL - * @category Object Relational Mapping - * @link www.phpdoctrine.com - * @since 1.0 - * @version $Revision$ - * @author Konsta Vesterinen - */ -class Doctrine_Expression_Mysql extends Doctrine_Expression -{ - /** - * returns the regular expression operator - * - * @return string - */ - public function regexp() - { - return 'RLIKE'; - } - /** - * build a pattern matching string - * - * EXPERIMENTAL - * - * WARNING: this function is experimental and may change signature at - * any time until labelled as non-experimental - * - * @access public - * - * @param array $pattern even keys are strings, odd are patterns (% and _) - * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future) - * @param string $field optional field name that is being matched against - * (might be required when emulating ILIKE) - * - * @return string SQL pattern - */ - public function matchPattern($pattern, $operator = null, $field = null) - { - $match = ''; - if (!is_null($operator)) { - $field = is_null($field) ? '' : $field.' '; - $operator = strtoupper($operator); - switch ($operator) { - // case insensitive - case 'ILIKE': - $match = $field.'LIKE '; - break; - // case sensitive - case 'LIKE': - $match = $field.'LIKE BINARY '; - break; - default: - throw new Doctrine_Expression_Mysql_Exception('not a supported operator type:'. $operator); - } - } - $match.= "'"; - foreach ($pattern as $key => $value) { - if ($key % 2) { - $match .= $value; - } else { - $match .= $db->escapePattern($db->escape($value)); - } - } - $match.= "'"; - $match.= $this->patternEscapeString(); - return $match; - } -} +. + */ +Doctrine::autoload('Doctrine_Expression'); +/** + * Doctrine_Expression_Mysql + * + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision$ + * @author Konsta Vesterinen + */ +class Doctrine_Expression_Mysql extends Doctrine_Expression +{ + /** + * returns the regular expression operator + * + * @return string + */ + public function regexp() + { + return 'RLIKE'; + } + /** + * build a pattern matching string + * + * EXPERIMENTAL + * + * WARNING: this function is experimental and may change signature at + * any time until labelled as non-experimental + * + * @access public + * + * @param array $pattern even keys are strings, odd are patterns (% and _) + * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future) + * @param string $field optional field name that is being matched against + * (might be required when emulating ILIKE) + * + * @return string SQL pattern + */ + public function matchPattern($pattern, $operator = null, $field = null) + { + $match = ''; + if (!is_null($operator)) { + $field = is_null($field) ? '' : $field.' '; + $operator = strtoupper($operator); + switch ($operator) { + // case insensitive + case 'ILIKE': + $match = $field.'LIKE '; + break; + // case sensitive + case 'LIKE': + $match = $field.'LIKE BINARY '; + break; + default: + throw new Doctrine_Expression_Mysql_Exception('not a supported operator type:'. $operator); + } + } + $match.= "'"; + foreach ($pattern as $key => $value) { + if ($key % 2) { + $match .= $value; + } else { + $match .= $this->conn->escapePattern($this->conn->escape($value)); + } + } + $match.= "'"; + $match.= $this->patternEscapeString(); + return $match; + } +} diff --git a/lib/Doctrine/Expression/Pgsql.php b/lib/Doctrine/Expression/Pgsql.php index 8842d4f58..68c1bc56e 100644 --- a/lib/Doctrine/Expression/Pgsql.php +++ b/lib/Doctrine/Expression/Pgsql.php @@ -151,8 +151,7 @@ class Doctrine_Expression_Pgsql extends Doctrine_Expression $match = $field.'LIKE '; break; default: - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'not a supported operator type:'. $operator, __FUNCTION__); + throw new Doctrine_Expression_Pgsql_Exception('not a supported operator type:'. $operator); } } $match.= "'"; @@ -160,7 +159,7 @@ class Doctrine_Expression_Pgsql extends Doctrine_Expression if ($key % 2) { $match.= $value; } else { - $match.= $db->escapePattern($db->escape($value)); + $match.= $this->conn->escapePattern($this->conn->escape($value)); } } $match.= "'";