Make mysql/postgres drivers compatible with Quercus
This commit is contained in:
parent
7649f75cac
commit
1e71b225c5
@ -158,7 +158,13 @@ class Query_Builder {
|
||||
// Convert array to object
|
||||
if (is_array($params))
|
||||
{
|
||||
$p = new ArrayObject($params, ArrayObject::ARRAY_AS_PROPS);
|
||||
$p = new stdClass();
|
||||
|
||||
foreach($params as $k => $v)
|
||||
{
|
||||
$p->$k = $v;
|
||||
}
|
||||
|
||||
$params = $p;
|
||||
}
|
||||
|
||||
@ -172,11 +178,19 @@ class Query_Builder {
|
||||
$params->type = strtolower($params->type);
|
||||
$dbtype = ($params->type !== 'postgresql') ? $params->type : 'pgsql';
|
||||
|
||||
$dsn = '';
|
||||
|
||||
// Add the driver type to the dsn
|
||||
if ($dbtype !== 'firebird' && $dbtype !== 'sqlite')
|
||||
{
|
||||
$dsn = strtolower($dbtype).':'.$dsn;
|
||||
}
|
||||
|
||||
// Create the dsn for the database to connect to
|
||||
switch($dbtype)
|
||||
{
|
||||
default:
|
||||
$dsn = "dbname={$params->conn_db}";
|
||||
$dsn .= "dbname={$params->conn_db}";
|
||||
|
||||
if ( ! empty($params->host))
|
||||
{
|
||||
@ -191,7 +205,7 @@ class Query_Builder {
|
||||
break;
|
||||
|
||||
case "sqlite":
|
||||
$dsn = $params->file;
|
||||
$dsn .= $params->file;
|
||||
break;
|
||||
|
||||
case "firebird":
|
||||
@ -1209,7 +1223,7 @@ class Query_Builder {
|
||||
// Only unset class variables that
|
||||
// are not callable. Otherwise, we'll
|
||||
// delete class methods!
|
||||
foreach($this as $name => &$var)
|
||||
foreach($this as $name => $var)
|
||||
{
|
||||
// Skip properties that are needed for every query
|
||||
if (in_array($name, array(
|
||||
|
@ -37,12 +37,20 @@ class MySQL extends DB_PDO {
|
||||
* @param array $options
|
||||
*/
|
||||
public function __construct($dsn, $username=null, $password=null, $options=array())
|
||||
{
|
||||
if (defined('PDO::MYSQL_ATTR_INIT_COMMAND'))
|
||||
{
|
||||
$options = array_merge($options, array(
|
||||
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF-8 COLLATE 'UTF-8'",
|
||||
));
|
||||
}
|
||||
|
||||
parent::__construct("mysql:{$dsn}", $username, $password, $options);
|
||||
if (strpos($dsn, 'mysql') === FALSE)
|
||||
{
|
||||
$dsn = 'mysql:'.$dsn;
|
||||
}
|
||||
|
||||
parent::__construct($dsn, $username, $password, $options);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
@ -171,7 +171,7 @@ class MySQL_Util extends DB_Util {
|
||||
$output_sql = '';
|
||||
|
||||
// Select the rows from each Table
|
||||
foreach($tables as &$t)
|
||||
foreach($tables as $t)
|
||||
{
|
||||
$sql = "SELECT * FROM `{$t}`";
|
||||
$res = $this->query($sql);
|
||||
@ -188,10 +188,15 @@ class MySQL_Util extends DB_Util {
|
||||
$insert_rows = array();
|
||||
|
||||
// Create the insert statements
|
||||
foreach($rows as &$row)
|
||||
foreach($rows as $row)
|
||||
{
|
||||
$row = array_values($row);
|
||||
$row = array_map(array(&$this, 'quote'), $row);
|
||||
|
||||
// Workaround for Quercus
|
||||
foreach($row as &$r)
|
||||
{
|
||||
$r = $this->quote($r);
|
||||
}
|
||||
$row = array_map('trim', $row);
|
||||
|
||||
$row_string = 'INSERT INTO `'.trim($t).'` (`'.implode('`,`', $columns).'`) VALUES ('.implode(',', $row).');';
|
||||
|
@ -31,7 +31,12 @@ class PgSQL extends DB_PDO {
|
||||
*/
|
||||
public function __construct($dsn, $username=null, $password=null, $options=array())
|
||||
{
|
||||
parent::__construct("pgsql:{$dsn}", $username, $password, $options);
|
||||
if (strpos($dsn, 'pgsql') === FALSE)
|
||||
{
|
||||
$dsn = 'pgsql:'.$dsn;
|
||||
}
|
||||
|
||||
parent::__construct($dsn, $username, $password, $options);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
@ -24,7 +24,7 @@ class MySQLQBTest extends QBTest {
|
||||
{
|
||||
$params = json_decode(file_get_contents(QBASE_DIR . "test_config.json"));
|
||||
$params = $params->mysql;
|
||||
$params->type = "mysql";
|
||||
$params->type = "MySQL";
|
||||
|
||||
$this->db = new Query_Builder($params);
|
||||
|
||||
|
@ -25,10 +25,10 @@ class MySQLTest extends DBTest {
|
||||
// Attempt to connect, if there is a test config file
|
||||
if (is_file(QBASE_DIR . "test_config.json"))
|
||||
{
|
||||
$params = json_decode(file_get_contents(QBASE_DIR . "test_config.json"), TRUE);
|
||||
$params = $params['mysql'];
|
||||
$params = json_decode(file_get_contents(QBASE_DIR . "test_config.json"));
|
||||
$params = $params->mysql;
|
||||
|
||||
$this->db = new MySQL("host={$params['host']};port={$params['port']};dbname={$params['database']}", $params['user'], $params['pass']);
|
||||
$this->db = new MySQL("mysql:host={$params->host};dbname={$params->database}", $params->user, $params->pass);
|
||||
}
|
||||
elseif (($var = getenv('CI')))
|
||||
{
|
||||
|
@ -49,6 +49,6 @@ class PgSQLQBTest extends QBTest {
|
||||
|
||||
public function TestExists()
|
||||
{
|
||||
$this->assertTrue(in_array('pgsql', pdo_drivers()));
|
||||
$this->assertTrue(in_array('pgsql', PDO::getAvailableDrivers()));
|
||||
}
|
||||
}
|
@ -34,7 +34,7 @@ class PgTest extends DBTest {
|
||||
$params = json_decode(file_get_contents(QBASE_DIR . "test_config.json"));
|
||||
$params = $params->pgsql;
|
||||
|
||||
$this->db = new PgSQL("host={$params->host};port={$params->port};dbname={$params->database}", $params->user, $params->pass);
|
||||
$this->db = new PgSQL("pgsql:host={$params->host};dbname={$params->database}", $params->user, $params->pass);
|
||||
}
|
||||
elseif (($var = getenv('CI')))
|
||||
{
|
||||
@ -46,7 +46,7 @@ class PgTest extends DBTest {
|
||||
|
||||
public function TestExists()
|
||||
{
|
||||
$this->assertTrue(in_array('pgsql', pdo_drivers()));
|
||||
$this->assertTrue(in_array('pgsql', PDO::getAvailableDrivers()));
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user