From b06b0108d7a39986ea178a42e9749636d7e01d33 Mon Sep 17 00:00:00 2001 From: Paul Richards Date: Tue, 14 Apr 2009 12:01:07 +0100 Subject: [PATCH] Reduce number of queries required for the data conversion --- admin/install_functions.php | 54 +++++++++++++++++++------ admin/schema.php | 79 +++++++++++++++++++------------------ 2 files changed, 82 insertions(+), 51 deletions(-) diff --git a/admin/install_functions.php b/admin/install_functions.php index 380e2f9404..5c81c1dd8a 100644 --- a/admin/install_functions.php +++ b/admin/install_functions.php @@ -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 diff --git a/admin/schema.php b/admin/schema.php index 081259a7ff..bf55a4e939 100644 --- a/admin/schema.php +++ b/admin/schema.php @@ -439,29 +439,35 @@ 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' " ) ); @@ -469,11 +475,6 @@ function installer_db_now() { $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' " ) ); @@ -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' " ) ); @@ -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' " ) ); @@ -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' " ) );