From: Rafael Kitover Date: Mon, 1 Feb 2010 11:07:13 +0000 (+0000) Subject: throw exception on attempt to insert a blob with DBD::Oracle == 1.23 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=931e5d43f128bac7f4fabf4c64cd5569c8bfbfda;p=dbsrgits%2FDBIx-Class-Historic.git throw exception on attempt to insert a blob with DBD::Oracle == 1.23 --- diff --git a/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm b/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm index 55cad0e..512fff8 100644 --- a/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm +++ b/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm @@ -252,6 +252,13 @@ sub source_bind_attributes my %column_bind_attrs = $self->bind_attribute_by_data_type($data_type); if ($data_type =~ /^[BC]LOB$/i) { + if ($DBD::Oracle::VERSION eq '1.23') { + $self->throw_exception( +"BLOB/CLOB support in DBD::Oracle == 1.23 is broken, use an earlier or later ". +"version" + ); + } + $column_bind_attrs{'ora_type'} = uc($data_type) eq 'CLOB' ? DBD::Oracle::ORA_CLOB() : DBD::Oracle::ORA_BLOB() diff --git a/t/73oracle.t b/t/73oracle.t index 4b51e62..50c519f 100644 --- a/t/73oracle.t +++ b/t/73oracle.t @@ -229,9 +229,6 @@ my $st = $schema->resultset('SequenceTest')->create({ name => 'foo', pkid1 => 55 is($st->pkid1, 55, "Oracle Auto-PK without trigger: First primary key set manually"); SKIP: { - skip 'buggy BLOB support in DBD::Oracle 1.23', 8 - if $DBD::Oracle::VERSION == 1.23; - my %binstr = ( 'small' => join('', map { chr($_) } ( 1 .. 127 )) ); $binstr{'large'} = $binstr{'small'} x 1024; @@ -242,6 +239,14 @@ SKIP: { my $rs = $schema->resultset('BindType'); my $id = 0; + if ($DBD::Oracle::VERSION eq '1.23') { + throws_ok { $rs->create({ id => 1, blob => $binstr{large} }) } + qr/broken/, + 'throws on blob insert with DBD::Oracle == 1.23'; + + skip 'buggy BLOB support in DBD::Oracle 1.23', 7; + } + foreach my $type (qw( blob clob )) { foreach my $size (qw( small large )) { $id++;