This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "quickfw".
The branch, master has been updated
via 60693af34d92bea06925807c109a096a5b16895d (commit)
via abfd1426ad56b6393afe0371eaecbcba9afb7a5a (commit)
from 10085ec50ec624a84b40207c63bee123da08eee5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 60693af34d92bea06925807c109a096a5b16895d
Author: Ivan1986 <iva...@li...>
Date: Fri Aug 20 15:47:42 2010 +0400
Правка плейсхолдера ?#
diff --git a/lib/DbSimple/Generic.php b/lib/DbSimple/Generic.php
index 5345d55..532746c 100644
--- a/lib/DbSimple/Generic.php
+++ b/lib/DbSimple/Generic.php
@@ -664,7 +664,7 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
'&' => array('inner' => ' OR ', 'outer' => ') AND (',),
'a' => array('inner' => ', ', 'outer' => '), (',),
);
-
+
/**
* string _expandPlaceholdersCallback(list $m)
* Internal function to replace placeholders (see preg_replace_callback).
@@ -710,9 +710,8 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
$field = array($prefix => $field);
$prefix = 0;
}
- $prefix = is_int($prefix) ? '' : $this->escape($prefix, true) . '.';
- if (substr($prefix, 0, 2) == '?_')
- $prefix = $this->_identPrefix . substr($prefix, 2);
+ $prefix = is_int($prefix) ? '' :
+ $this->escape($this->_addPrefix2Table($prefix), true) . '.';
//для мультиинсерта очищаем ключи - их быть не может по синтаксису
if ($mult && $type=='a')
$field = array_values($field);
@@ -736,14 +735,13 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
}
}
return $mult ? join(self::$join[$type]['outer'], $multi) : join(', ', $parts);
- case "#":
+ case '#':
// Identifier.
if (!is_array($value))
{
if ($value instanceof DbSimple_SubQuery)
return $value->get($this->_placeholderNativeArgs);
- if (substr($value, 0, 2) == '?_')
- $value = $this->_identPrefix . substr($value, 2);
+ $value = $this->_addPrefix2Table($value);
return $this->escape($value, true);
}
$parts = array();
@@ -751,18 +749,17 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
if (!is_array($identifiers)) $identifiers = array($identifiers);
$prefix = '';
if (!is_int($table)) {
- if (substr($table, 0, 2) == '?_') $table = $this->_identPrefix . substr($table, 2);
- $prefix = $this->escape($table, true) . '.';
+ $table = $this->_addPrefix2Table($table);
+ $prefix = $this->escape($table, true) . '.';
}
foreach ($identifiers as $identifier)
if ($identifier instanceof DbSimple_SubQuery)
$parts[] = $identifier->get($this->_placeholderNativeArgs);
+ elseif (!is_string($identifier))
+ return 'DBSIMPLE_ERROR_ARRAY_VALUE_NOT_STRING';
else
- {
- if (!is_string($identifier))
- return 'DBSIMPLE_ERROR_ARRAY_VALUE_NOT_STRING';
- $parts[] = $prefix . ($identifier!='*'?$this->escape($identifier, true):'*');
- }
+ $parts[] = $prefix . ($identifier=='*' ? '*' :
+ $this->escape($this->_addPrefix2Table($identifier), true));
}
return join(', ', $parts);
case 'n':
@@ -825,6 +822,19 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
return $m[0];
}
+ /**
+ * Заменяет ?_ на текущий префикс
+ *
+ * @param string $table имя таблицы
+ * @return string имя таблицы
+ */
+ private function _addPrefix2Table($table)
+ {
+ if (substr($table, 0, 2) == '?_')
+ $table = $this->_identPrefix . substr($table, 2);
+ return $table;
+ }
+
private function _expandOptionalBlock($block)
{
$alts = array();
diff --git a/tests/DbSimple/DbSimpleTest.php b/tests/DbSimple/DbSimpleTest.php
index 9b37f8b..1ade998 100644
--- a/tests/DbSimple/DbSimpleTest.php
+++ b/tests/DbSimple/DbSimpleTest.php
@@ -96,7 +96,7 @@ class DbSimpleTest extends PHPUnit_Framework_TestCase
$this->db->query('SELECT ?# FROM ?_t1', array('t1'=>array('aaa','bbb')));
$this->db->query('SELECT ?# FROM ?_t1', array('?_t1'=>'*','?_t2'=>'ccc'));
$this->db->query('SELECT ?# FROM ?#', array('t1'=>'*','t2'=>'ccc'),array('base'=>'t1'));
- $this->db->query('SELECT ?# FROM ?#', array('?_t1'=>'*','?_t2'=>'ccc'),array('base'=>'t1'));
+ $this->db->query('SELECT ?# FROM ?#', array('?_t1'=>'*','?_t2'=>'ccc'),array('base'=>'?_t1'));
$R = array (
'SELECT `aaa` FROM pre_t1',
'SELECT `aaa` FROM pre_t1',
@@ -105,7 +105,7 @@ class DbSimpleTest extends PHPUnit_Framework_TestCase
'SELECT `t1`.`aaa`, `t1`.`bbb` FROM pre_t1',
'SELECT `pre_t1`.*, `pre_t2`.`ccc` FROM pre_t1',
'SELECT `t1`.*, `t2`.`ccc` FROM `base`.`t1`',
- 'SELECT `pre_t1`.*, `pre_t2`.`ccc` FROM `base`.`t1`',
+ 'SELECT `pre_t1`.*, `pre_t2`.`ccc` FROM `base`.`pre_t1`',
);
$this->assertEquals($this->Qlog, $R, 'Ошибка обработки ?#');
@@ -123,7 +123,7 @@ class DbSimpleTest extends PHPUnit_Framework_TestCase
$this->db->query('UPDATE ?_t1 SET ?a WHERE a IN (?a)', array('a'=>'1'), array('1','2','3'));
$this->db->query('UPDATE ?_t1 SET ?a WHERE a IN (?a)', array('a'=>'1', 'b'=>2), array('1','2','3'));
$this->db->query('UPDATE ?_t1 SET ?a WHERE a IN (?a)', array(
- 't' => array('a' => 1, 'b' => 2),
+ '?_t' => array('a' => 1, 'b' => 2),
't2' => array('a' => 3)
), array('1','2','3'));
$this->db->query('INSERT INTO t1(a,b,c) VALUES (?a)',array(
@@ -147,7 +147,7 @@ class DbSimpleTest extends PHPUnit_Framework_TestCase
'SELECT * FROM pre_t1 WHERE a IN (\'1\', \'2\', \'3\')',
'UPDATE pre_t1 SET `a`=\'1\' WHERE a IN (\'1\', \'2\', \'3\')',
'UPDATE pre_t1 SET `a`=\'1\', `b`=\'2\' WHERE a IN (\'1\', \'2\', \'3\')',
- 'UPDATE pre_t1 SET `t`.`a`=\'1\', `t`.`b`=\'2\', `t2`.`a`=\'3\' WHERE a IN (\'1\', \'2\', \'3\')',
+ 'UPDATE pre_t1 SET `pre_t`.`a`=\'1\', `pre_t`.`b`=\'2\', `t2`.`a`=\'3\' WHERE a IN (\'1\', \'2\', \'3\')',
'INSERT INTO t1(a,b,c) VALUES (\'1\', \'2\', \'3\'), (\'4\', \'5\', \'6\'), (\'7\', \'8\', \'9\')',
'SELECT * FROM t1 WHERE (`a`=\'1\' OR `b`=\'2\') AND (`c`=\'3\' OR `d`=\'4\')',
'SELECT * FROM t1 WHERE (`a`=\'1\') OR (`a`=\'1\' AND `b`=\'2\') OR (`c`=\'3\' AND `d`=\'4\')',
commit abfd1426ad56b6393afe0371eaecbcba9afb7a5a
Author: Ivan1986 <iva...@li...>
Date: Fri Aug 20 11:34:31 2010 +0400
Фикс обработчика ошибок
diff --git a/lib/DbSimple/Connect.php b/lib/DbSimple/Connect.php
index d6720ff..0552859 100644
--- a/lib/DbSimple/Connect.php
+++ b/lib/DbSimple/Connect.php
@@ -116,7 +116,7 @@ class DbSimple_Connect
if (isset($parsed['prefix']))
$this->DbSimple->setIdentPrefix($parsed['prefix']);
$this->DbSimple->setCachePrefix('db_'.md5($parsed['dsn']).'_');
- $this->DbSimple->setErrorHandler($this->errorHandler ? $this->errorHandler : array(&$this, 'errorHandler'), false);
+ $this->DbSimple->setErrorHandler($this->errorHandler!==null ? $this->errorHandler : array(&$this, 'errorHandler'));
}
/**
@@ -147,7 +147,9 @@ class DbSimple_Connect
* - сообщение об ошибке
* - массив (код, сообщение, запрос, контекст)
*
- * @param callback setErrorHandler(callback $handler)
+ * @param callback|null|false $handler обработчик ошибок
+ * <br> null - по умолчанию
+ * <br> false - отключен
*/
public function setErrorHandler($handler)
{
-----------------------------------------------------------------------
Summary of changes:
lib/DbSimple/Connect.php | 6 ++++--
lib/DbSimple/Generic.php | 38 ++++++++++++++++++++++++--------------
tests/DbSimple/DbSimpleTest.php | 8 ++++----
3 files changed, 32 insertions(+), 20 deletions(-)
hooks/post-receive
--
quickfw
|