add missing file
Rafael Kitover [Thu, 30 Jul 2009 16:57:22 +0000 (16:57 +0000)]
lib/DBIx/Class/Storage/DBI.pm
lib/DBIx/Class/Storage/DBI/MSSQL.pm
lib/DBIx/Class/Storage/DBI/Sybase/Base.pm
t/lib/DBICTest/Schema/ArtistGUID.pm [new file with mode: 0644]

index db51e01..f975986 100644 (file)
@@ -1144,6 +1144,7 @@ sub _execute {
 sub insert {
   my ($self, $source, $to_insert) = @_;
 
+# redispatch to insert method of storage we reblessed into, if necessary
   if (not $self->_driver_determined) {
     $self->_determine_driver;
     goto $self->can('insert');
index 37733f6..8d58a40 100644 (file)
@@ -41,6 +41,8 @@ sub insert_bulk {
   }
 }
 
+# support MSSQL GUID column types
+
 sub insert {
   my $self = shift;
   my ($source, $to_insert) = @_;
@@ -127,9 +129,10 @@ sub _fetch_identity {
   my ($identity) = $sth->fetchrow_array;
   $sth->finish;
 
-  if ((not defined $identity) && $self->_identity_method &&
-        $self->_identity_method eq '@@identity') {
-    ($identity) = $self->_dbh->selectrow_array('select @@identity');
+  if ((not defined $identity) && $self->_identity_method) 
+    ($identity) = $self->_dbh->selectrow_array(
+      'select ' . $self->_identity_method
+    );
   }
 
   return $identity;
index af2a98f..5a98813 100644 (file)
@@ -35,6 +35,7 @@ sub _placeholders_supported {
 # There's also $dbh->{syb_dynamic_supported} but it can be inaccurate for this
 # purpose.
     local $dbh->{PrintError} = 0;
+    local $dbh->{RaiseError} = 1;
 # this specifically tests a bind that is NOT a string
     $dbh->selectrow_array('select 1 where 1 = ?', {}, 1);
   };
diff --git a/t/lib/DBICTest/Schema/ArtistGUID.pm b/t/lib/DBICTest/Schema/ArtistGUID.pm
new file mode 100644 (file)
index 0000000..cad8965
--- /dev/null
@@ -0,0 +1,35 @@
+package # hide from PAUSE 
+    DBICTest::Schema::ArtistGUID;
+
+use base qw/DBICTest::BaseResult/;
+
+# test MSSQL uniqueidentifier type
+
+__PACKAGE__->table('artist');
+__PACKAGE__->add_columns(
+  'artistid' => {
+    data_type => 'uniqueidentifier' # auto_nextval not necessary for PK
+  },
+  'name' => {
+    data_type => 'varchar',
+    size      => 100,
+    is_nullable => 1,
+  },
+  rank => {
+    data_type => 'integer',
+    default_value => 13,
+  },
+  charfield => {
+    data_type => 'char',
+    size => 10,
+    is_nullable => 1,
+  },
+  a_guid => {
+    data_type => 'uniqueidentifier',
+    auto_nextval => 1, # necessary here, because not a PK
+    is_nullable => 1,
+  }
+);
+__PACKAGE__->set_primary_key('artistid');
+
+1;