throw exception on attempt to insert a blob with DBD::Oracle == 1.23
Rafael Kitover [Mon, 1 Feb 2010 11:07:13 +0000 (11:07 +0000)]
lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm
t/73oracle.t

index 55cad0e..512fff8 100644 (file)
@@ -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()
index 4b51e62..50c519f 100644 (file)
@@ -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++;