[LON-CAPA-cvs] cvs: loncom /interface lonmysql.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Wed, 24 Aug 2005 19:13:10 -0000
matthew Wed Aug 24 15:13:10 2005 EDT
Modified files:
/loncom/interface lonmysql.pm
Log:
Fixed MySQL 4 bug where &update_table_status returned bogus data. This is
only a temporary fix as it still has the bug of hard-coding the data fields.
Index: loncom/interface/lonmysql.pm
diff -u loncom/interface/lonmysql.pm:1.32 loncom/interface/lonmysql.pm:1.33
--- loncom/interface/lonmysql.pm:1.32 Mon Jul 11 09:49:47 2005
+++ loncom/interface/lonmysql.pm Wed Aug 24 15:13:07 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# MySQL utility functions
#
-# $Id: lonmysql.pm,v 1.32 2005/07/11 13:49:47 matthew Exp $
+# $Id: lonmysql.pm,v 1.33 2005/08/24 19:13:07 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -37,6 +37,7 @@
my $mysqluser;
my $mysqlpassword;
my $mysqldatabase;
+my %db_config;
sub set_mysql_user_and_password {
# If we are running under Apache and LONCAPA, use the LON-CAPA
@@ -375,6 +376,22 @@
return undef;
}
$debugstring = "Successfully connected to loncapa database.";
+ # Determine DB configuration
+ undef(%db_config);
+ my $sth = $dbh->prepare("SHOW VARIABLES");
+ $sth->execute();
+ if ($sth->err()) {
+ $debugstring = "Unable to retrieve db config variables";
+ return undef;
+ }
+ foreach my $row (@{$sth->fetchall_arrayref}) {
+ $db_config{$row->[0]} = $row->[1];
+ }
+ &Apache::lonnet::logthis("MySQL configuration variables");
+ while (my ($k,$v) = each(%db_config)) {
+ &Apache::lonnet::logthis(" '$k' => '$v'");
+ }
+ #
return 1;
}
@@ -554,10 +571,20 @@
#
# Get MySQLs table status information.
#
- my @tabledesc = qw/
- Name Type Row_format Rows Avg_row_length Data_length
+ my @tabledesc;
+ my ($major_version) = ($db_config{'version'} =~ /^(\d)\./);
+ &Apache::lonnet::logthis('major version = '.$major_version);
+ if ($major_version <= 3) {
+ @tabledesc = qw/
+ Name Type Row_format Rows Avg_row_length Data_length
Max_data_length Index_length Data_free Auto_increment
- Create_time Update_time Check_time Create_options Comment /;
+ Create_time Update_time Check_time Create_options Comment/;
+ } else { # At least 4 has this structure...
+ @tabledesc = qw/
+ Name Engine Version Row_format Rows Avg_row_length Data_length
+ Max_data_length Index_length Data_free Auto_increment Create_time
+ Update_time Check_time Collation Checksum Create_options Comment/;
+ }
my $db_command = "SHOW TABLE STATUS FROM loncapa LIKE '$tablename'";
my $sth = $dbh->prepare($db_command);
$sth->execute();