improvements for MSSQL driver via DBD::ADO
authorRafael Kitover <rkitover@cpan.org>
Sun, 18 Mar 2012 06:33:54 +0000 (02:33 -0400)
committerRafael Kitover <rkitover@cpan.org>
Tue, 3 Apr 2012 13:17:59 +0000 (09:17 -0400)
commit2edf33525bc7be0824693925c528791d84db98aa
treeadc14a21ba3aae722e4f2a5d94f743848c11a8d8
parent41c4215a6e27763b16dfbb56fd965914c3ee4c2c
improvements for MSSQL driver via DBD::ADO

Various improvements and bug fixes:

 - Fix transaction support by changing CursorLocation on connection to
   adUseClient.

 - Support for VARCHAR(MAX)/VARBINARY(MAX)/NVARCHAR(MAX), add a catch
   for size => 'max' in _dbi_attrs_for_bind to set the ado_size workaround
   to LongReadLen, add a mapping to the data_type for literal
   'varchar(max)' entries as well. Tests for these types have been added
   as well.

 - Set $dbh->{LongReadLen} * 2 + 1 on connection, necessary for some LOB
   types.

 - Remove trailing null padding from BINARY/VARBINARY/IMAGE data via a
   custom Cursor class.

 - uniqueidentifier brace removal from data returned from ADO via Cursor
   class and re-addition via _dbi_attrs_for_bind and insert_bulk
   override for data sent to ADO.

 - Add type mappings for some missing MSSQL types and the types from other
   databases for cross-deployment.

 - Full set of tests, stolen from the MS Access tests, for savepoints,
   LOB support and GUIDs.

The trailing null padding and GUID brace removal is in utilities in
::DBI::ADO::CursorUtils which both ::DBI::ADO::MS_Jet (Access) and this
driver use, in their respective Cursor classes and in the drivers
themselves in select_single.
Changes
lib/DBIx/Class/Storage/DBI/ADO/CursorUtils.pm [new file with mode: 0644]
lib/DBIx/Class/Storage/DBI/ADO/MS_Jet.pm
lib/DBIx/Class/Storage/DBI/ADO/MS_Jet/Cursor.pm
lib/DBIx/Class/Storage/DBI/ADO/Microsoft_SQL_Server.pm
lib/DBIx/Class/Storage/DBI/ADO/Microsoft_SQL_Server/Cursor.pm [new file with mode: 0644]
lib/DBIx/Class/Storage/DBI/UniqueIdentifier.pm
t/747mssql_ado.t
t/lib/DBICTest/Schema/VaryingMAX.pm [new file with mode: 0644]