Skip to content

Commit

Permalink
Reduce number of queries required for the data conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
mantis committed May 17, 2009
1 parent dff6ab4 commit b06b010
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 51 deletions.
54 changes: 41 additions & 13 deletions admin/install_functions.php
Expand Up @@ -103,25 +103,53 @@ function install_date_migrate( $p_data) {

$t_table = db_get_table( $p_data[0] );
$t_id_column = $p_data[1];
$t_old_column = $p_data[2];
$t_new_column = $p_data[3];

if ( is_array( $p_data[2] ) ) {
$t_old_column = implode( ',', $p_data[2] );
$t_date_array = true;
$t_cnt_fields = sizeof( $p_data[2] );
$t_pairs = array();
foreach( $p_data[3] as $var ) {
array_push( $t_pairs, "$var=" . db_param() ) ;
}
$t_new_column = implode( ',', $t_pairs );
} else {
$t_old_column = $p_data[2];
$t_new_column = $p_data[3] . "=" . db_param();
$t_date_array = false;
}

$query = "SELECT $t_id_column, $t_old_column FROM $t_table";
$t_result = db_query_bound( $query );

while( $row = db_fetch_array( $t_result ) ) {
$t_id = $row[$t_id_column];
$t_old_value = $row[$t_old_column];
$t_id = (int)$row[$t_id_column];

$t_new_value = db_unixtimestamp($t_old_value);
if ($t_new_value < 100000 ) {
$t_new_value = 1;
}
if( $t_date_array ) {
for( $i=0; $i < $t_cnt_fields; $i++ ) {
$t_old_value = $row[$p_data[2][$i]];

$query = "UPDATE $t_table SET $t_new_column=" . db_param() . "
WHERE $t_id_column =" . db_param();

db_query_bound( $query, array( $t_new_value, $t_id ) );
$t_new_value[$i] = db_unixtimestamp($t_old_value);
if ($t_new_value[$i] < 100000 ) {
$t_new_value[$i] = 1;
}

}
$t_values = $t_new_value;
$t_values[] = $t_id;
} else {
$t_old_value = $row[$t_old_column];

$t_new_value = db_unixtimestamp($t_old_value);
if ($t_new_value < 100000 ) {
$t_new_value = 1;
}
$t_values = array( $t_new_value, $t_id);
}

$query = "UPDATE $t_table SET $t_new_column
WHERE $t_id_column=" . db_param();
db_query_bound( $query, $t_values );
}

// re-enabled query logging if we disabled it
Expand Down
79 changes: 41 additions & 38 deletions admin/schema.php
Expand Up @@ -439,41 +439,42 @@ function installer_db_now() {

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "
date_submitted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_bug_table', 'id', 'date_submitted', 'date_submitted_int' ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "date_submitted" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "date_submitted_int", "date_submitted", "date_submitted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "
due_date_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_bug_table', 'id', 'due_date', 'due_date_int' ) );
$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "
last_updated_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_bug_table', 'id', array( 'date_submitted', 'due_date', 'last_updated' ), array( 'due_date_int', 'last_updated_int', 'date_submitted_int' ) ) );

$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "date_submitted" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "date_submitted_int", "date_submitted", "date_submitted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "due_date" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "due_date_int", "due_date", "due_date_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "last_updated" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "last_updated_int", "last_updated", "last_updated_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array('CreateIndexSQL',Array('idx_last_mod',db_get_table( 'mantis_bugnote_table' ),'last_modified', array('DROP')), Array( 'db_index_exists', Array( db_get_table('mantis_bugnote_table'), 'idx_last_mod')));

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "
last_modified_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_bugnote_table', 'id', 'last_modified', 'last_modified_int' ) );
$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "
date_submitted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_bugnote_table', 'id', array( 'last_modified', 'date_submitted' ), array( 'last_modified_int', 'date_submitted_int' ) ) );

$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "last_modified" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "last_modified_int", "last_modified", "last_modified_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array('CreateIndexSQL',Array('idx_last_mod',db_get_table('mantis_bugnote_table'),'last_modified'));
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "date_submitted" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "date_submitted_int", "date_submitted", "date_submitted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "
last_updated_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_bug_table', 'id', 'last_updated', 'last_updated_int' ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "last_updated" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bug_table' ), "last_updated_int", "last_updated", "last_updated_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_bug_file_table' ), "
date_added_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_bug_file_table', 'id', 'date_added', 'date_added_int' ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bug_file_table' ), "date_added" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bug_file_table' ), "date_added_int", "date_added", "date_added_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "
date_submitted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_bugnote_table', 'id', 'date_submitted', 'date_submitted_int' ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "date_submitted" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bugnote_table' ), "date_submitted_int", "date_submitted", "date_submitted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_project_file_table' ), "
date_added_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
Expand All @@ -489,7 +490,13 @@ function installer_db_now() {

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_user_table' ), "
last_visit_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_user_table', 'id', 'last_visit', 'last_visit_int' ) );
$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_user_table' ), "
date_created_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_user_table', 'id', array( 'last_visit', 'date_created' ), array( 'last_visit_int', 'date_created_int' ) ) );

$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_user_table' ), "date_created" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_user_table' ), "date_created_int", "date_created", "date_created_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_user_table' ), "last_visit" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_user_table' ), "last_visit_int", "last_visit", "last_visit_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

