}
}
+sub _sth_bind_param {
+ my ($self, $sth, $placeholder_index, $data, $attributes) = @_;
+
+ $sth->bind_param($placeholder_index, $data, $attributes);
+}
+
sub _dbh_execute {
my ($self, $dbh, $op, $extra_bind, $ident, $bind_attributes, @args) = @_;
my $ref = ref $data;
$data = $ref && $ref ne 'ARRAY' ? ''.$data : $data; # stringify args (except arrayrefs)
- $sth->bind_param($placeholder_index, $data, $attributes);
+ $self->_sth_bind_param($sth, $placeholder_index, $data, $attributes);
$placeholder_index++;
}
}
$self->_identity_method('@@identity');
}
+sub _sth_bind_param {
+ my ($self, $sth, $placeholder_index, $data, $attributes, @extra) = @_;
+
+ $attributes->{ado_size} = 8000; # max VARCHAR on MSSQL
+
+ $self->next::method($sth, $placeholder_index, $data, $attributes, @extra);
+}
+
1;
=head1 NAME
plan skip_all => 'Set $ENV{DBICTEST_MSSQL_ADO_DSN}, _USER and _PASS to run this test'
unless ($dsn && $user);
-plan tests => 12;
-
my $schema = DBICTest::Schema->connect($dsn, $user, $pass);
$schema->storage->ensure_connected;
is $found->get_column('foo_50'), 'foo', 'last item in big column list';
# create a few more rows
-for (1..6) {
+for (1..12) {
$schema->resultset('Artist')->create({ name => 'Artist ' . $_ });
}
ok eval { $rs2->next }, 'multiple active cursors';
}
+# test bug where ADO blows up if the first bindparam is shorter than the second
+is $schema->resultset('Artist')->search({ artistid => 2 })->first->name,
+ 'Artist 1',
+ 'short bindparam';
+
+is $schema->resultset('Artist')->search({ artistid => 13 })->first->name,
+ 'Artist 12',
+ 'longer bindparam';
+
+done_testing;
+
# clean up our mess
END {
if (my $dbh = eval { $schema->storage->_dbh }) {