[Bast-commits] r4142 -
DBIx-Class/0.08/branches/storage-ms-access/lib/DBIx/Class/Storage/DBI/ODBC
oyse at dev.catalyst.perl.org
oyse at dev.catalyst.perl.org
Thu Mar 6 11:32:12 GMT 2008
Author: oyse
Date: 2008-03-06 11:32:12 +0000 (Thu, 06 Mar 2008)
New Revision: 4142
Modified:
DBIx-Class/0.08/branches/storage-ms-access/lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm
Log:
Added the function bind_attributes_by_data_type to cope with the 'Invalid precision value' bug on MEMO columns.
Added documentation for the 'Invalid precision value' bug.
Modified: DBIx-Class/0.08/branches/storage-ms-access/lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm
===================================================================
--- DBIx-Class/0.08/branches/storage-ms-access/lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm 2008-03-06 01:00:41 UTC (rev 4141)
+++ DBIx-Class/0.08/branches/storage-ms-access/lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm 2008-03-06 11:32:12 UTC (rev 4142)
@@ -4,6 +4,7 @@
use Data::Dump qw( dump );
+use DBI;
use base qw/DBIx::Class::Storage::DBI/;
my $ERR_MSG_START = __PACKAGE__ . ' failed: ';
@@ -37,6 +38,16 @@
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;
@@ -54,8 +65,7 @@
=head1 DESCRIPTION
-This class implements support specific to Microsoft Access over ODBC. It currently only
-implements functions necessary for working with auto-incremented primary keys.
+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.
@@ -74,8 +84,25 @@
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_attributes_by_data_type
+
+This function currently supports the SQL_LONGVARCHAR column type.
+
=head2 insert
=head2 last_insert_id
@@ -98,7 +125,5 @@
http://www.dnv.com
-
-
=cut
More information about the Bast-commits
mailing list