Diff for /loncom/interface/loncoursedata.pm between versions 1.201.2.4 and 1.203

version 1.201.2.4, 2021/03/04 23:55:05 version 1.203, 2018/03/11 12:44:22
Line 1082  sub store_updatetime { Line 1082  sub store_updatetime {
     $dbh->do($request);      $dbh->do($request);
 }  }
   
 my $requested_max_packet = 0;  
 my $max_allowed_packet;  
   
 sub store_student_data {  sub store_student_data {
     my ($sname,$sdom,$courseid,$student_data) = @_;      my ($sname,$sdom,$courseid,$student_data) = @_;
     #      #
Line 1105  sub store_student_data { Line 1102  sub store_student_data {
     my $starttime = Time::HiRes::time;      my $starttime = Time::HiRes::time;
     my $elapsed = 0;      my $elapsed = 0;
     my $rows_stored;      my $rows_stored;
     my $store_parameters_prefix  = 'INSERT IGNORE INTO '.$parameters_table.      my $store_parameters_command  = 'INSERT IGNORE INTO '.$parameters_table.
         ' VALUES '."\n";          ' VALUES '."\n";
     my $num_parameters = 0;      my $num_parameters = 0;
     my $store_performance_prefix = 'INSERT IGNORE INTO '.$performance_table.      my $store_performance_command = 'INSERT IGNORE INTO '.$performance_table.
         ' VALUES '."\n";          ' VALUES '."\n";
     return ('error',undef) if (! defined($dbh));      return ('error',undef) if (! defined($dbh));
     unless ($requested_max_packet) {  
         (undef,$max_allowed_packet) = $dbh->selectrow_array(  
                                              qq{show variables LIKE ? },  
                                              undef,  
                                              "max_allowed_packet");  
         if ($max_allowed_packet !~ /^\d+$/) {  
             $max_allowed_packet = '';  
         }  
         $requested_max_packet = 1;  
     }  
     my @store_parameters_values = ();  
     my $curr_params_values = '';  
     my $curr_params_length = 0;  
     my @store_performance_values = ();  
     my $curr_perf_values = '';  
     my $curr_perf_length = 0;  
     my ($max_param,$max_perf);  
     if ($max_allowed_packet) {  
         $max_param = $max_allowed_packet - length($store_parameters_prefix);  
         $max_perf = $max_allowed_packet - length($store_performance_prefix);  
     }  
     while (my ($current_symb,$param_hash) = each(%{$student_data})) {      while (my ($current_symb,$param_hash) = each(%{$student_data})) {
         #          #
         # make sure the symb is set up properly          # make sure the symb is set up properly
Line 1144  sub store_student_data { Line 1120  sub store_student_data {
                                               $symb_id,$student_id,                                                $symb_id,$student_id,
                                               $parameter)."',".                                                $parameter)."',".
                                                   $dbh->quote($value)."),\n";                                                    $dbh->quote($value)."),\n";
                   $num_parameters ++;
                 if ($sql_parameter !~ /''/) {                  if ($sql_parameter !~ /''/) {
                     if ($max_param) {                      $store_parameters_command .= $sql_parameter;
                         my $length = length($sql_parameter);  
                         if ($length > $max_param) {  
                             &Apache::lonnet::logthis("SQL parameter insert for student: $sname for parameter: $parameter would exceed max_allowed_packet size");  
                             &Apache::lonnet::logthis("symb_id: $symb_id");  
                             &Apache::lonnet::logthis("You may want to increase the max_allowed_packet size from the current: $max_allowed_packet");  
                             if ($parameter =~ /\.submission$/) {  
                                 $sql_parameter = "('".join("','",  
                                               $symb_id,$student_id,  
                                               $parameter)."',".  
                                                   $dbh->quote('WARNING: Submission too large -- see grading interface for actual submission')."),\n";  
                                 $length = length($sql_parameter);  
                                 &Apache::lonnet::logthis("Placeholder inserted instead of value of actual submission");  
                                 &Apache::lonnet::logthis("See grading interface for the actual submission");  
                             } else {  
                                 &Apache::lonnet::logthis("Skipping this item");  
                                 next;  
                             }  
                         }  
                         if ($length + $curr_params_length > $max_param) {  
                             push(@store_parameters_values,$curr_params_values);  
                             $curr_params_values = $sql_parameter;  
                             $curr_params_length = $length;  
                         } else {  
                             $curr_params_values .= $sql_parameter;  
                             $curr_params_length += $length;  
                         }  
                     } else {  
                         $curr_params_values .= $sql_parameter;  
                     }  
                     #$rows_stored++;                      #$rows_stored++;
                     $num_parameters ++;  
                 }                  }
             }              }
         }          }
Line 1218  sub store_student_data { Line 1165  sub store_student_data {
                 "('".join("','",$symb_id,$student_id,$part_id,$part,                  "('".join("','",$symb_id,$student_id,$part_id,$part,
                                 $solved,$tries,$awarded,$award,                                  $solved,$tries,$awarded,$award,
                                 $awarddetail,$timestamp)."'),\n";                                  $awarddetail,$timestamp)."'),\n";
             if ($max_perf) {              $store_performance_command .= $sql_performance;
                 my $length = length($sql_performance);  
                 if ($length > $max_perf) {  
                             &Apache::lonnet::logthis("SQL performance insert for student: $sname would exceed max_allowed_packet size");  
                             &Apache::lonnet::logthis("symb_id: $symb_id");  
                             &Apache::lonnet::logthis("Skipping this item.  You may want to increase the max_allowed_packet size from the current: $max_allowed_packet");  
                             next;  
                 } else {  
                     if ($length + $curr_perf_length > $max_perf) {  
                         push(@store_performance_values,$curr_perf_values);  
                         $curr_perf_values = $sql_performance;  
                         $curr_perf_length = $length;  
                     } else {  
                         $curr_perf_values .= $sql_performance;  
                         $curr_perf_length += $length;  
                     }  
                 }  
             } else {  
                 $curr_perf_values .= $sql_performance;  
             }  
             $rows_stored++;              $rows_stored++;
         }          }
     }      }
     if ($curr_params_values ne '') {  
         push(@store_parameters_values,$curr_params_values);  
     }  
     if ($curr_perf_values ne '') {  
         push(@store_performance_values,$curr_perf_values);  
     }  
     if (! $rows_stored) { return ($returnstatus, undef); }      if (! $rows_stored) { return ($returnstatus, undef); }
       $store_parameters_command =~ s|,\n$||;
       $store_performance_command =~ s|,\n$||;
     my $start = Time::HiRes::time;      my $start = Time::HiRes::time;
     foreach my $item (@store_performance_values) {      $dbh->do($store_performance_command);
         $item =~ s|,\n$||;      if ($dbh->err()) {
         if ($item ne '') {          &Apache::lonnet::logthis('performance bigass insert error:'.
             $dbh->do($store_performance_prefix.$item);                                   $dbh->errstr());
             if ($dbh->err()) {          &Apache::lonnet::logthis('command = '.$/.$store_performance_command);
                 &Apache::lonnet::logthis('performance insert error:'.          $returnstatus = 'error: unable to insert performance into database';
                                          $dbh->errstr());          return ($returnstatus,$student_data);
                 &Apache::lonnet::logthis('command = '.$/.$store_performance_prefix.$item);      }
                 $returnstatus = 'error: unable to insert performance into database';      $dbh->do($store_parameters_command) if ($num_parameters>0);
                 return ($returnstatus,$student_data);      if ($dbh->err()) {
             }          &Apache::lonnet::logthis('parameters bigass insert error:'.
         }                                   $dbh->errstr());
     }          &Apache::lonnet::logthis('command = '.$/.$store_parameters_command);
     if ($num_parameters > 0) {          &Apache::lonnet::logthis('rows_stored = '.$rows_stored);
         foreach my $item (@store_parameters_values) {          &Apache::lonnet::logthis('student_id = '.$student_id);
             $item =~ s|,\n$||;          $returnstatus = 'error: unable to insert parameters into database';
             if ($item ne '') {          return ($returnstatus,$student_data);
                 $dbh->do($store_parameters_prefix.$item);  
                 if ($dbh->err()) {  
                      &Apache::lonnet::logthis('parameters insert error:'.  
                                               $dbh->errstr());  
                      &Apache::lonnet::logthis('command = '.$/.$store_parameters_prefix.$item);  
                      &Apache::lonnet::logthis('rows_stored = '.$rows_stored);  
                      &Apache::lonnet::logthis('student_id = '.$student_id);  
                      $returnstatus = 'error: unable to insert parameters into database';  
                      return ($returnstatus,$student_data);  
                 }  
             }  
         }  
     }      }
     $elapsed += Time::HiRes::time - $start;      $elapsed += Time::HiRes::time - $start;
     return ($returnstatus,$student_data);      return ($returnstatus,$student_data);
