version 1.201.2.4, 2021/03/04 23:55:05
|
version 1.201.2.6, 2021/09/16 16:20:36
|
Line 777 sub symb_is_for_task {
|
Line 777 sub symb_is_for_task {
|
return ($symb =~ /\.task$/); |
return ($symb =~ /\.task$/); |
} |
} |
|
|
|
my $requested_max_packet = 0; |
|
my $max_allowed_packet; |
|
|
sub update_full_student_data { |
sub update_full_student_data { |
my ($sname,$sdom,$courseid) = @_; |
my ($sname,$sdom,$courseid) = @_; |
Line 964 sub update_full_student_data {
|
Line 966 sub update_full_student_data {
|
} |
} |
## |
## |
## Store the response data |
## Store the response data |
$store_command = 'INSERT IGNORE INTO '.$fulldump_response_table. |
my $store_prefix = 'INSERT IGNORE INTO '.$fulldump_response_table. |
' VALUES '."\n"; |
' VALUES '."\n"; |
$store_rows = 0; |
$store_rows = 0; |
|
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_values = (); |
|
my $curr_values = ''; |
|
my $curr_length = 0; |
|
my ($max_values); |
|
if ($max_allowed_packet) { |
|
$max_values = $max_allowed_packet - length($store_prefix); |
|
} |
while (my ($symb_id,$hash1) = each (%$respdata)) { |
while (my ($symb_id,$hash1) = each (%$respdata)) { |
while (my ($part_id,$hash2) = each (%$hash1)) { |
while (my ($part_id,$hash2) = each (%$hash1)) { |
while (my ($resp_id,$hash3) = each (%$hash2)) { |
while (my ($resp_id,$hash3) = each (%$hash2)) { |
Line 978 sub update_full_student_data {
|
Line 997 sub update_full_student_data {
|
# and odd number of '\' cause insert errors to occur. |
# and odd number of '\' cause insert errors to occur. |
# Best trap this somehow... |
# Best trap this somehow... |
$submission = $dbh->quote($submission); |
$submission = $dbh->quote($submission); |
$store_command .= "('". |
my $sql_values = "('". |
join("','",$symb_id,$part_id, |
join("','",$symb_id,$part_id, |
$resp_id,$student_id, |
$resp_id,$student_id, |
$transaction, |
$transaction, |
Line 986 sub update_full_student_data {
|
Line 1005 sub update_full_student_data {
|
$data->{'response_specific'}, |
$data->{'response_specific'}, |
$data->{'response_specific_value'}, |
$data->{'response_specific_value'}, |
$data->{'response_specific_2'}, |
$data->{'response_specific_2'}, |
$data->{'response_specific_value_2'}). |
$data->{'response_specific_value_2'})."',"; |
"',".$submission."),"; |
if ($max_values) { |
|
my $length = length($sql_values) + length($submission."),"); |
|
if ($length > $max_values) { |
|
&Apache::lonnet::logthis("SQL responsedata insert for student: $sname would exceed max_allowed_packet size"); |
|
&Apache::lonnet::logthis("symb_id: $symb_id, part_id: $part_id, resp_id: $resp_id"); |
|
&Apache::lonnet::logthis("You may want to increase the max_allowed_packet size from the current: $max_allowed_packet"); |
|
$sql_values .= $dbh->quote('WARNING: Submission too large -- see grading interface for actual submission')."),"; |
|
$length = length($sql_values); |
|
&Apache::lonnet::logthis("Placeholder inserted instead of value of actual submission"); |
|
&Apache::lonnet::logthis("See grading interface for the actual submission"); |
|
} else { |
|
$sql_values .= $submission."),"; |
|
} |
|
if ($length + $curr_length > $max_values) { |
|
push(@store_values,$curr_values); |
|
$curr_values = $sql_values; |
|
$curr_length = $length; |
|
} else { |
|
$curr_values .= $sql_values; |
|
$curr_length += $length; |
|
} |
|
} else { |
|
$curr_values .= $sql_values.$submission."),"; |
|
} |
$store_rows++; |
$store_rows++; |
} |
} |
} |
} |
} |
} |
} |
} |
if ($store_rows) { |
if ($store_rows) { |
chop($store_command); |
if ($curr_values ne '') { |
$dbh->do($store_command); |
push(@store_values,$curr_values); |
if ($dbh->err) { |
} |
$returnstatus = 'error saving response data'; |
foreach my $item (@store_values) { |
&Apache::lonnet::logthis('insert error '.$dbh->errstr()); |
chop($item); |
&Apache::lonnet::logthis("While attempting\n".$store_command); |
if ($item ne '') { |
|
$dbh->do($store_prefix.$item); |
|
if ($dbh->err) { |
|
$returnstatus = 'error saving response data'; |
|
&Apache::lonnet::logthis('insert error '.$dbh->errstr()); |
|
&Apache::lonnet::logthis("While attempting\n".$store_prefix.$item); |
|
last; |
|
} |
|
} |
} |
} |
} |
} |
## |
## |
Line 1012 sub update_full_student_data {
|
Line 1062 sub update_full_student_data {
|
$returnstatus = 'error saving current data:'.$status; |
$returnstatus = 'error saving current data:'.$status; |
} elsif ($status ne 'okay') { |
} elsif ($status ne 'okay') { |
$returnstatus .= ' error saving current data:'.$status; |
$returnstatus .= ' error saving current data:'.$status; |
} |
} |
## |
## |
## Update the students time...... |
## Update the students time...... |
if ($returnstatus eq 'okay') { |
if ($returnstatus eq 'okay') { |
Line 1082 sub store_updatetime {
|
Line 1132 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 2473 sub get_student_scores {
|
Line 2520 sub get_student_scores {
|
&Apache::lonnet::logthis('prepared then executed '.$/.$request); |
&Apache::lonnet::logthis('prepared then executed '.$/.$request); |
return undef; |
return undef; |
} |
} |
$request = 'SELECT score,COUNT(*) FROM '.$tmptable.' GROUP BY score'; |
$request = 'SELECT score,COUNT(*) FROM '.$tmptable.' GROUP BY score ORDER BY score'; |
# &Apache::lonnet::logthis("request = \n".$request); |
# &Apache::lonnet::logthis("request = \n".$request); |
$sth = $dbh->prepare($request); |
$sth = $dbh->prepare($request); |
$sth->execute(); |
$sth->execute(); |