|
|
@@ -509,7 +509,7 @@ class Zend_Db_Select
|
|
|
}
|
|
|
|
|
|
foreach ($spec as $val) {
|
|
|
- if (preg_match('/^[\w]*\([^\)]*\)$/', (string) $val)) {
|
|
|
+ if (preg_match('/^([\w]*\(([^\)]|(?1))*\))$/', (string) $val)) {
|
|
|
$val = new Zend_Db_Expr($val);
|
|
|
}
|
|
|
$this->_parts[self::GROUP][] = $val;
|
|
|
@@ -601,7 +601,7 @@ class Zend_Db_Select
|
|
|
$val = trim($matches[1]);
|
|
|
$direction = $matches[2];
|
|
|
}
|
|
|
- if (preg_match('/^[\w]*\([^\)]*\)$/', $val)) {
|
|
|
+ if (preg_match('/^([\w]*\(([^\)]|(?1))*\))$/', (string) $val)) {
|
|
|
$val = new Zend_Db_Expr($val);
|
|
|
}
|
|
|
$this->_parts[self::ORDER][] = array($val, $direction);
|
|
|
@@ -943,7 +943,7 @@ class Zend_Db_Select
|
|
|
$alias = $m[2];
|
|
|
}
|
|
|
// Check for columns that look like functions and convert to Zend_Db_Expr
|
|
|
- if (preg_match('/^[\w]*\([^\)]*\)$/', $col)) {
|
|
|
+ if (preg_match('/^([\w]*\(([^\)]|(?1))*\))$/', (string) $col)) {
|
|
|
$col = new Zend_Db_Expr($col);
|
|
|
} elseif (preg_match('/(.+)\.(.+)/', $col, $m)) {
|
|
|
$currentCorrelationName = $m[1];
|