Line 1765  sub get_problem_statistics { Line 1677  sub get_problem_statistics {
     #      #
     $request = 'SELECT MAX(tries),MIN(tries) FROM '.$stats_table.      $request = 'SELECT MAX(tries),MIN(tries) FROM '.$stats_table.
         ' WHERE awarded>0';          ' WHERE awarded>0';
       if (defined($time_requirements)) {
           $request .= ' AND '.$time_requirements;
       }
     my ($max,$min) = &execute_SQL_request($dbh,$request);      my ($max,$min) = &execute_SQL_request($dbh,$request);
     #      #
     $request = 'SELECT SUM(awarded) FROM '.$stats_table;      $request = 'SELECT SUM(awarded) FROM '.$stats_table;
       if (defined($time_requirements)) {
           $request .= ' AND '.$time_requirements;
       }
     my ($Solved) = &execute_SQL_request($dbh,$request);      my ($Solved) = &execute_SQL_request($dbh,$request);
     #      #
     $request = 'SELECT SUM(awarded) FROM '.$stats_table.      $request = 'SELECT SUM(awarded) FROM '.$stats_table.
         " WHERE solved='correct_by_override'";          " WHERE solved='correct_by_override'";
       if (defined($time_requirements)) {
           $request .= ' AND '.$time_requirements;
       }
     my ($solved) = &execute_SQL_request($dbh,$request);      my ($solved) = &execute_SQL_request($dbh,$request);
     #      #
     $Solved -= $solved;      $Solved -= $solved;
Line 1854  sub populate_weight_table { Line 1775  sub populate_weight_table {
     my @resources;      my @resources;
     foreach my $seq (@sequences) {      foreach my $seq (@sequences) {
         push(@resources,$navmap->retrieveResources($seq,          push(@resources,$navmap->retrieveResources($seq,
                                                    sub {shift->is_problem();},                                                     sub {shift->is_gradable();},
                                                    0,0,0));                                                     0,0,0));
     }      }
     if (! scalar(@resources)) {      if (! scalar(@resources)) {

Removed from v.1.201.2.4  
changed lines
  Added in v.1.203


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>