Author: spadkins
Date: Mon Mar 12 12:58:23 2007
New Revision: 9232

Modified:
   p5ee/trunk/App-Repository/lib/App/Repository/MySQL.pm

Log:
fix bugs in insert_rows()

Modified: p5ee/trunk/App-Repository/lib/App/Repository/MySQL.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository/MySQL.pm       (original)
+++ p5ee/trunk/App-Repository/lib/App/Repository/MySQL.pm       Mon Mar 12 
12:58:23 2007
@@ -134,8 +134,12 @@
     my $dbh = $self->{dbh};
 
     if ($#$cols == -1) {
-        $self->{error} = "Database->_mk_insert_rows_sql(): no columns 
specified";
-        return();
+        if ($#$rows > -1 && ref($rows->[0]) eq "ARRAY") {
+            die "_mk_insert_rows_sql(): no columns specified";
+        }
+        else {
+            $cols = [ keys %{$rows->[0]} ];
+        }
     }
     my $column_defs = $self->{table}{$table}{column};
 
@@ -191,10 +195,12 @@
     if (!$options->{replace} && $options->{update}) {
         my $update = $options->{update};
         $sql .= "on duplicate key update";
+        my $first_update_column = 1;
         for ($colnum = 0; $colnum <= $#$cols; $colnum++) {
             $col = $cols->[$colnum];
             if (!ref($update) || $update->{$col}) {
-                $sql .= "," if ($colnum > 0);
+                $sql .= "," if (!$first_update_column);
+                $first_update_column = 0;
                 $sql .= "\n   $col = values($col)";
             }
         }
@@ -293,7 +299,7 @@
     }
     if ($debug_sql) {
         $elapsed_time = $self->_read_timer($timer);
-        print "DEBUG_SQL: nrows [$nrows] ($elapsed_time sec)\n";
+        print "DEBUG_SQL: total rows [$nrows] ($elapsed_time sec)\n";
     }
     $self->{sql} = $sql;
     $self->{numrows} = $nrows;

Reply via email to