The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- cperl -*-
# Test problem in 3.0002_4 and 3.0005 where if a statement is prepared
# and multiple executes are performed, if any execute fails all subsequent
# executes report an error but may have worked.

use strict;
use DBI ();

use vars qw($test_dsn $test_user $test_password $state);
require "t/lib.pl";

while (Testing()) {
  my ($dbh, $sth);
  #
  # Connect to the database
  Test($state or
       ($dbh = DBI->connect("$test_dsn;mysql_server_prepare=1", $test_user, $test_password,
                           {RaiseError => 0})));

  #
  # execute invalid SQL to make sure we get an error
  #
  my $q = "select select select";	# invalid SQL
  $dbh->{PrintError} = 0;
  $dbh->{PrintWarn} = 0;
  eval {$sth = $dbh->prepare($q);};
  $dbh->{PrintError} = 1;
  $dbh->{PrintWarn} = 1;
  Test($state or (defined($DBI::errstr) && ($DBI::errstr ne "")));
  #print STDERR $DBI::errstr;
  #
  # Close the database connection
  Test($state or ($dbh->disconnect() or 1));
}