From: Brandon L. Black Date: Tue, 6 Jun 2006 12:30:40 +0000 (+0000) Subject: POD clarification and content bugfixing + a few code formatting fixes X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=bb4f246d1d055d463f175245a86e6e68f251ad5f;p=dbsrgits%2FDBIx-Class-Historic.git POD clarification and content bugfixing + a few code formatting fixes --- diff --git a/lib/DBIx/Class/Storage/DBI.pm b/lib/DBIx/Class/Storage/DBI.pm index b7f1198..3eafc75 100644 --- a/lib/DBIx/Class/Storage/DBI.pm +++ b/lib/DBIx/Class/Storage/DBI.pm @@ -203,10 +203,6 @@ sub _RowNum { $self->SUPER::_RowNum(@_); } -# Accessor for setting limit dialect. This is useful -# for JDBC-bridge among others where the remote SQL-dialect cannot -# be determined by the name of the driver alone. -# sub limit_dialect { my $self = shift; $self->{limit_dialect} = shift if @_; @@ -286,44 +282,47 @@ This class represents the connection to the database =head2 connect_info -Connection information arrayref. Can either be the same arguments -one would pass to DBI->connect, or a code-reference which returns -a connected database handle. In either case, there is an optional -final element in the arrayref, which can hold a hashref of -connection-specific Storage::DBI options. These include -C, and the sql_maker options C, -C, and C. Examples: +The arguments of C are always a single array reference. - ->connect_info([ 'dbi:SQLite:./foo.db' ]); - ->connect_info(sub { DBI->connect(...) }); - ->connect_info([ 'dbi:Pg:dbname=foo', - 'postgres', - '', - { AutoCommit => 0 }, - { quote_char => q{`}, name_sep => q{@} }, - ]); +This is normally accessed via L, which +encapsulates its argument list in an arrayref before calling +C here. -=head2 on_connect_do +The arrayref can either contain the same set of arguments one would +normally pass to L, or a lone code reference which returns +a connected database handle. -Executes the sql statements given as a listref on every db connect. +In either case, there is an optional final element within the arrayref +which can hold a hashref of connection-specific Storage::DBI options. +These include C, and the sql_maker options +C, C, and C. Examples: -=head2 quote_char + ->connect_info([ 'dbi:SQLite:./foo.db' ]); -Specifies what characters to use to quote table and column names. If -you use this you will want to specify L as well. + ->connect_info([ sub { DBI->connect(...) } ]); -quote_char expectes either a single character, in which case is it is placed -on either side of the table/column, or an array of length 2 in which case the -table/column name is placed between the elements. + ->connect_info( + [ + 'dbi:Pg:dbname=foo', + 'postgres', + 'my_pg_password', + { AutoCommit => 0 }, + { quote_char => q{`}, name_sep => q{@} }, + ] + ); -For example under MySQL you'd use C, and user SQL Server you'd -use C. + ->connect_info( + [ + sub { DBI->connect(...) }, + { quote_char => q{`}, name_sep => q{@} }, + ] + ); -=head2 name_sep +=head2 on_connect_do -This only needs to be used in conjunction with L, and is used to -specify the charecter that seperates elements (schemas, tables, columns) from -each other. In most cases this is simply a C<.>. +Executes the sql statements given as a listref on every db connect. + +This option can also be set via L. =head2 debug @@ -464,34 +463,34 @@ sub sql_maker { } sub connect_info { - my ($self, $info_arg) = @_; - - if($info_arg) { - my $info = [ @$info_arg ]; # copy because we can alter it - my $last_info = $info->[-1]; - if(ref $last_info eq 'HASH') { - my $used; - if(my $on_connect_do = $last_info->{on_connect_do}) { - $used = 1; - $self->on_connect_do($on_connect_do); - } - for my $sql_maker_opt (qw/limit_dialect quote_char name_sep/) { - if(my $opt_val = $last_info->{$sql_maker_opt}) { - $used = 1; - $self->sql_maker->$sql_maker_opt($opt_val); - } - } - - # remove our options hashref if it was there, to avoid confusing - # DBI in the case the user didn't use all 4 DBI options, as in: - # [ 'dbi:SQLite:foo.db', { quote_char => q{`} } ] - pop(@$info) if $used; + my ($self, $info_arg) = @_; + + if($info_arg) { + my $info = [ @$info_arg ]; # copy because we can alter it + my $last_info = $info->[-1]; + if(ref $last_info eq 'HASH') { + my $used; + if(my $on_connect_do = $last_info->{on_connect_do}) { + $used = 1; + $self->on_connect_do($on_connect_do); + } + for my $sql_maker_opt (qw/limit_dialect quote_char name_sep/) { + if(my $opt_val = $last_info->{$sql_maker_opt}) { + $used = 1; + $self->sql_maker->$sql_maker_opt($opt_val); } + } - $self->_connect_info($info); + # remove our options hashref if it was there, to avoid confusing + # DBI in the case the user didn't use all 4 DBI options, as in: + # [ 'dbi:SQLite:foo.db', { quote_char => q{`} } ] + pop(@$info) if $used; } - $self->_connect_info; + $self->_connect_info($info); + } + + $self->_connect_info; } sub _populate_dbh { @@ -529,12 +528,9 @@ sub _connect { } eval { - if(ref $info[0] eq 'CODE') { - $dbh = &{$info[0]}; - } - else { - $dbh = DBI->connect(@info); - } + $dbh = ref $info[0] eq 'CODE' + ? &{$info[0]} + : DBI->connect(@info); }; $DBI::connect_via = $old_connect_via if $old_connect_via; @@ -1028,10 +1024,34 @@ The following methods are extended:- =item limit_dialect +Accessor for setting limit dialect. This is useful +for JDBC-bridge among others where the remote SQL-dialect cannot +be determined by the name of the driver alone. + +This option can also be set via L. + =item quote_char +Specifies what characters to use to quote table and column names. If +you use this you will want to specify L as well. + +quote_char expectes either a single character, in which case is it is placed +on either side of the table/column, or an arrayref of length 2 in which case the +table/column name is placed between the elements. + +For example under MySQL you'd use C, and user SQL Server you'd +use C. + +This option can also be set via L. + =item name_sep +This only needs to be used in conjunction with L, and is used to +specify the charecter that seperates elements (schemas, tables, columns) from +each other. In most cases this is simply a C<.>. + +This option can also be set via L. + =back =head1 ENVIRONMENT VARIABLES