diff --git a/modules/tracker/database/upgrade/1.2.2.php b/modules/tracker/database/upgrade/1.2.2.php index 0b151d04e..9a1371cdc 100644 --- a/modules/tracker/database/upgrade/1.2.2.php +++ b/modules/tracker/database/upgrade/1.2.2.php @@ -35,6 +35,8 @@ public function mysql() PRIMARY KEY (`param_id`), KEY (`param_name`) ) DEFAULT CHARSET=utf8;"); + $this->migrateScalarParams(); + $this->db->query('ALTER TABLE `tracker_scalar` DROP `params`'); } /** Upgrade a PostgreSQL database. */ @@ -50,5 +52,37 @@ public function pgsql() numeric_value double precision);" ); $this->db->query('CREATE INDEX tracker_param_param_name_idx ON tracker_param (param_name);'); + $this->migrateScalarParams(); + $this->db->query('ALTER TABLE tracker_scalar DROP COLUMN params;'); + } + + /** Migrate tracker_scalar params to tracker_param. */ + private function migrateScalarParams() + { + $count = 0; + $logger = Zend_Registry::get('logger'); + $logger->debug('migrateScalarParams'); + /** @var Tracker_ParamModel $paramModel */ + $paramModel = MidasLoader::loadModel('Param', $this->moduleName); + $uresult = $this->db->query('SELECT scalar_id, params from tracker_scalar where params is not null'); + if ($uresult) { + while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) { + if ($count % 1000 == 0) { + $logger->debug('Count '.$count); + } + ++$count; + $scalarId = $row['scalar_id']; + $params = $row['params']; + $params = json_decode($params, true); + foreach ($params as $paramName => $paramValue) { + /** @var Tracker_ParamDao $paramDao */ + $paramDao = MidasLoader::newDao('ParamDao', $this->moduleName); + $paramDao->setScalarId($scalarId); + $paramDao->setParamName($paramName); + $paramDao->setParamValue($paramValue); + $paramModel->save($paramDao); + } + } + } } }