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_PDO=0;
|
||||||
const BACKEND_MDB2=1;
|
const BACKEND_MDB2=1;
|
||||||
|
|
||||||
|
static private $preparedQueries = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var MDB2_Driver_Common
|
* @var MDB2_Driver_Common
|
||||||
*/
|
*/
|
||||||
|
@ -121,6 +123,7 @@ class OC_DB {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
self::$preparedQueries = array();
|
||||||
// The global data we need
|
// The global data we need
|
||||||
$name = OC_Config::getValue( "dbname", "owncloud" );
|
$name = OC_Config::getValue( "dbname", "owncloud" );
|
||||||
$host = OC_Config::getValue( "dbhost", "" );
|
$host = OC_Config::getValue( "dbhost", "" );
|
||||||
|
@ -201,6 +204,7 @@ class OC_DB {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
self::$preparedQueries = array();
|
||||||
// The global data we need
|
// The global data we need
|
||||||
$name = OC_Config::getValue( "dbname", "owncloud" );
|
$name = OC_Config::getValue( "dbname", "owncloud" );
|
||||||
$host = OC_Config::getValue( "dbhost", "" );
|
$host = OC_Config::getValue( "dbhost", "" );
|
||||||
|
@ -321,7 +325,12 @@ class OC_DB {
|
||||||
$query.=$limitsql;
|
$query.=$limitsql;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (isset(self::$preparedQueries[$query])) {
|
||||||
|
return self::$preparedQueries[$query];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
$rawQuery = $query;
|
||||||
|
|
||||||
// Optimize the query
|
// Optimize the query
|
||||||
$query = self::processQuery( $query );
|
$query = self::processQuery( $query );
|
||||||
|
@ -343,6 +352,9 @@ class OC_DB {
|
||||||
}
|
}
|
||||||
$result=new PDOStatementWrapper($result);
|
$result=new PDOStatementWrapper($result);
|
||||||
}
|
}
|
||||||
|
if (is_null($limit) || $limit == -1) {
|
||||||
|
self::$preparedQueries[$rawQuery] = $result;
|
||||||
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue