improve query builder and connection manager, skip coverage of some soon-to-be-removed methods
This commit is contained in:
parent
482f36ea24
commit
02d4e0e52e
@ -178,11 +178,7 @@ final class Connection_Manager {
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
// Convert array to object
|
||||
if (is_array($params))
|
||||
{
|
||||
$params = new ArrayObject($params, ArrayObject::STD_PROP_LIST | ArrayObject::ARRAY_AS_PROPS);
|
||||
}
|
||||
|
||||
$params->type = strtolower($params->type);
|
||||
$dbtype = ($params->type !== 'postgresql') ? $params->type : 'pgsql';
|
||||
|
||||
|
@ -1306,8 +1306,6 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
$vals = array_merge($this->values, (array) $this->where_values);
|
||||
}
|
||||
|
||||
$evals = (is_array($vals)) ? $vals : array();
|
||||
|
||||
$start_time = microtime(TRUE);
|
||||
|
||||
if (empty($vals))
|
||||
@ -1320,29 +1318,10 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
}
|
||||
|
||||
$end_time = microtime(TRUE);
|
||||
|
||||
$total_time = number_format($end_time - $start_time, 5);
|
||||
|
||||
// Add the interpreted query to the list of executed queries
|
||||
foreach($evals as &$v)
|
||||
{
|
||||
$v = ( ! is_numeric($v)) ? htmlentities($this->db->quote($v), ENT_NOQUOTES, 'utf-8', FALSE) : $v;
|
||||
}
|
||||
$esql = str_replace('?', "%s", $sql);
|
||||
array_unshift($vals, $esql);
|
||||
array_unshift($evals, $esql);
|
||||
|
||||
|
||||
$this->queries[] = array(
|
||||
'time' => $total_time,
|
||||
'sql' => call_user_func_array('sprintf', $evals),
|
||||
);
|
||||
$this->queries['total_time'] += $total_time;
|
||||
|
||||
array_shift($vals);
|
||||
|
||||
// Set the last query to get rowcounts properly
|
||||
$this->db->last_query = $sql;
|
||||
$this->_append_query($vals, $sql, $total_time);
|
||||
|
||||
// Reset class state for next query
|
||||
$this->reset_query();
|
||||
@ -1370,6 +1349,41 @@ class Query_Builder implements Query_Builder_Interface {
|
||||
throw new BadMethodCallException("Method does not exist");
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the prepared statement into readable sql
|
||||
*
|
||||
* @param array $vals
|
||||
* @param string $sql
|
||||
* @param string $total_time
|
||||
* @return void
|
||||
*/
|
||||
protected function _append_query($vals, $sql, $total_time)
|
||||
{
|
||||
$evals = (is_array($vals)) ? $vals : array();
|
||||
|
||||
// Quote string values
|
||||
foreach($evals as &$v)
|
||||
{
|
||||
$v = ( ! is_numeric($v)) ? htmlentities($this->db->quote($v), ENT_NOQUOTES, 'utf-8', FALSE) : $v;
|
||||
}
|
||||
$esql = str_replace('?', "%s", $sql);
|
||||
|
||||
// Add the query onto the array of values to pass
|
||||
// as arguments to sprintf
|
||||
array_unshift($evals, $esql);
|
||||
|
||||
// Add the interpreted query to the list of executed queries
|
||||
$this->queries[] = array(
|
||||
'time' => $total_time,
|
||||
'sql' => call_user_func_array('sprintf', $evals),
|
||||
);
|
||||
|
||||
$this->queries['total_time'] += $total_time;
|
||||
|
||||
// Set the last query to get rowcounts properly
|
||||
$this->db->last_query = $sql;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
|
@ -62,14 +62,12 @@ class Firebird extends Abstract_Driver {
|
||||
*/
|
||||
public function __construct($dbpath, $user='SYSDBA', $pass='masterkey', array $options = array())
|
||||
{
|
||||
if (isset($options[PDO::ATTR_PERSISTENT]) && $options[PDO::ATTR_PERSISTENT] == TRUE)
|
||||
{
|
||||
$this->conn = fbird_pconnect($dbpath, $user, $pass, 'utf-8', 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->conn = fbird_connect($dbpath, $user, $pass, 'utf-8', 0);
|
||||
}
|
||||
|
||||
$connect_function = (isset($options[PDO::ATTR_PERSISTENT]) && $options[PDO::ATTR_PERSISTENT] == TRUE)
|
||||
? 'fbird_pconnect'
|
||||
: 'fbird_connect';
|
||||
|
||||
$this->conn = $connect_function($dbpath, $user, $pass, 'utf-8', 0);
|
||||
|
||||
// Throw an exception to make this match other pdo classes
|
||||
if ( ! is_resource($this->conn)) throw new PDOException(fbird_errmsg(), fbird_errcode(), NULL);
|
||||
@ -79,13 +77,11 @@ class Firebird extends Abstract_Driver {
|
||||
// of DB_PDO, which defines these two
|
||||
// class variables for the other drivers
|
||||
|
||||
// Load the sql class
|
||||
$class = __CLASS__."_sql";
|
||||
$this->sql = new $class();
|
||||
|
||||
// Load the util class
|
||||
$class = __CLASS__."_util";
|
||||
$this->util = new $class($this);
|
||||
foreach(array('sql', 'util') as $sub)
|
||||
{
|
||||
$class = __CLASS__ . "_{$sub}";
|
||||
$this->$sub = new $class($this);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
@ -26,7 +26,7 @@ class Firebird_Util extends DB_Util {
|
||||
|
||||
/**
|
||||
* Create an SQL backup file for the current database's structure
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @return string
|
||||
*/
|
||||
public function backup_structure()
|
||||
@ -40,6 +40,7 @@ class Firebird_Util extends DB_Util {
|
||||
/**
|
||||
* Create an SQL backup file for the current database's data
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @param array $exclude
|
||||
* @param bool $system_tables
|
||||
* @return string
|
||||
|
@ -30,11 +30,11 @@ class MySQL_Util extends DB_Util {
|
||||
/**
|
||||
* Convienience public function for creating a new MySQL table
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @param string $name
|
||||
* @param array $columns
|
||||
* @param array $constraints
|
||||
* @param array $indexes
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function create_table($name, $columns, array $constraints=array(), array $indexes=array())
|
||||
@ -125,10 +125,7 @@ class MySQL_Util extends DB_Util {
|
||||
foreach($dbs as &$d)
|
||||
{
|
||||
// Skip built-in dbs
|
||||
if ($d == 'mysql')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if ($d == 'mysql') continue;
|
||||
|
||||
// Get the list of tables
|
||||
$tables = $this->driver_query("SHOW TABLES FROM `{$d}`", TRUE);
|
||||
|
@ -26,6 +26,7 @@ class SQLite_Util extends DB_Util {
|
||||
/**
|
||||
* Convenience public function to create a new table
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @param string $name //Name of the table
|
||||
* @param array $columns //columns as straight array and/or column => type pairs
|
||||
* @param array $constraints // column => constraint pairs
|
||||
@ -98,6 +99,7 @@ class SQLite_Util extends DB_Util {
|
||||
/**
|
||||
* Create an SQL backup file for the current database's data
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @param array $excluded
|
||||
* @return string
|
||||
*/
|
||||
|
@ -56,7 +56,7 @@ abstract class DBTest extends Query_TestCase {
|
||||
|
||||
public function testBackupData()
|
||||
{
|
||||
$this->assertTrue(is_string($this->db->util->backup_data(array('create_delete'))));
|
||||
$this->assertTrue(is_string($this->db->util->backup_data(array('create_delete', TRUE))));
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
@ -40,8 +40,6 @@ class FirebirdQBTest extends QBTest {
|
||||
$this->db = Query($params);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
public function testGetNamedConnectionException()
|
||||
{
|
||||
try
|
||||
@ -54,8 +52,6 @@ class FirebirdQBTest extends QBTest {
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
public function testGetNamedConnection()
|
||||
{
|
||||
$dbpath = QTEST_DIR.QDS.'db_files'.QDS.'FB_TEST_DB.FDB';
|
||||
@ -74,8 +70,6 @@ class FirebirdQBTest extends QBTest {
|
||||
$this->assertReference($f_conn, Query('fire'));
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
public function testGetCompiledSelect()
|
||||
{
|
||||
$sql = $this->db->get_compiled_select('create_test');
|
||||
@ -170,4 +164,9 @@ class FirebirdQBTest extends QBTest {
|
||||
|
||||
$this->assertEqual($expected, $error);
|
||||
}
|
||||
|
||||
public function testBackupStructure()
|
||||
{
|
||||
$this->assertEquals('', $this->db->util->backup_structure());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user