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;