1
# Copyright (C) 2008-2009 Sun Microsystems, Inc. All rights reserved.
2
# Use is subject to license terms.
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; version 2 of the License.
8
# This program is distributed in the hope that it will be useful, but
9
# WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
# General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
18
package GenTest::Validator::Falcon;
21
@ISA = qw(GenTest::Validator GenTest);
27
use GenTest::Constants;
29
use GenTest::Validator;
34
my ($validator, $executors) = @_;
37
# We could use the DBI connection already established by the Executor, however this will mean that
38
# the Validator SELECT statements will be interleaved with the other statements issued by the Executor.
39
# If we have transactions, SELECT-ing over entire tables will certainly change the behavoir of the transaction
42
my $dsn = $executors->[0]->dsn();
43
my $dbh = DBI->connect($dsn, undef, undef, { RaiseError => 1 });
44
$validator->setDbh($dbh);
46
$dbh->do("SET AUTOCOMMIT=ON");
54
my ($validator, $executors) = @_;
56
my $dbh = $validator->dbh();
57
my $executor = $executors->[0];
59
my $tables = $executor->tables();
60
foreach my $table (@$tables) {
61
my $sth = $dbh->prepare("
62
SELECT pk, COUNT(*) AS C
68
my $rows = $sth->rows();
73
say("Table $table contains duplicate primary keys.");
74
return STATUS_DATABASE_CORRUPTION;