X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FSybase.pm;h=5747cb948ddcfcac8d1dfa9dfeb1051fc744b66a;hb=587daa97726631a2a5edc95ea6bfe62bf340bd8d;hp=fe383596feaac32866df8d35f01fea10b28b237e;hpb=f0070d01c1ebc3895551ff52580c544e180e7bcf;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Sybase.pm b/lib/DBIx/Class/Storage/DBI/Sybase.pm index fe38359..5747cb9 100644 --- a/lib/DBIx/Class/Storage/DBI/Sybase.pm +++ b/lib/DBIx/Class/Storage/DBI/Sybase.pm @@ -3,16 +3,64 @@ package DBIx::Class::Storage::DBI::Sybase; use strict; use warnings; -use base qw/DBIx::Class::Storage::DBI/; - +use base qw/ + DBIx::Class::Storage::DBI::Sybase::Common + DBIx::Class::Storage::DBI::AutoCast +/; +use mro 'c3'; use Carp::Clan qw/^DBIx::Class/; +use List::Util (); +use Sub::Name (); + +__PACKAGE__->mk_group_accessors('simple' => + qw/_identity _blob_log_on_update _writer_storage _is_extra_storage + _bulk_storage _is_bulk_storage _began_bulk_work + _bulk_disabled_due_to_coderef_connect_info_warned + _identity_method/ +); + +my @also_proxy_to_extra_storages = qw/ + connect_call_set_auto_cast auto_cast connect_call_blob_setup + connect_call_datetime_setup + + disconnect _connect_info _sql_maker _sql_maker_opts disable_sth_caching + auto_savepoint unsafe cursor_class debug debugobj schema +/; + +=head1 NAME + +DBIx::Class::Storage::DBI::Sybase - Sybase support for DBIx::Class + +=head1 SYNOPSIS + +This subclass supports L for real Sybase databases. If you are +using an MSSQL database via L, your storage will be reblessed to +L. + +=head1 DESCRIPTION + +If your version of Sybase does not support placeholders, then your storage +will be reblessed to L. You can +also enable that driver explicitly, see the documentation for more details. + +With this driver there is unfortunately no way to get the C +without doing a C, which is the only way to get the C value in this +mode. + +In addition, they are done on a separate connection so that it's possible to +have active cursors when doing an insert. + +When using C transactions are +disabled, as there are no concurrency issues with C. +=over 4 -But your queries will be cached. +=item * use L + +=item * L another L + +=item * load the data from your cursor with L + +=back + +=head1 MAXIMUM CONNECTIONS + +The TDS protocol makes separate connections to the server for active statements +in the background. By default the number of such connections is limited to 25, +on both the client side and the server side. + +This is a bit too low for a complex L application, so on connection +the client side setting is set to C<256> (see L.) You +can override it to whatever setting you like in the DSN. + +See +L +for information on changing the setting on the server side. =head1 DATES -On connection C is set to C, e.g.: -C<2004-08-21T14:36:48.080Z> and C is set to C, e.g.: -C<08/13/1979>. +See L to setup date formats +for L. + +=head1 TEXT/IMAGE COLUMNS + +L compiled with FreeTDS will B allow you to insert or update +C columns. + +Setting C<< $dbh->{LongReadLen} >> will also not work with FreeTDS use either: -You will need the L module if you are going to use -L. + $schema->storage->dbh->do("SET TEXTSIZE $bytes"); + +or + + $schema->storage->set_textsize($bytes); + +instead. + +However, the C you pass in +L is used to execute the equivalent +C command on connection. + +See L for a L +setting you need to work with C columns. + +=head1 BULK API + +The experimental L Bulk API support is used for +L in B context, in a transaction +on a separate connection. + +To use this feature effectively, use a large number of rows for each +L call, eg.: + + while (my $rows = $data_source->get_100_rows()) { + $rs->populate($rows); + } -=head1 AUTHORS +B the L +calls in your C classes B list columns in database order for this +to work. Also, you may have to unset the C environment variable before +loading your app, if it doesn't match the character set of your database. -Brandon L Black +When inserting IMAGE columns using this method, you'll need to use +L as well. -Justin Hunter +=head1 AUTHOR -Rafael Kitover +See L. =head1 LICENSE