@@ -35,6 +35,8 @@ public function mysql()
35
35
PRIMARY KEY (`param_id`),
36
36
KEY (`param_name`)
37
37
) DEFAULT CHARSET=utf8; " );
38
+ $ this ->migrateScalarParams ();
39
+ $ this ->db ->query ('ALTER TABLE `tracker_scalar` DROP `params` ' );
38
40
}
39
41
40
42
/** Upgrade a PostgreSQL database. */
@@ -50,5 +52,37 @@ public function pgsql()
50
52
numeric_value double precision); "
51
53
);
52
54
$ this ->db ->query ('CREATE INDEX tracker_param_param_name_idx ON tracker_param (param_name); ' );
55
+ $ this ->migrateScalarParams ();
56
+ $ this ->db ->query ('ALTER TABLE tracker_scalar DROP COLUMN params; ' );
57
+ }
58
+
59
+ /** Migrate tracker_scalar params to tracker_param. */
60
+ private function migrateScalarParams ()
61
+ {
62
+ $ count = 0 ;
63
+ $ logger = Zend_Registry::get ('logger ' );
64
+ $ logger ->debug ('migrateScalarParams ' );
65
+ /** @var Tracker_ParamModel $paramModel */
66
+ $ paramModel = MidasLoader::loadModel ('Param ' , $ this ->moduleName );
67
+ $ uresult = $ this ->db ->query ('SELECT scalar_id, params from tracker_scalar where params is not null ' );
68
+ if ($ uresult ) {
69
+ while ($ row = $ uresult ->fetch (PDO ::FETCH_ASSOC )) {
70
+ if ($ count % 1000 == 0 ) {
71
+ $ logger ->debug ('Count ' .$ count );
72
+ }
73
+ ++$ count ;
74
+ $ scalarId = $ row ['scalar_id ' ];
75
+ $ params = $ row ['params ' ];
76
+ $ params = json_decode ($ params , true );
77
+ foreach ($ params as $ paramName => $ paramValue ) {
78
+ /** @var Tracker_ParamDao $paramDao */
79
+ $ paramDao = MidasLoader::newDao ('ParamDao ' , $ this ->moduleName );
80
+ $ paramDao ->setScalarId ($ scalarId );
81
+ $ paramDao ->setParamName ($ paramName );
82
+ $ paramDao ->setParamValue ($ paramValue );
83
+ $ paramModel ->save ($ paramDao );
84
+ }
85
+ }
86
+ }
53
87
}
54
88
}
0 commit comments