Merge pull request #1195 from owncloud/cache_prepared
Cache prepared statements in OC_DB
This commit is contained in:
commit
1f7bf57ece
12
lib/db.php
12
lib/db.php
|
@ -41,6 +41,8 @@ class OC_DB {
|
|||
const BACKEND_PDO=0;
|
||||
const BACKEND_MDB2=1;
|
||||
|
||||
static private $preparedQueries = array();
|
||||
|
||||
/**
|
||||
* @var MDB2_Driver_Common
|
||||
*/
|
||||
|
@ -121,6 +123,7 @@ class OC_DB {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
self::$preparedQueries = array();
|
||||
// The global data we need
|
||||
$name = OC_Config::getValue( "dbname", "owncloud" );
|
||||
$host = OC_Config::getValue( "dbhost", "" );
|
||||
|
@ -201,6 +204,7 @@ class OC_DB {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
self::$preparedQueries = array();
|
||||
// The global data we need
|
||||
$name = OC_Config::getValue( "dbname", "owncloud" );
|
||||
$host = OC_Config::getValue( "dbhost", "" );
|
||||
|
@ -321,7 +325,12 @@ class OC_DB {
|
|||
$query.=$limitsql;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isset(self::$preparedQueries[$query])) {
|
||||
return self::$preparedQueries[$query];
|
||||
}
|
||||
}
|
||||
$rawQuery = $query;
|
||||
|
||||
// Optimize the query
|
||||
$query = self::processQuery( $query );
|
||||
|
@ -343,6 +352,9 @@ class OC_DB {
|
|||
}
|
||||
$result=new PDOStatementWrapper($result);
|
||||
}
|
||||
if (is_null($limit) || $limit == -1) {
|
||||
self::$preparedQueries[$rawQuery] = $result;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue