Enhanced reporting during the setup: all the queries (create table / alter table) are now logged into "setup.log" along with their execution time.

SVN:trunk[3446]
This commit is contained in:
Denis Flaven
2014-12-03 10:58:39 +00:00
parent aedddf9dcc
commit a222ba998d
2 changed files with 23 additions and 5 deletions

View File

@@ -3801,7 +3801,7 @@ abstract class MetaModel
}
public static function DBCreate()
public static function DBCreate($aCallback = null)
{
// Note: we have to check if the DB does exist, because we may share the DB
// with other applications (in which case the DB does exist, not the tables with the given prefix)
@@ -3809,18 +3809,24 @@ abstract class MetaModel
{
CMDBSource::CreateDB(self::$m_sDBName);
}
self::DBCreateTables();
self::DBCreateTables($aCallback);
self::DBCreateViews();
}
protected static function DBCreateTables()
protected static function DBCreateTables($aCallback = null)
{
list($aErrors, $aSugFix, $aCondensedQueries) = self::DBCheckFormat();
//$sSQL = implode('; ', $aCondensedQueries); Does not work - multiple queries not allowed
foreach($aCondensedQueries as $sQuery)
{
$fStart = microtime(true);
CMDBSource::CreateTable($sQuery);
$fDuration = microtime(true) - $fStart;
if ($aCallback != null)
{
call_user_func($aCallback, $sQuery, $fDuration);
}
}
}

View File

@@ -46,6 +46,18 @@ class RunTimeEnvironment
$this->sTargetEnv = $sEnvironment;
}
/**
* Callback function for logging the queries run by the setup.
* According to the documentation the function must be defined before passing it to call_user_func...
* @param string $sQuery
* @param float $fDuration
* @return void
*/
public function LogQueryCallback($sQuery, $fDuration)
{
$this->log_info(sprintf('%.3fs - query: %s ', $fDuration, $sQuery));
}
/**
* Helper function to initialize the ORM and load the data model
* from the given file
@@ -411,7 +423,7 @@ class RunTimeEnvironment
{
if (!MetaModel::DBExists(/* bMustBeComplete */ false))
{
MetaModel::DBCreate();
MetaModel::DBCreate(array($this, 'LogQueryCallback'));
$this->log_ok("Database structure successfully created.");
}
else
@@ -430,7 +442,7 @@ class RunTimeEnvironment
{
if (MetaModel::DBExists(/* bMustBeComplete */ false))
{
MetaModel::DBCreate();
MetaModel::DBCreate(array($this, 'LogQueryCallback'));
$this->log_ok("Database structure successfully updated.");
// Check (and update only if it seems needed) the hierarchical keys