diff options
author | Eugeniy Mikhailov <evgmik@gmail.com> | 2013-12-05 22:25:00 -0500 |
---|---|---|
committer | Eugeniy Mikhailov <evgmik@gmail.com> | 2013-12-05 22:25:00 -0500 |
commit | 26e93d7c5b64d6420f9bfea2f2125f81ccdc714a (patch) | |
tree | ba20ec7438d07f373d41ba64b446b181bcd5ad98 /GradeBook_lib.tcl | |
parent | f5cec25730f01effd14376bec8a5fa28baaf0f2c (diff) | |
download | GradeBook-26e93d7c5b64d6420f9bfea2f2125f81ccdc714a.tar.gz GradeBook-26e93d7c5b64d6420f9bfea2f2125f81ccdc714a.zip |
wrap inside of transaction only weights recalculation
Diffstat (limited to 'GradeBook_lib.tcl')
-rwxr-xr-x | GradeBook_lib.tcl | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/GradeBook_lib.tcl b/GradeBook_lib.tcl index 572430e..9b7293c 100755 --- a/GradeBook_lib.tcl +++ b/GradeBook_lib.tcl @@ -209,6 +209,16 @@ proc calculteSumOfPointsForStudentInCategory { student category } { } proc calculteWeightedTotals { } { + # we will do everything with in one transaction + # otherwise I see performance degradation on some computers + # when there are a lot if update statements + set eval_str [concat BEGIN TRANSACTION] + set err [catch {db eval $eval_str } errStat] + if { $err } { + htmlErrorMsg $errStat + dbg "the following error happen: $errStat" msg_level_critical + } + set grades_category [ get_grades_category ] #global grades_category set all_column_names [getColListFromTable GradesTable] @@ -297,6 +307,15 @@ proc calculteWeightedTotals { } { set max_weighted_sum [ expr {$max_weighted_sum +$weight} ] } UpdateColValue4UserNameNonWeb $grand_total_col_name _Max_Points_ $max_weighted_sum + + # ending transaction + set eval_str [concat END TRANSACTION] + set err [catch {db eval $eval_str } errStat] + if { $err } { + htmlErrorMsg $errStat + dbg "the following error happen: $errStat" msg_level_critical + } + } proc grade_Category2html_name { category } { |