From f8100e36290e82ebfd3ea2f5e694b98ad8f5a786 Mon Sep 17 00:00:00 2001 From: jgraham909 Date: Mon, 17 Jul 2006 22:38:58 +0000 Subject: [PATCH] Fix for grade_letter table and how MySQL version 5.0.3+ handles DECIMAL fields Versions: 5.0.3+ truncate to 99.99 if a value of 100.00 or greater is input for grade_high or grade_low. See the following for more info: http://dev.mysql.com/doc/refman/5.0/en/precision-math-decimal-changes.html --- lib/db/mysql.php | 6 ++++++ lib/db/mysql.sql | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/db/mysql.php b/lib/db/mysql.php index 0109ccf3162..d585f1c04a8 100644 --- a/lib/db/mysql.php +++ b/lib/db/mysql.php @@ -1978,6 +1978,12 @@ function main_upgrade($oldversion=0) { table_column("user", "lastIP", "lastip", "varchar", "15", "", "", "not null", "currentlogin"); } + // Change in MySQL 5.0.3 concerning how decimals are stored + if ($oldversion < 2006070300) { + execute_sql("ALTER TABLE `{$CFG->prefix}grade_letter MODIFY `grade_high` DECIMAL(5,2)", FALSE); + execute_sql("ALTER TABLE `{$CFG->prefix}grade_letter MODIFY `grade_low` DECIMAL(5,2)", FALSE); + } + return $result; } diff --git a/lib/db/mysql.sql b/lib/db/mysql.sql index 20976e780b4..332de89a399 100644 --- a/lib/db/mysql.sql +++ b/lib/db/mysql.sql @@ -341,8 +341,8 @@ CREATE TABLE `prefix_grade_letter` ( `id` int(10) unsigned NOT NULL auto_increment, `courseid` int(10) unsigned NOT NULL default '0', `letter` varchar(8) NOT NULL default 'NA', - `grade_high` decimal(4,2) NOT NULL default '100.00', - `grade_low` decimal(4,2) NOT NULL default '0.00', + `grade_high` decimal(5,2) NOT NULL default '100.00', + `grade_low` decimal(5,2) NOT NULL default '0.00', PRIMARY KEY (`id`), KEY `courseid` (`courseid`) ) TYPE=MyISAM ;