--- loncom/interface/lonmysql.pm	2003/03/14 15:37:02	1.10
+++ loncom/interface/lonmysql.pm	2003/04/18 15:50:55	1.13
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # MySQL utility functions
 #
-# $Id: lonmysql.pm,v 1.10 2003/03/14 15:37:02 matthew Exp $
+# $Id: lonmysql.pm,v 1.13 2003/04/18 15:50:55 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -348,6 +348,33 @@ sub connect_to_db {
 
 =pod
 
+=item &verify_sql_connection()
+
+Inputs: none.
+
+Returns: 0 (failure) or 1 (success)
+
+Checks to make sure the database can be connected to.  It does not
+initialize anything in the lonmysql package.
+
+=cut
+
+###############################
+sub verify_sql_connection {
+    my $connection;
+    if (! ($connection = DBI->connect("DBI:mysql:loncapa","www",
+                                      $Apache::lonnet::perlvar{'lonSqlAccess'},
+                                      { RaiseError=>0,PrintError=>0}))) {
+        return 0;
+    }
+    undef($connection);
+    return 1;
+}
+
+###############################
+
+=pod
+
 =item &disconnect_from_db()
 
 Inputs: none.
@@ -559,16 +586,16 @@ Input formats:
                   },
         ],
         'PRIMARY KEY' => (index_col_name,...),
-         KEY => { name => 'idx_name', 
-                  columns => (col1,col2,..),},
-         INDEX => { name => 'idx_name', 
-                    columns => (col1,col2,..),},
-         UNIQUE => { index => 'yes',
+         KEY => [{ name => 'idx_name', 
+                  columns => (col1,col2,..),},],
+         INDEX => [{ name => 'idx_name', 
+                    columns => (col1,col2,..),},],
+         UNIQUE => [{ index => 'yes',
                      name => 'idx_name',
-                     columns => (col1,col2,..),},
-         FULLTEXT => { index => 'yes',
+                     columns => (col1,col2,..),},],
+         FULLTEXT => [{ index => 'yes',
                        name => 'idx_name',
-                       columns => (col1,col2,..),},
+                       columns => (col1,col2,..),},],
 
     }
 
@@ -626,30 +653,35 @@ sub create_table {
         push (@Columns,'PRIMARY KEY ('.join(',',@{$table_des->{'PRIMARY KEY'}})
               .')');
     }
-    foreach ('KEY','INDEX') {
-        if (exists($table_des->{$_})) {
-            my $text = $_.' ';
-            if (exists($table_des->{$_}->{'name'})) {
-                $text .=$table_des->{$_}->{'name'};
+    #
+    foreach my $indextype ('KEY','INDEX') {
+        next if (!exists($table_des->{$indextype}));
+        foreach my $indexdescription (@{$table_des->{$indextype}}) {
+            my $text = $indextype.' ';
+            if (exists($indexdescription->{'name'})) {
+                $text .=$indexdescription->{'name'};
             }
-            $text .= ' ('.join(',',@{$table_des->{$_}->{'columns'}}).')';
+            $text .= ' ('.join(',',@{$indexdescription->{'columns'}}).')';
             push (@Columns,$text);
         }
     }
-    foreach ('UNIQUE','FULLTEXT') {
-        if (exists($table_des->{$_})) {
-            my $text = $_.' ';
-            if (exists($table_des->{$_}->{'index'}) &&
-                $table_des->{$_}->{'index'} eq 'yes') {
+    #
+    foreach my $indextype ('UNIQUE','FULLTEXT') {
+        next if (! exists($table_des->{$indextype}));
+        foreach my $indexdescription (@{$table_des->{$indextype}}) {
+            my $text = $indextype.' ';
+            if (exists($indexdescription->{'index'}) &&
+                $indexdescription->{'index'} eq 'yes') {
                 $text .= 'INDEX ';
             }
-            if (exists($table_des->{$_}->{'name'})) {
-                $text .=$table_des->{$_}->{'name'};
+            if (exists($indexdescription->{'name'})) {
+                $text .=$indexdescription->{'name'};
             }
-            $text .= ' ('.join(',',@{$table_des->{$_}->{'columns'}}).')';
+            $text .= ' ('.join(',',@{$indexdescription->{'columns'}}).')';
             push (@Columns,$text);
         }
     }
+    #
     $request .= "(".join(", ",@Columns).") ";
     unless($table_des->{'permanent'} eq 'yes') {
         $request.="COMMENT = 'temporary' ";
@@ -976,6 +1008,7 @@ sub remove_from_table {
         $errorstring = "ERROR on execution of ".$command."\n".$sth->errstr;
         return undef;
     }
+    $debugstring = $command;
     my $rows = $sth->rows;
     return $rows;
 }