Author: REHSACK
Date: Fri May 21 11:56:06 2010
New Revision: 14001

Modified:
   dbi/trunk/lib/DBI/SQL/Nano.pm

Log:
- port drop behaviour from SQL::Statement
- port _map_colnums from SQL::Eval


Modified: dbi/trunk/lib/DBI/SQL/Nano.pm
==============================================================================
--- dbi/trunk/lib/DBI/SQL/Nano.pm       (original)
+++ dbi/trunk/lib/DBI/SQL/Nano.pm       Fri May 21 11:56:06 2010
@@ -282,7 +282,17 @@
 sub DROP ($$$)
 {
     my ( $self, $data, $params ) = @_;
-    my $table = $self->open_tables( $data, 0, 0 );
+
+    my $table;
+    eval { ($table) = $self->open_tables( $data, 0, 1 ); };
+    if ( $self->{ignore_missing_table} and $@ and $@ =~ m/no such 
(table|file)/i )
+    {
+       return ( -1, 0 );
+    }
+
+    $self->do_err($@) if ($@);
+    return ( -1, 0 ) unless $table;
+
     $table->drop($data);
     ( -1, 0 );
 }
@@ -703,6 +713,7 @@
 
     defined( $self->{col_nums} ) and "HASH" eq ref( $self->{col_nums} )
       or croak("attrbute 'col_nums' must be defined as a hash");
+    exists( $self->{col_nums} ) or $self->{col_nums} = _map_colnums( 
$self->{col_names} );
     defined( $self->{col_names} ) and "ARRAY" eq ref( $self->{col_names} )
       or croak("attrbute 'col_names' must be defined as an array");
 
@@ -710,6 +721,18 @@
     return $self;
 }
 
+sub _map_colnums
+{
+    my $col_names = $_[0];
+    my %col_nums;
+    for my $i ( 0 .. $#$col_names )
+    {
+        next unless $col_names->[$i];
+        $col_nums{ $col_names->[$i] } = $i;
+    }
+    return \%col_nums;
+}
+
 sub row()         { return $_[0]->{row}; }
 sub column($)     { return $_[0]->{row}->[ $_[0]->column_num( $_[1] ) ]; }
 sub column_num($) { $_[0]->{col_nums}->{ $_[1] }; }

Reply via email to