spelling fixes in the documaentation, sholud be gud now ;)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / ODBC / ACCESS.pm
index 9f08a3f..625498a 100644 (file)
-package DBIx::Class::Storage::DBI::ODBC::ACCESS;\r
-use strict;\r
-use warnings;\r
-\r
-use Data::Dump qw( dump );\r
-\r
-use DBI;\r
-use base qw/DBIx::Class::Storage::DBI/;\r
-\r
-my $ERR_MSG_START = __PACKAGE__ . ' failed: ';\r
-\r
-sub insert {\r
-    my $self = shift;\r
-    my ( $source, $to_insert ) = @_;\r
-\r
-    my $bind_attributes = $self->source_bind_attributes( $source );\r
-    my ( undef, $sth ) = $self->_execute( 'insert' => [], $source, $bind_attributes, $to_insert );\r
-\r
-    #store the identity here since @@IDENTITY is connection global and this prevents\r
-    #possibility that another insert to a different table overwrites it for this resultsource\r
-    my $identity = 'SELECT @@IDENTITY';\r
-    my $max_sth  = $self->{ _dbh }->prepare( $identity )\r
-        or $self->throw_exception( $ERR_MSG_START . $self->{ _dbh }->errstr() );\r
-    $max_sth->execute() or $self->throw_exception( $ERR_MSG_START . $max_sth->errstr );\r
-\r
-    my $row = $max_sth->fetchrow_arrayref()\r
-        or $self->throw_exception( $ERR_MSG_START . "$identity did not return any result." );\r
-\r
-    $self->{ last_pk }->{ $source->name() } = $row;\r
-\r
-    return $to_insert;\r
-}\r
-\r
-sub last_insert_id {\r
-    my $self = shift;\r
-    my ( $result_source ) = @_;\r
-\r
-    return @{ $self->{ last_pk }->{ $result_source->name() } };\r
-}\r
-\r
-sub bind_attribute_by_data_type {\r
-    my $self = shift;\r
-    \r
-    my ( $data_type ) = @_;\r
-    \r
-    return { TYPE => $data_type } if $data_type == DBI::SQL_LONGVARCHAR;\r
-    \r
-    return;\r
-}\r
-\r
-sub sqlt_type { 'ACCESS' }\r
-\r
-1;\r
-\r
-=head1 NAME\r
-\r
-DBIx::Class::Storage::ODBC::ACCESS - Support specific to MS Access over ODBC\r
-\r
-=head1 WARNING\r
-\r
-I am not a DBI, DBIx::Class or MS Access guru. Use this module with that in\r
-mind.\r
-\r
-This module is currently considered alpha software and can change without notice.\r
-\r
-=head1 DESCRIPTION\r
-\r
-This class implements support specific to Microsoft Access over ODBC.\r
-\r
-It is loaded automatically by by DBIx::Class::Storage::DBI::ODBC when it\r
-detects a MS Access back-end.\r
-\r
-=head1 SUPPORTED VERSIONS\r
-\r
-This module have currently only been tested on MS Access 2003 using the Jet 4.0 engine.\r
-\r
-As far as my knowledge it should work on MS Access 2000 or later, but that have not been tested.\r
-Information about support for different version of MS Access is welcome.\r
-\r
-=head1 IMPLEMENTATION NOTES\r
-\r
-MS Access supports the @@IDENTITY function for retriving the id of the latest inserted row.\r
-@@IDENTITY is global to the connection, so to support the possibility of getting the last inserted\r
-id for different tables, the insert() function stores the inserted id on a per table basis.\r
-last_insert_id() then just returns the stored value.\r
-\r
-=head1 KNOWN ACCESS PROBLEMS\r
-\r
-=over\r
-\r
-=item Invalid precision value\r
-\r
-This error message is received when trying to store more than 255 characters in a MEMO field.\r
-The problem is (to my knowledge) an error in the MS Access ODBC driver. The problem is fixed\r
-by setting the C<data_type> of the column to C<SQL_LONGVARCHAR> in C<add_columns>. \r
-C<SQL_LONGVARCHAR> is a constant in the C<DBI> module.\r
-\r
-=back\r
-\r
-=head1 IMPLEMENTED FUNCTIONS\r
-\r
-=head2 bind_attributes_by_data_type\r
-\r
-This function currently supports the SQL_LONGVARCHAR column type.\r
-\r
-=head2 insert\r
-\r
-=head2 last_insert_id\r
-\r
-=head2 sqlt_type\r
-\r
-=head1 BUGS\r
-\r
-Most likely. Bug reports are welcome.\r
-\r
-=head1 AUTHORS\r
-\r
-Øystein Torget C<< <oystein.torget@dnv.com> >>\r
-\r
-=head1 COPYRIGHT\r
-\r
-You may distribute this code under the same terms as Perl itself.\r
-\r
-Det Norske Veritas AS (DNV)\r
-\r
-http://www.dnv.com\r
-\r
-=cut\r
-\r
+package DBIx::Class::Storage::DBI::ODBC::ACCESS;
+use strict;
+use warnings;
+
+use base qw/DBIx::Class::Storage::DBI/;
+use mro 'c3';
+
+use DBI;
+
+my $ERR_MSG_START = __PACKAGE__ . ' failed: ';
+
+sub insert {
+    my $self = shift;
+    my ( $source, $to_insert ) = @_;
+
+    my $bind_attributes = $self->source_bind_attributes( $source );
+    my ( undef, $sth ) = $self->_execute( 'insert' => [], $source, $bind_attributes, $to_insert );
+
+    #store the identity here since @@IDENTITY is connection global and this prevents
+    #possibility that another insert to a different table overwrites it for this resultsource
+    my $identity = 'SELECT @@IDENTITY';
+    my $max_sth  = $self->{ _dbh }->prepare( $identity )
+        or $self->throw_exception( $ERR_MSG_START . $self->{ _dbh }->errstr() );
+    $max_sth->execute() or $self->throw_exception( $ERR_MSG_START . $max_sth->errstr );
+
+    my $row = $max_sth->fetchrow_arrayref()
+        or $self->throw_exception( $ERR_MSG_START . "$identity did not return any result." );
+
+    $self->{ last_pk }->{ $source->name() } = $row;
+
+    return $to_insert;
+}
+
+sub last_insert_id {
+    my $self = shift;
+    my ( $result_source ) = @_;
+
+    return @{ $self->{ last_pk }->{ $result_source->name() } };
+}
+
+sub bind_attribute_by_data_type {
+    my $self = shift;
+
+    my ( $data_type ) = @_;
+
+    return { TYPE => $data_type } if $data_type == DBI::SQL_LONGVARCHAR;
+
+    return;
+}
+
+sub sqlt_type { 'ACCESS' }
+
+1;
+
+=head1 NAME
+
+DBIx::Class::Storage::DBI::ODBC::ACCESS - Support specific to MS Access over ODBC
+
+=head1 WARNING
+
+I am not a DBI, DBIx::Class or MS Access guru. Use this module with that in
+mind.
+
+This module is currently considered alpha software and can change without notice.
+
+=head1 DESCRIPTION
+
+This class implements support specific to Microsoft Access over ODBC.
+
+It is loaded automatically by by DBIx::Class::Storage::DBI::ODBC when it
+detects a MS Access back-end.
+
+=head1 SUPPORTED VERSIONS
+
+This module have currently only been tested on MS Access 2003 using the Jet 4.0 engine.
+
+As far as my knowledge it should work on MS Access 2000 or later, but that have not been tested.
+Information about support for different version of MS Access is welcome.
+
+=head1 IMPLEMENTATION NOTES
+
+MS Access supports the @@IDENTITY function for retrieving the id of the latest inserted row.
+@@IDENTITY is global to the connection, so to support the possibility of getting the last inserted
+id for different tables, the insert() function stores the inserted id on a per table basis.
+last_insert_id() then just returns the stored value.
+
+=head1 KNOWN ACCESS PROBLEMS
+
+=over
+
+=item Invalid precision value
+
+This error message is received when trying to store more than 255 characters in a MEMO field.
+The problem is (to my knowledge) an error in the MS Access ODBC driver. The problem is fixed
+by setting the C<data_type> of the column to C<SQL_LONGVARCHAR> in C<add_columns>. 
+C<SQL_LONGVARCHAR> is a constant in the C<DBI> module.
+
+=back
+
+=head1 IMPLEMENTED FUNCTIONS
+
+=head2 bind_attribute_by_data_type
+
+This function currently supports the SQL_LONGVARCHAR column type.
+
+=head2 insert
+
+=head2 last_insert_id
+
+=head2 sqlt_type
+
+=head1 BUGS
+
+Most likely. Bug reports are welcome.
+
+=head1 AUTHORS
+
+Øystein Torget C<< <oystein.torget@dnv.com> >>
+
+=head1 COPYRIGHT
+
+You may distribute this code under the same terms as Perl itself.
+
+Det Norske Veritas AS (DNV)
+
+http://www.dnv.com
+
+=cut
+