--- loncom/interface/loncoursedata.pm 2003/10/01 20:50:13 1.97 +++ loncom/interface/loncoursedata.pm 2003/10/02 17:07:41 1.99 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.97 2003/10/01 20:50:13 matthew Exp $ +# $Id: loncoursedata.pm,v 1.99 2003/10/02 17:07:41 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1072,6 +1072,36 @@ sub get_student { =pod +=item &clear_internal_caches() + +Causes the internal caches used in get_student_id, get_student, +get_symb_id, get_symb, get_part_id, and get_part to be undef'd. + +Needs to be called before the first operation with the MySQL database +for a given Apache request. + +=cut + +################################################ +################################################ +sub clear_internal_caches { + $have_read_part_table = 0; + undef(%ids_by_part); + undef(%parts_by_id); + $have_read_symb_table = 0; + undef(%ids_by_symb); + undef(%symbs_by_id); + $have_read_student_table = 0; + undef(%ids_by_student); + undef(%students_by_id); +} + + +################################################ +################################################ + +=pod + =item &update_full_student_data($sname,$sdom,$courseid) Does a lonnet::dump on a student to populate the courses tables. @@ -1149,7 +1179,7 @@ sub update_full_student_data { # We can deal with 'timestamp' right away my @timestamp_storage = ($symb_id,$student_id, $transaction,$value); - my $store_command = 'INSERT INTO '.$fulldump_timestamp_table. + my $store_command = 'INSERT IGNORE INTO '.$fulldump_timestamp_table. " VALUES ('".join("','",@timestamp_storage)."');"; $dbh->do($store_command); if ($dbh->err()) { @@ -1213,7 +1243,7 @@ sub update_full_student_data { } ## ## Store the part data - my $store_command = 'INSERT INTO '.$fulldump_part_table. + my $store_command = 'INSERT IGNORE INTO '.$fulldump_part_table. ' VALUES '."\n"; my $store_rows = 0; while (my ($symb_id,$hash1) = each (%$partdata)) { @@ -1241,7 +1271,7 @@ sub update_full_student_data { } ## ## Store the response data - $store_command = 'INSERT INTO '.$fulldump_response_table. + $store_command = 'INSERT IGNORE INTO '.$fulldump_response_table. ' VALUES '."\n"; $store_rows = 0; while (my ($symb_id,$hash1) = each (%$respdata)) { @@ -1381,10 +1411,10 @@ sub store_student_data { my $starttime = Time::HiRes::time; my $elapsed = 0; my $rows_stored; - my $store_parameters_command = 'INSERT INTO '.$parameters_table. + my $store_parameters_command = 'INSERT IGNORE INTO '.$parameters_table. ' VALUES '."\n"; my $num_parameters = 0; - my $store_performance_command = 'INSERT INTO '.$performance_table. + my $store_performance_command = 'INSERT IGNORE INTO '.$performance_table. ' VALUES '."\n"; return ('error',undef) if (! defined($dbh)); while (my ($current_symb,$param_hash) = each(%{$student_data})) {