Hi Tim,

the attached patch adds 'Carp::' to all unqualified
calls to carp() and croak().
You'll get the error message above with something like

  perl -MDBI -e 'DBI->connect()->primary_key($c,$s,$t)'


Steffen
*** DBI.orig    Fri Aug 22 23:25:40 2003
--- DBI.pm      Mon Nov 03 16:14:28 2003
***************
*** 155,161 ****
  
  my $Revision = substr(q$Revision: 11.36 $, 10);
  
! use Carp;
  use DynaLoader ();
  use Exporter ();
  
--- 155,161 ----
  
  my $Revision = substr(q$Revision: 11.36 $, 10);
  
! use Carp();
  use DynaLoader ();
  use Exporter ();
  
***************
*** 726,732 ****
        # catch people on case in-sensitive systems using the wrong case
        $advice = "\nPerhaps the capitalisation of DBD '$driver' isn't right."
                if $@ =~ /locate object method/;
!       croak("$driver_class initialisation failed: [EMAIL PROTECTED]");
      }
  
      $DBI::installed_drh{$driver} = $drh;
--- 726,732 ----
        # catch people on case in-sensitive systems using the wrong case
        $advice = "\nPerhaps the capitalisation of DBD '$driver' isn't right."
                if $@ =~ /locate object method/;
!       Carp::croak("$driver_class initialisation failed: [EMAIL PROTECTED]");
      }
  
      $DBI::installed_drh{$driver} = $drh;
***************
*** 990,996 ****
  
  sub connect_test_perf {
      my($class, $dsn,$dbuser,$dbpass, $attr) = @_;
!       croak("connect_test_perf needs hash ref as fourth arg") unless ref $attr;
      # these are non standard attributes just for this special method
      my $loops ||= $attr->{dbi_loops} || 5;
      my $par   ||= $attr->{dbi_par}   || 1;    # parallelism
--- 990,996 ----
  
  sub connect_test_perf {
      my($class, $dsn,$dbuser,$dbpass, $attr) = @_;
!       Carp::croak("connect_test_perf needs hash ref as fourth arg") unless ref $attr;
      # these are non standard attributes just for this special method
      my $loops ||= $attr->{dbi_loops} || 5;
      my $par   ||= $attr->{dbi_par}   || 1;    # parallelism
***************
*** 1139,1145 ****
  {   package   # hide from PAUSE
        DBD::Switch::dr;
      DBI->setup_driver('DBD::Switch'); # sets up @ISA
-     require Carp;
  
      $DBD::Switch::dr::imp_data_size = 0;
      $DBD::Switch::dr::imp_data_size = 0;      # avoid typo warning
--- 1139,1144 ----
***************
*** 1212,1225 ****
        # to install new methods into the DBI dispatcher
        # DBD::Foo::db->install_method("foo_mumble", { usage => [...], options => 
'...' });
        my ($class, $method, $attr) = @_;
!       croak("Class '$class' must begin with DBD:: and end with ::db or ::st")
            unless $class =~ /^DBD::(\w+)::(dr|db|st)$/;
        my ($driver, $subtype) = ($1, $2);
!       croak("invalid method name '$method'")
            unless $method =~ m/^([a-z]+_)\w+$/;
        my $prefix = $1;
        my $reg_info = $dbd_prefix_registry->{$prefix};
!       croak("method name prefix '$prefix' is not registered") unless $reg_info;
        my %attr = %{$attr||{}}; # copy so we can edit
        # XXX reformat $attr as needed for _install_method
        my ($caller_pkg, $filename, $line) = caller;
--- 1211,1224 ----
        # to install new methods into the DBI dispatcher
        # DBD::Foo::db->install_method("foo_mumble", { usage => [...], options => 
'...' });
        my ($class, $method, $attr) = @_;
!       Carp::croak("Class '$class' must begin with DBD:: and end with ::db or ::st")
            unless $class =~ /^DBD::(\w+)::(dr|db|st)$/;
        my ($driver, $subtype) = ($1, $2);
!       Carp::croak("invalid method name '$method'")
            unless $method =~ m/^([a-z]+_)\w+$/;
        my $prefix = $1;
        my $reg_info = $dbd_prefix_registry->{$prefix};
!       Carp::croak("method name prefix '$prefix' is not registered") unless $reg_info;
        my %attr = %{$attr||{}}; # copy so we can edit
        # XXX reformat $attr as needed for _install_method
        my ($caller_pkg, $filename, $line) = caller;
***************
*** 1238,1249 ****
        my ($drh, $user, $pass, $attr) = @_;
        unless (defined $user) {
            $user = $ENV{DBI_USER};
!           carp("DBI connect: user not defined and DBI_USER env var not set")
                if 0 && !defined $user && $drh->{Warn}; # XXX enable later
        }
        unless (defined $pass) {
            $pass = $ENV{DBI_PASS};
!           carp("DBI connect: password not defined and DBI_PASS env var not set")
                if 0 && !defined $pass && $drh->{Warn}; # XXX enable later
        }
        return ($user, $pass);
--- 1237,1248 ----
        my ($drh, $user, $pass, $attr) = @_;
        unless (defined $user) {
            $user = $ENV{DBI_USER};
!           Carp::carp("DBI connect: user not defined and DBI_USER env var not set")
                if 0 && !defined $user && $drh->{Warn}; # XXX enable later
        }
        unless (defined $pass) {
            $pass = $ENV{DBI_PASS};
!           Carp::carp("DBI connect: password not defined and DBI_PASS env var not 
set")
                if 0 && !defined $pass && $drh->{Warn}; # XXX enable later
        }
        return ($user, $pass);
***************
*** 1493,1499 ****
        my $sth = $dbh->primary_key_info(@args) or return;
        my ($row, @col);
        push @col, $row->[3] while ($row = $sth->fetch);
!       croak("primary_key method not called in list context")
                unless wantarray; # leave us some elbow room
        return @col;
      }
--- 1492,1498 ----
        my $sth = $dbh->primary_key_info(@args) or return;
        my ($row, @col);
        push @col, $row->[3] while ($row = $sth->fetch);
!       Carp::croak("primary_key method not called in list context")
                unless wantarray; # leave us some elbow room
        return @col;
      }

Reply via email to