File Coverage

blib/lib/Rose/DB/Registry/Entry.pm
Criterion Covered Total %
statement 55 56 98.2
branch 22 24 91.6
condition 4 6 66.6
subroutine 14 15 93.3
pod 7 8 87.5
total 102 109 93.5


line stmt bran cond sub pod time code
1             package Rose::DB::Registry::Entry;
2              
3 16     16   119 use strict;
  16         45  
  16         456  
4              
5 16     16   94 use Clone::PP();
  16         33  
  16         231  
6              
7 16     16   68 use Rose::Object;
  16         46  
  16         4960  
8             our @ISA = qw(Rose::Object);
9              
10             our $VERSION = '0.784';
11              
12             our $Debug = 0;
13              
14             #
15             # Object data
16             #
17              
18             our %Attrs;
19              
20             BEGIN
21             {
22 16     16   7662 our %Attrs =
23             (
24             # Generic
25             catalog => { type => 'scalar' },
26             database => { type => 'scalar' },
27             dbi_driver => { type => 'scalar' },
28             description => { type => 'scalar' },
29             domain => { type => 'scalar' },
30             driver => { type => 'scalar', make_method => 0 },
31             dsn => { type => 'scalar' },
32             host => { type => 'scalar' },
33             password => { type => 'scalar' },
34             port => { type => 'scalar' },
35             schema => { type => 'scalar' },
36             server_time_zone => { type => 'scalar' },
37             type => { type => 'scalar' },
38             username => { type => 'scalar' },
39              
40             connect_options => { type => 'hash', method_spec => { interface => 'get_set_init' } },
41              
42             pre_disconnect_sql => { type => 'array' },
43             post_connect_sql => { type => 'array' },
44              
45             # Oracle
46             service => { type => 'scalar' },
47              
48             # Pg
49             european_dates => { type => 'boolean', method_spec => { default => 0 } },
50             pg_enable_utf8 => { type => 'boolean' },
51             options => { type => 'scalar' },
52             service => { type => 'scalar' },
53             sslmode => { type => 'scalar' },
54              
55             # SQLite
56             auto_create => { type => 'boolean', method_spec => { default => 1 } },
57             sqlite_unicode => { type => 'boolean' },
58              
59             # MySQL
60             mysql_auto_reconnect => { type => 'boolean' },
61             mysql_client_found_rows => { type => 'boolean' },
62             mysql_compression => { type => 'boolean' },
63             mysql_connect_timeout => { type => 'boolean' },
64             mysql_embedded_groups => { type => 'scalar' },
65             mysql_embedded_options => { type => 'scalar' },
66             mysql_enable_utf8 => { type => 'boolean' },
67             mysql_enable_utf8mb4 => { type => 'boolean' },
68             mysql_local_infile => { type => 'scalar' },
69             mysql_multi_statements => { type => 'boolean' },
70             mysql_read_default_file => { type => 'scalar' },
71             mysql_read_default_group => { type => 'scalar' },
72             mysql_socket => { type => 'scalar' },
73             mysql_ssl => { type => 'boolean' },
74             mysql_ssl_ca_file => { type => 'scalar' },
75             mysql_ssl_ca_path => { type => 'scalar' },
76             mysql_ssl_cipher => { type => 'scalar' },
77             mysql_ssl_client_cert => { type => 'scalar' },
78             mysql_ssl_client_key => { type => 'scalar' },
79             mysql_use_result => { type => 'boolean' },
80             mysql_bind_type_guessing => { type => 'boolean' },
81             );
82             }
83              
84             sub _attrs
85             {
86 252     252   1445 my(%args) = @_;
87              
88 252         389 my $type = $args{'type'};
89              
90             # Type filter first
91             my @attrs =
92 252 50       1569 $type ? (grep { $Attrs{$_}{'type'} eq $type } keys(%Attrs)) : keys(%Attrs);
  11340         18271  
93              
94 252 100       953 if($args{'with_defaults'})
    100          
95             {
96             @attrs = grep
97             {
98 36         58 $Attrs{$_}{'method_spec'} &&
99 504 100       1012 defined $Attrs{$_}{'method_spec'}{'default'}
100             }
101             @attrs;
102             }
103             elsif($args{'no_defaults'})
104             {
105             @attrs = grep
106             {
107 36         73 !$Attrs{$_}{'method_spec'} ||
108 504   66     1110 !defined $Attrs{$_}{'method_spec'}{'default'}
109             }
110             @attrs;
111             }
112              
113 252 100       972 return wantarray ? @attrs : \@attrs;
114             }
115              
116             sub _attr_method_specs
117             {
118 64     64   147 my $attrs = _attrs(@_);
119              
120 64         120 my @specs;
121              
122 64         125 foreach my $attr (@$attrs)
123             {
124 720 100 66     1413 next if(exists $Attrs{$attr}{'make_method'} && !$Attrs{$attr}{'make_method'});
125              
126 704 100       1157 if(my $spec = $Attrs{$attr}{'method_spec'})
127             {
128 48         111 push(@specs, $attr => $spec);
129             }
130             else
131             {
132 656         1087 push(@specs, $attr);
133             }
134             }
135              
136 64 50       632 return wantarray ? @specs : \@specs;
137             }
138              
139             use Rose::Object::MakeMethods::Generic
140             (
141 16         77 'scalar' =>
142             [
143             _attr_method_specs(type => 'scalar'),
144             ],
145              
146             'boolean' =>
147             [
148             _attr_method_specs(type => 'boolean'),
149             ],
150              
151             'hash' =>
152             [
153             _attr_method_specs(type => 'hash'),
154             'connect_option' => { hash_key => 'connect_options' },
155             ],
156              
157             'array' =>
158             [
159             _attr_method_specs(type => 'array'),
160             ]
161 16     16   139 );
  16         46  