Expand All @@ -499,15 +506,16 @@ function installer_db_now() {
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_email_table' ), "submitted" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_email_table' ), "submitted_int", "submitted", "submitted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );


$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_tag_table' ), "
date_created_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_tag_table', 'id', 'date_created', 'date_created_int' ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_tag_table' ), "date_created" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_tag_table' ), "date_created_int", "date_created", "date_created_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_tag_table' ), "
date_updated_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_tag_table', 'id', 'date_updated', 'date_updated_int' ) );

$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_tag_table', 'id', array( 'date_created', 'date_updated' ), array( 'date_created_int', 'date_updated_int' ) ) );

$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_tag_table' ), "date_created" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_tag_table' ), "date_created_int", "date_created", "date_created_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_tag_table' ), "date_updated" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_tag_table' ), "date_updated_int", "date_updated", "date_updated_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

Expand All @@ -517,33 +525,28 @@ function installer_db_now() {
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_bug_tag_table' ), "date_attached" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_bug_tag_table' ), "date_attached_int", "date_attached", "date_attached_int I UNSIGNED NOTNULL DEFAULT '1' " ) );


$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_tokens_table' ), "
timestamp_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_tokens_table', 'id', 'timestamp', 'timestamp_int' ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_tokens_table' ), "timestamp" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_tokens_table' ), "timestamp_int", "timestamp", "timestamp_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_tokens_table' ), "
expiry_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_tokens_table', 'id', 'expiry', 'expiry_int' ) );

$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_tokens_table', 'id', array( 'timestamp', 'expiry' ), array( 'timestamp_int', 'expiry_int' ) ) );

$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_tokens_table' ), "timestamp" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_tokens_table' ), "timestamp_int", "timestamp", "timestamp_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_tokens_table' ), "expiry" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_tokens_table' ), "expiry_int", "expiry", "expiry_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_user_table' ), "
date_created_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_user_table', 'id', 'date_created', 'date_created_int' ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_user_table' ), "date_created" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_user_table' ), "date_created_int", "date_created", "date_created_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_news_table' ), "
last_modified_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_news_table', 'id', 'last_modified', 'last_modified_int' ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_news_table' ), "last_modified" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_news_table' ), "last_modified_int", "last_modified", "last_modified_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

$upgrade[] = Array( 'AddColumnSQL', Array( db_get_table( 'mantis_news_table' ), "
date_posted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_news_table', 'id', 'date_posted', 'date_posted_int' ) );

$upgrade[] = Array( 'UpdateFunction', "date_migrate", array( 'mantis_news_table', 'id', array( 'date_posted', 'last_modified' ), array( 'date_posted_int', 'last_modified_int' ) ) );

$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_news_table' ), "last_modified" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_news_table' ), "last_modified_int", "last_modified", "last_modified_int I UNSIGNED NOTNULL DEFAULT '1' " ) );
$upgrade[] = Array( 'DropColumnSQL', Array( db_get_table( 'mantis_news_table' ), "date_posted" ) );
$upgrade[] = Array( 'RenameColumnSQL', Array( db_get_table( 'mantis_news_table' ), "date_posted_int", "date_posted", "date_posted_int I UNSIGNED NOTNULL DEFAULT '1' " ) );

Expand Down

0 comments on commit b06b010

Please sign in to comment.