[LON-CAPA-cvs] cvs: loncom /interface lonmysql.pm

lueken lueken@source.lon-capa.org
Sun, 01 Feb 2009 22:03:42 -0000


lueken		Sun Feb  1 22:03:42 2009 EDT

  Modified files:              
    /loncom/interface	lonmysql.pm 
  Log:
  Show-Tables Cache: Buffering the result for later use in tables_in_db function (much faster)
  
  
Index: loncom/interface/lonmysql.pm
diff -u loncom/interface/lonmysql.pm:1.37 loncom/interface/lonmysql.pm:1.38
--- loncom/interface/lonmysql.pm:1.37	Wed Apr 11 22:37:17 2007
+++ loncom/interface/lonmysql.pm	Sun Feb  1 22:03:42 2009
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # MySQL utility functions
 #
-# $Id: lonmysql.pm,v 1.37 2007/04/11 22:37:17 albertel Exp $
+# $Id: lonmysql.pm,v 1.38 2009/02/01 22:03:42 lueken Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1095,16 +1095,29 @@
 =cut
 
 ###########################################
+
+########## Show-Tables Cache
+my $have_read_tables = 0;
+my $dbh_sth;
+##########
+
 sub tables_in_db {
     return undef if (!defined(&connect_to_db()));
-    my $sth=$dbh->prepare('SHOW TABLES');
-    $sth->execute();
-    $sth->execute();
-    my $aref = $sth->fetchall_arrayref;
-    if ($sth->err()) {
+    
+    ########## Show-Tables Cache
+    if(!$have_read_tables) { 
+     $dbh_sth=$dbh->prepare('SHOW TABLES');
+     $have_read_tables = 1;
+    }   
+    $dbh_sth->execute();
+    #$dbh_sth->execute(); # Removed strange execute - from release 119
+    ##########    
+    
+    my $aref = $dbh_sth->fetchall_arrayref;
+    if ($dbh_sth->err()) {
         $errorstring = 
             "$dbh ATTEMPTED:\n".'fetchall_arrayref after SHOW TABLES'.
-            "\nRESULTING ERROR:\n".$sth->errstr;
+            "\nRESULTING ERROR:\n".$dbh_sth->errstr;
         return undef;
     }
     my @table_list;