Author: timbo
Date: Thu Mar 11 05:51:27 2004
New Revision: 217

Modified:
   dbi/trunk/Changes
   dbi/trunk/DBI.pm
   dbi/trunk/lib/DBI/PurePerl.pm
Log:
Moved methods common to all handles into DBI::common.


Modified: dbi/trunk/Changes
==============================================================================
--- dbi/trunk/Changes   (original)
+++ dbi/trunk/Changes   Thu Mar 11 05:51:27 2004
@@ -22,6 +22,7 @@
     DBI->trace(split '=', $ENV{DBI_TRACE}, 2);
   Improved "invalid number of parameters" error message.
   Added DBI::common as base class for DBI::db, DBD::st etc.
+  Moved methods common to all handles into DBI::common.
 
   Major tracing enhancement:
 

Modified: dbi/trunk/DBI.pm
==============================================================================
--- dbi/trunk/DBI.pm    (original)
+++ dbi/trunk/DBI.pm    Thu Mar 11 05:51:27 2004
@@ -342,37 +342,32 @@
 
 my $keeperr = { O=>0x0004 };
 
-my @TieHash_IF = (     # Generic Tied Hash Interface
-       'STORE'   => { O=>0x0418 | 0x4 },
-       'FETCH'   => { O=>0x0404 },
-       'FIRSTKEY'=> $keeperr,
-       'NEXTKEY' => $keeperr,
-       'EXISTS'  => $keeperr,
-       'CLEAR'   => $keeperr,
-       'DESTROY' => $keeperr,
-);
-my @Common_IF = (      # Interface functions common to all DBI classes
-       func    =>      {                               O=>0x0006       },
-       'trace' =>      { U =>[1,3,'[$trace_level, [$filename]]'],      O=>0x0004 },
-       trace_msg =>    { U =>[2,3,'$message_text [, $min_level ]' ],   O=>0x0004, 
T=>8 },
-       debug   =>      { U =>[1,2,'[$debug_level]'],   O=>0x0004 }, # old name for 
trace
-       dump_handle  => { U =>[1,3,'[$message [, $level]]'],    O=>0x0004 },
-       private_data => { U =>[1,1],                    O=>0x0004 },
-       err     =>      $keeperr,
-       errstr  =>      $keeperr,
-       state   =>      $keeperr,
-       set_err =>      { U =>[3,6,'$err, $errmsg [, $state, $method, $rv]'], 
O=>0x0010 },
-       _not_impl =>    undef,
-       can     =>      { O=>0x0100 }, # special case, see dispatch
-       parse_trace_flag   =>   { U =>[2,2,'$name'],    O=>0x0404, T=>8 },
-       parse_trace_flags  =>   { U =>[2,2,'$flags'],   O=>0x0404, T=>8 },
-);
-
 %DBI::DBI_methods = ( # Define the DBI interface methods per class:
 
+    common => {                # Interface methods common to all DBI handle classes
+       'DESTROY'       => $keeperr,
+       'CLEAR'         => $keeperr,
+       'EXISTS'        => $keeperr,
+       'FETCH'         => { O=>0x0404 },
+       'FIRSTKEY'      => $keeperr,
+       'NEXTKEY'       => $keeperr,
+       'STORE'         => { O=>0x0418 | 0x4 },
+       _not_impl       => undef,
+       can             => { O=>0x0100 }, # special case, see dispatch
+       debug           => { U =>[1,2,'[$debug_level]'],        O=>0x0004 }, # old 
name for trace
+       dump_handle     => { U =>[1,3,'[$message [, $level]]'], O=>0x0004 },
+       err             => $keeperr,
+       errstr          => $keeperr,
+       state           => $keeperr,
+       func            => { O=>0x0006  },
+       parse_trace_flag   => { U =>[2,2,'$name'],      O=>0x0404, T=>8 },
+       parse_trace_flags  => { U =>[2,2,'$flags'],     O=>0x0404, T=>8 },
+       private_data    => { U =>[1,1],                 O=>0x0004 },
+       set_err         => { U =>[3,6,'$err, $errmsg [, $state, $method, $rv]'], 
O=>0x0010 },
+       trace           => { U =>[1,3,'[$trace_level, [$filename]]'],   O=>0x0004 },
+       trace_msg       => { U =>[2,3,'$message_text [, $min_level ]' ],        
O=>0x0004, T=>8 },
+    },
     dr => {            # Database Driver Interface
-       @Common_IF,
-       @TieHash_IF,
        'connect'  =>   { U =>[1,5,'[$db [,$user [,$passwd [,\%attr]]]]'], H=>3 },
        'connect_cached'=>{U=>[1,5,'[$db [,$user [,$passwd [,\%attr]]]]'], H=>3 },
        'disconnect_all'=>{ U =>[1,1], O=>0x0800 },
@@ -380,8 +375,6 @@
        default_user => { U =>[3,4,'$user, $pass [, \%attr]' ] },
     },
     db => {            # Database Session Class Interface
-       @Common_IF,
-       @TieHash_IF,
        data_sources    => { U =>[1,2,'[\%attr]' ], O=>0x0200 },
        take_imp_data   => { U =>[1,1], },
        clone           => { U =>[1,1,''] },
@@ -417,8 +410,6 @@
        get_info        => { U =>[2,2,'$info_type'], O=>0x2200|0x0800 },
     },
     st => {            # Statement Class Interface
-       @Common_IF,
-       @TieHash_IF,
        bind_col        => { U =>[3,4,'$column, \\$var [, \%attr]'] },
        bind_columns    => { U =>[2,0,'\\$var1 [, \\$var2, ...]'] },
        bind_param      => { U =>[3,4,'$parameter, $var [, \%attr]'] },

Modified: dbi/trunk/lib/DBI/PurePerl.pm
==============================================================================
--- dbi/trunk/lib/DBI/PurePerl.pm       (original)
+++ dbi/trunk/lib/DBI/PurePerl.pm       Thu Mar 11 05:51:27 2004
@@ -197,14 +197,11 @@
 
     push @pre_call_frag, q{
        return if $h_inner; # ignore DESTROY for outer handle
-    } if $method_name eq 'DESTROY';
-
-    push @pre_call_frag, q{
        # copy err/errstr/state up to driver so $DBI::err etc still work
        if ($h->{err} and my $drh = $h->{Driver}) {
            $drh->{$_} = $h->{$_} for ('err','errstr','state');
        }
-    } if $method eq 'DBI::db::DESTROY';
+    } if $method_name eq 'DESTROY';
 
     push @pre_call_frag, q{
        return $h->{$_[0]} if exists $h->{$_[0]};
@@ -408,7 +405,7 @@
     my $h_inner = tied(%$h) || $h;
     if (($DBI::dbi_debug & 0xF) >= 4) {
        local $^W;
-       print $DBI::tfh "_setup_handle(@_)";
+       print $DBI::tfh "      _setup_handle(@_)\n";
     }
     $h_inner->{"imp_data"} = $imp_data;
     $h_inner->{"ImplementorClass"} = $imp_class;

Reply via email to