Diff for /loncom/interface/lonmysql.pm between versions 1.27 and 1.34

version 1.27, 2005/02/21 17:23:32 version 1.34, 2005/08/24 19:21:05
Line 32  package Apache::lonmysql; Line 32  package Apache::lonmysql;
 use strict;  use strict;
 use DBI;  use DBI;
 use POSIX qw(strftime mktime);  use POSIX qw(strftime mktime);
   use Apache::lonnet;
   
 my $mysqluser;  my $mysqluser;
 my $mysqlpassword;  my $mysqlpassword;
 my $mysqldatabase;  my $mysqldatabase;
   my %db_config;
   
 sub set_mysql_user_and_password {  sub set_mysql_user_and_password {
     # If we are running under Apache and LONCAPA, use the LON-CAPA       # If we are running under Apache and LONCAPA, use the LON-CAPA 
Line 89  Each table has a numeric ID that is a pa Line 91  Each table has a numeric ID that is a pa
 The table id is returned by &create_table.    The table id is returned by &create_table.  
 If you lose the table id, it is lost forever.  If you lose the table id, it is lost forever.
 The table names in MySQL correspond to   The table names in MySQL correspond to 
 $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'.$table_id.  If the table id   $env{'user.name'}.'_'.$env{'user.domain'}.'_'.$table_id.  If the table id 
 is non-numeric, it is assumed to be the full name of a table.  If you pass  is non-numeric, it is assumed to be the full name of a table.  If you pass
 the table id in a form, you MUST ensure that what you send to lonmysql is  the table id in a form, you MUST ensure that what you send to lonmysql is
 numeric, otherwise you are opening up all the tables in the MySQL database.  numeric, otherwise you are opening up all the tables in the MySQL database.
Line 374  sub connect_to_db { Line 376  sub connect_to_db {
         return undef;          return undef;
     }      }
     $debugstring = "Successfully connected to loncapa database.";          $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;      return 1;
 }  }
   
Line 553  sub update_table_info { Line 571  sub update_table_info {
     #      #
     # Get MySQLs table status information.      # Get MySQLs table status information.
     #      #
     my @tabledesc = qw/      my @tabledesc;
         Name Type Row_format Rows Avg_row_length Data_length      my ($major_version) = ($db_config{'version'} =~ /^(\d)\./);
       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               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 $db_command = "SHOW TABLE STATUS FROM loncapa LIKE '$tablename'";
     my $sth = $dbh->prepare($db_command);      my $sth = $dbh->prepare($db_command);
     $sth->execute();      $sth->execute();
Line 820  sub get_new_table_id { Line 847  sub get_new_table_id {
     my $newid = 0;      my $newid = 0;
     my @tables = &tables_in_db();      my @tables = &tables_in_db();
     foreach (@tables) {      foreach (@tables) {
         if (/^$ENV{'user.name'}_$ENV{'user.domain'}_(\d+)$/) {          if (/^$env{'user.name'}_$env{'user.domain'}_(\d+)$/) {
             $newid = $1 if ($1 > $newid);              $newid = $1 if ($1 > $newid);
         }          }
     }      }
Line 976  sub bulk_store_rows { Line 1003  sub bulk_store_rows {
         $request .= '('.join(',',@$row).'),';          $request .= '('.join(',',@$row).'),';
     }      }
     $request =~ s/,$//;      $request =~ s/,$//;
       # $debugstring = "Executed ".$/.$request; # commented out - this is big
     $dbh->do($request);      $dbh->do($request);
     if ($dbh->err) {      if ($dbh->err) {
         $errorstring = 'Attempted '.$/.$request.$/.'Got error '.$dbh->errstr();          $errorstring = 'Attempted '.$/.$request.$/.'Got error '.$dbh->errstr();
Line 1098  sub translate_id { Line 1126  sub translate_id {
     # id should be a digit.  If it is not a digit we assume the given id      # id should be a digit.  If it is not a digit we assume the given id
     # is complete and does not need to be translated.      # is complete and does not need to be translated.
     return $id if ($id =~ /\D/);        return $id if ($id =~ /\D/);  
     return $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'.$id;      return $env{'user.name'}.'_'.$env{'user.domain'}.'_'.$id;
 }  }
   
 ###########################################  ###########################################
Line 1208  Fixes a table name so that it will work Line 1236  Fixes a table name so that it will work
 ##########################################  ##########################################
 sub fix_table_name {  sub fix_table_name {
     my ($name) = @_;      my ($name) = @_;
     $name =~ s/^(\d+e\d+)/_$1/;      $name =~ s/^(\d+[eE]\d+)/_$1/;
     return $name;      return $name;
 }  }
   

Removed from v.1.27  
changed lines
  Added in v.1.34


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