162              
163 28     28 0 220 sub init_connect_options { {} }
164              
165 4     4 1 2196 sub autocommit { shift->connect_option('AutoCommit', @_) }
166 4     4 1 4994 sub print_error { shift->connect_option('PrintError', @_) }
167 4     4 1 7921 sub raise_error { shift->connect_option('RaiseError', @_) }
168 4     4 1 2252 sub handle_error { shift->connect_option('HandleError', @_) }
169              
170             sub driver
171             {
172 714     714 1 9802 my($self) = shift;
173 714 100       2173 return $self->{'driver'} unless(@_);
174 226         559 $self->{'dbi_driver'} = shift;
175 226         878 return $self->{'driver'} = lc $self->{'dbi_driver'};
176             }
177              
178             sub dump
179             {
180 36     36 1 487 my($self) = shift;
181              
182 36         55 my %dump;
183              
184 36         69 foreach my $attr (_attrs(type => 'scalar'),
185             _attrs(type => 'boolean', no_defaults => 1))
186             {
187 1440         2852 my $value = $self->$attr();
188 1440 100       3734 next unless(defined $value);
189 346         632 $dump{$attr} = $value;
190             }
191              
192 36         114 foreach my $attr (_attrs(type => 'hash'), _attrs(type => 'array'))
193             {
194 108         1978 my $value = $self->$attr();
195 108 100       713 next unless(defined $value);
196 54         127 $dump{$attr} = Clone::PP::clone($value);
197             }
198              
199              
200             # These booleans have defaults, but we only want the ones
201             # where the values were explicitly set. Ugly...
202 36         434 foreach my $attr (_attrs(type => 'boolean', with_defaults => 1))
203             {
204 72         128 my $value = $self->{$attr};
205 72 100       170 next unless(defined $value);
206 4         10 $dump{$attr} = Clone::PP::clone($value);
207             }
208              
209 36         264 return \%dump;
210             }
211              
212 0     0 1   sub clone { Clone::PP::clone($_[0]) }
213              
214             1;
215              
216             __END__
217              
218             =head1 NAME
219              
220             Rose::DB::Registry::Entry - Data source registry entry.
221              
222             =head1 SYNOPSIS
223              
224             use Rose::DB::Registry::Entry;
225              
226             $entry = Rose::DB::Registry::Entry->new(
227             domain => 'production',
228             type => 'main',
229             driver => 'Pg',
230             database => 'big_db',
231             host => 'dbserver.acme.com',
232             username => 'dbadmin',
233             password => 'prodsecret',
234             server_time_zone => 'UTC');
235              
236             Rose::DB->register_db($entry);
237              
238             # ...or...
239              
240             Rose::DB->registry->add_entry($entry);
241              
242             ...
243              
244             =head1 DESCRIPTION
245              
246             C<Rose::DB::Registry::Entry> objects store information about a single L<Rose::DB> data source. See the L<Rose::DB> documentation for more information on data sources, and the L<Rose::DB::Registry> documentation to learn how C<Rose::DB::Registry::Entry> objects are managed.
247              
248             C<Rose::DB::Registry::Entry> inherits from, and follows the conventions of, L<Rose::Object>. See the L<Rose::Object> documentation for more information.
249              
250             =head1 CONSTRUCTOR
251              
252             =over 4
253              
254             =item B<new PARAMS>
255              
256             Constructs a C<Rose::DB::Registry::Entry> object based on PARAMS, where PARAMS are name/value pairs. Any object method is a valid parameter name.
257              
258             =back
259              
260             =head1 OBJECT METHODS
261              
262             =head2 GENERAL
263              
264             =over 4
265              
266             =item B<autocommit [VALUE]>
267              
268             Get or set the value of the "AutoCommit" connect option.
269              
270             =item B<catalog [CATALOG]>
271              
272             Get or set the database catalog name. This setting is only relevant to databases that support the concept of catalogs.
273              
274             =item B<clone>
275              
276             Returns a clone (i.e., deep copy) of the current object.
277              
278             =item B<connect_option NAME [, VALUE]>
279              
280             Get or set the connect option named NAME. Returns the current value of the connect option.
281              
282             =item B<connect_options [HASHREF | PAIRS]>
283              
284             Get or set the options passed in a hash reference as the fourth argument to the call to C<DBI-E<gt>connect()>. See the C<DBI> documentation for descriptions of the various options.
285              
286             If a reference to a hash is passed, it replaces the connect options hash. If a series of name/value pairs are passed, they are added to the connect options hash.
287              
288             Returns a reference to the hash of options in scalar context, or a list of name/value pairs in list context.
289              
290             =item B<database [NAME]>
291              
292             Get or set the database name.
293              
294             =item B<description [TEXT]>
295              
296             A description of the data source.
297              
298             =item B<domain [DOMAIN]>
299              
300             Get or set the data source domain. Note that changing the C<domain> after a registry entry has been added to the registry has no affect on where the entry appears in the registry.
301              
302             =item B<driver [DRIVER]>
303              
304             Get or set the driver name. The DRIVER argument is converted to lowercase before being set.
305              
306             =item B<dsn [DSN]>
307              
308             Get or set the C<DBI> DSN (Data Source Name). Note that an explicitly set DSN may render some other attributes inaccurate. For example, the DSN may contain a host name that is different than the object's current C<host()> value. I recommend not setting the DSN value explicitly unless you are also willing to manually synchronize (or ignore) the corresponding object attributes.
309              
310             =item B<dump>
311              
312             Returns a reference to a hash of the entry's attributes. Only those attributes with defined values are included in the hash keys. All values are deep copies.
313              
314             =item B<handle_error [VALUE]>
315              
316             Get or set the value of the "HandleError" connect option.
317              
318             =item B<host [NAME]>
319              
320             Get or set the database server host name.
321              
322             =item B<password [PASS]>
323              
324             Get or set the database password.
325              
326             =item B<port [NUM]>
327              
328             Get or set the database server port number.
329              
330             =item B<pre_disconnect_sql [STATEMENTS]>
331              
332             Get or set the SQL statements that will be run immediately before disconnecting from the database. STATEMENTS should be a list or reference to an array of SQL statements. Returns a reference to the array of SQL statements in scalar context, or a list of SQL statements in list context.
333              
334             =item B<post_connect_sql [STATEMENTS]>
335              
336             Get or set the SQL statements that will be run immediately after connecting to the database. STATEMENTS should be a list or reference to an array of SQL statements. Returns a reference to the array of SQL statements in scalar context, or a list of SQL statements in list context.
337              
338             =item B<print_error [VALUE]>
339              
340             Get or set the value of the "PrintError" connect option.
341              
342             =item B<raise_error [VALUE]>
343              
344             Get or set the value of the "RaiseError" connect option.
345              
346             =item B<schema [SCHEMA]>
347              
348             Get or set the database schema name. This setting is only useful to databases that support the concept of schemas (e.g., PostgreSQL).
349              
350             =item B<server_time_zone [TZ]>
351              
352             Get or set the time zone used by the database server software. TZ should be a time zone name that is understood by C<DateTime::TimeZone>. See the C<DateTime::TimeZone> documentation for acceptable values of TZ.
353              
354             =item B<type [TYPE]>
355              
356             Get or set the data source type. Note that changing the C<type> after a registry entry has been added to the registry has no affect on where the entry appears in the registry.
357              
358             =item B<username [NAME]>
359              
360             Get or set the database username.
361              
362             =back
363              
364             =head2 DRIVER-SPECIFIC ATTRIBUTES
365              
366             =head3 MySQL
367              
368             These attributes should only be used with registry entries where the L<driver|/driver> is C<mysql>.
369              
370             =over 4
371              
372             =item B<mysql_auto_reconnect [BOOL]>
373              
374             Get or set the L<mysql_auto_reconnect|DBD::mysql/mysql_auto_reconnect> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
375              
376             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
377              
378             See the L<DBD::mysql|DBD::mysql/mysql_auto_reconnect> documentation to learn more about this attribute.
379              
380             =item B<mysql_client_found_rows [BOOL]>
381              
382             Get or set the L<mysql_client_found_rows|DBD::mysql/mysql_client_found_rows> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
383              
384             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
385              
386             See the L<DBD::mysql|DBD::mysql/mysql_client_found_rows> documentation to learn more about this attribute.
387              
388             =item B<mysql_compression [BOOL]>
389              
390             Get or set the L<mysql_compression|DBD::mysql/mysql_compression> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
391              
392             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
393              
394             See the L<DBD::mysql|DBD::mysql/mysql_compression> documentation to learn more about this attribute.
395              
396             =item B<mysql_connect_timeout [BOOL]>
397              
398             Get or set the L<mysql_connect_timeout|DBD::mysql/mysql_connect_timeout> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
399              
400             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
401              
402             See the L<DBD::mysql|DBD::mysql/mysql_connect_timeout> documentation to learn more about this attribute.
403              
404             =item B<mysql_embedded_groups [STRING]>
405              
406             Get or set the L<mysql_embedded_groups|DBD::mysql/mysql_embedded_groups> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
407              
408             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
409              
410             See the L<DBD::mysql|DBD::mysql/mysql_embedded_groups> documentation to learn more about this attribute.
411              
412             =item B<mysql_embedded_options [STRING]>
413              
414             Get or set the L<mysql_embedded_options|DBD::mysql/mysql_embedded_options> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
415              
416             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
417              
418             See the L<DBD::mysql|DBD::mysql/mysql_embedded_options> documentation to learn more about this attribute.
419              
420             =item B<mysql_enable_utf8 [BOOL]>
421              
422             Get or set the L<mysql_enable_utf8|DBD::mysql/mysql_enable_utf8> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
423              
424             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
425              
426             See the L<DBD::mysql|DBD::mysql/mysql_enable_utf8> documentation to learn more about this attribute.
427              
428             =item B<mysql_enable_utf8mb4 [BOOL]>
429              
430             Get or set the L<mysql_enable_utf8mb4|DBD::mysql/mysql_enable_utf8mb4> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
431              
432             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
433              
434             See the L<DBD::mysql|DBD::mysql/mysql_enable_utf8mb4> documentation to learn more about this attribute.
435              
436             =item B<mysql_local_infile [STRING]>
437              
438             Get or set the L<mysql_local_infile|DBD::mysql/mysql_local_infile> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
439              
440             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
441              
442             See the L<DBD::mysql|DBD::mysql/mysql_local_infile> documentation to learn more about this attribute.
443              
444             =item B<mysql_multi_statements [BOOL]>
445              
446             Get or set the L<mysql_multi_statements|DBD::mysql/mysql_multi_statements> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
447              
448             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
449              
450             See the L<DBD::mysql|DBD::mysql/mysql_multi_statements> documentation to learn more about this attribute.
451              
452             =item B<mysql_read_default_file [STRING]>
453              
454             Get or set the L<mysql_read_default_file|DBD::mysql/mysql_read_default_file> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
455              
456             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
457              
458             See the L<DBD::mysql|DBD::mysql/mysql_read_default_file> documentation to learn more about this attribute.
459              
460             =item B<mysql_read_default_group [STRING]>
461              
462             Get or set the L<mysql_read_default_group|DBD::mysql/mysql_read_default_group> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
463              
464             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
465              
466             See the L<DBD::mysql|DBD::mysql/mysql_read_default_group> documentation to learn more about this attribute.
467              
468             =item B<mysql_socket [STRING]>
469              
470             Get or set the L<mysql_socket|DBD::mysql/mysql_socket> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
471              
472             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
473              
474             See the L<DBD::mysql|DBD::mysql/mysql_socket> documentation to learn more about this attribute.
475              
476             =item B<mysql_ssl [BOOL]>
477              
478             Get or set the L<mysql_ssl|DBD::mysql/mysql_ssl> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
479              
480             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
481              
482             See the L<DBD::mysql|DBD::mysql/mysql_ssl> documentation to learn more about this attribute.
483              
484             =item B<mysql_ssl_ca_file [STRING]>
485              
486             Get or set the L<mysql_ssl_ca_file|DBD::mysql/mysql_ssl_ca_file> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
487              
488             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
489              
490             See the L<DBD::mysql|DBD::mysql/mysql_ssl_ca_file> documentation to learn more about this attribute.
491              
492             =item B<mysql_ssl_ca_path [STRING]>
493              
494             Get or set the L<mysql_ssl_ca_path|DBD::mysql/mysql_ssl_ca_path> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
495              
496             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
497              
498             See the L<DBD::mysql|DBD::mysql/mysql_ssl_ca_path> documentation to learn more about this attribute.
499              
500             =item B<mysql_ssl_cipher [STRING]>
501              
502             Get or set the L<mysql_ssl_cipher|DBD::mysql/mysql_ssl_cipher> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
503              
504             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
505              
506             See the L<DBD::mysql|DBD::mysql/mysql_ssl_cipher> documentation to learn more about this attribute.
507              
508             =item B<mysql_ssl_client_cert [STRING]>
509              
510             Get or set the L<mysql_ssl_client_cert|DBD::mysql/mysql_ssl_client_cert> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
511              
512             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
513              
514             See the L<DBD::mysql|DBD::mysql/mysql_ssl_client_cert> documentation to learn more about this attribute.
515              
516             =item B<mysql_ssl_client_key [STRING]>
517              
518             Get or set the L<mysql_ssl_client_key|DBD::mysql/mysql_ssl_client_key> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
519              
520             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
521              
522             See the L<DBD::mysql|DBD::mysql/mysql_ssl_client_key> documentation to learn more about this attribute.
523              
524             =item B<mysql_use_result [BOOL]>
525              
526             Get or set the L<mysql_use_result|DBD::mysql/mysql_use_result> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::mysql> chooses.
527              
528             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
529              
530             See the L<DBD::mysql|DBD::mysql/mysql_use_result> documentation to learn more about this attribute.
531              
532             =back
533              
534             =head3 PostgreSQL
535              
536             These attributes should only be used with registry entries where the L<driver|/driver> is C<pg>.
537              
538             =over 4
539              
540             =item B<european_dates [BOOL]>
541              
542             Get or set the boolean value that determines whether or not dates are assumed to be in european dd/mm/yyyy format. The default is to assume US mm/dd/yyyy format (because this is the default for PostgreSQL).
543              
544             This value will be passed to L<DateTime::Format::Pg> as the value of the C<european> parameter in the call to the constructor C<new()>. This L<DateTime::Format::Pg> object is used by L<Rose::DB::Pg> to parse and format date-related column values in methods like L<parse_date|Rose::DB/parse_date>, L<format_date|Rose::DB/format_date>, etc.
545              
546             =item B<pg_enable_utf8 [BOOL]>
547              
548             Get or set the L<pg_enable_utf8|DBD::Pg/pg_enable_utf8> database handle attribute. This is set directly on the L<dbh|Rose::DB/dbh>, if one exists. Otherwise, it will be set when the L<dbh|Rose::DB/dbh> is created. If no value for this attribute is defined (the default) then it will not be set when the L<dbh|Rose::DB/dbh> is created, deferring instead to whatever default value L<DBD::Pg> chooses.
549              
550             Returns the value of this attribute in the L<dbh|Rose::DB/dbh>, if one exists, or the value that will be set when the L<dbh|Rose::DB/dbh> is next created.
551              
552             See the L<DBD::Pg|DBD::Pg/pg_enable_utf8> documentation to learn more about this attribute.
553              
554             =item B<sslmode [MODE]>
555              
556             Get or set the SSL mode of the connection. Valid values for MODE are C<disable>, C<allow>, C<prefer>, and C<require>. See the L<DBD::Pg|DBD::Pg/connect> documentation to learn more about this attribute.
557              
558             =back
559              
560             =head3 SQLite
561              
562             These attributes should only be used with registry entries where the L<driver|/driver> is C<sqlite>.
563              
564             =over 4
565              
566             =item B<auto_create [BOOL]>
567              
568             Get or set a boolean value indicating whether or not a new SQLite L<database|Rose::DB/database> should be created if it does not already exist. Defaults to true.
569              
570             If false, and if the specified L<database|Rose::DB/database> does not exist, then a fatal error will occur when an attempt is made to L<connect|Rose::DB/connect> to the database.
571              
572             =back
573              
574             =head1 AUTHOR
575              
576             John C. Siracusa (siracusa@gmail.com)
577              
578             =head1 LICENSE
579              
580             Copyright (c) 2010 by John C. Siracusa. All rights reserved. This program is
581             free software; you can redistribute it and/or modify it under the same terms
582             as Perl itself.