.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Data::ObjectDriver::Driver::DBD 3pm" .TH Data::ObjectDriver::Driver::DBD 3pm "2023-02-05" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Data::ObjectDriver::Driver::DBD \- base class for database drivers .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& package SomeObject; \& use base qw( Data::ObjectDriver::BaseObject ); \& \& _\|_PACKAGE_\|_\->install_properties({ \& ... \& driver => Data::ObjectDriver::Driver::DBI\->new( \& ... \& dbd => Data::ObjectDriver::Driver::DBD\->new(\*(Aqmysql\*(Aq), \& ), \& }); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fIData::ObjectDriver::Driver::DBD\fR is the base class for \fIdatabase\fR drivers. Database drivers handle the peculiarities of specific database servers to provide an abstract \s-1API\s0 to the \fIobject\fR drivers. While database drivers operate on queries and database concepts like the last insert \s-1ID\s0 and binding attributes for a query, object drivers operate on objects higher level concepts like caching and partitioning. .PP Database drivers are used with \f(CW\*(C`Data::ObjectDriver::Driver::DBI\*(C'\fR object drivers. If you are making an object driver that doesn't use \f(CW\*(C`DBI\*(C'\fR, you do not need a database driver; implement your custom behavior in your \&\f(CW\*(C`Data::ObjectDriver\*(C'\fR subclass directly. .SH "USAGE" .IX Header "USAGE" .ie n .SS """Data::ObjectDriver::Driver::DBD\->new($name)""" .el .SS "\f(CWData::ObjectDriver::Driver::DBD\->new($name)\fP" .IX Subsection "Data::ObjectDriver::Driver::DBD->new($name)" Creates a new database driver of the given subclass type. That is, \&\f(CW\*(C`new(\*(Aqmysql\*(Aq)\*(C'\fR would create a new instance of \&\f(CW\*(C`Data::ObjectDriver::Driver::DBD::mysql\*(C'\fR. .ie n .SS """$dbd\->init_dbh($dbh)""" .el .SS "\f(CW$dbd\->init_dbh($dbh)\fP" .IX Subsection "$dbd->init_dbh($dbh)" Initializes the given database handle connected to this driver's type of database. .PP By default, no operation is performed. Override this method if your type of database must do further initialization that other database servers don't need, such as setting an operative time zone. .ie n .SS """$dbd\->bind_param_attributes($type)""" .el .SS "\f(CW$dbd\->bind_param_attributes($type)\fP" .IX Subsection "$dbd->bind_param_attributes($type)" Returns a hashref to pass to the \f(CW\*(C`DBI\*(C'\fR statement method \f(CW\*(C`bind_param\*(C'\fR, to describe the \s-1SQL\s0 type of a column defined as \f(CW$type\fR in an object class's \&\f(CW\*(C`column_defs\*(C'\fR mapping. .PP By default, no operation is performed. Override this method if your type of database needs such type hinting for some fields, such as specifying a parameter is a \f(CW\*(C`BLOB\*(C'\fR. .PP Note that object classes must define your custom types in their \f(CW\*(C`column_defs\*(C'\fR mappings for those classes to be compatible with your \f(CW\*(C`DBD\*(C'\fR. Make sure to document any custom types you implement. .ie n .SS """$dbd\->db_column_name($datasource, $column)""" .el .SS "\f(CW$dbd\->db_column_name($datasource, $column)\fP" .IX Subsection "$dbd->db_column_name($datasource, $column)" Returns a decorated column name. For example, if your database requires column names to be prepended with table names, that concatenation would occur in this method. .PP By default, \f(CW\*(C`db_column_name\*(C'\fR returns the column name unmodified. .ie n .SS """$dbd\->fetch_id()""" .el .SS "\f(CW$dbd\->fetch_id()\fP" .IX Subsection "$dbd->fetch_id()" Returns the autogenerated \s-1ID\s0 of the most recently inserted record, or \f(CW\*(C`undef\*(C'\fR if this feature is not supported. .PP By default, \f(CW\*(C`fetch_id\*(C'\fR returns \f(CW\*(C`undef\*(C'\fR. .ie n .SS """$dbd\->map_error_code($code, $msg)""" .el .SS "\f(CW$dbd\->map_error_code($code, $msg)\fP" .IX Subsection "$dbd->map_error_code($code, $msg)" Returns a \f(CW\*(C`Data::ObjectDriver::Errors\*(C'\fR code for the given database error, or \&\f(CW\*(C`undef\*(C'\fR if no equivalent has been defined. .PP By default, \f(CW\*(C`map_error_code\*(C'\fR returns \f(CW\*(C`undef\*(C'\fR for every error. .ie n .SS """$dbd\->sql_for_unixtime()""" .el .SS "\f(CW$dbd\->sql_for_unixtime()\fP" .IX Subsection "$dbd->sql_for_unixtime()" Returns the \s-1SQL\s0 for querying the current \s-1UNIX\s0 time on the database server, or a \&\s-1UNIX\s0 time to use as the remote time. .PP By default, \f(CW\*(C`sql_for_unixtime\*(C'\fR returns the value of perl \f(CW\*(C`time()\*(C'\fR on the local machine. .ie n .SS """$dbd\->offset_implemented()""" .el .SS "\f(CW$dbd\->offset_implemented()\fP" .IX Subsection "$dbd->offset_implemented()" Returns true if the database this driver represents supports \f(CW\*(C`OFFSET\*(C'\fR clauses. .PP By default, \f(CW\*(C`offset_implemented\*(C'\fR returns true. .ie n .SS """$dbd\->can_delete_with_limit()""" .el .SS "\f(CW$dbd\->can_delete_with_limit()\fP" .IX Subsection "$dbd->can_delete_with_limit()" Returns true if the database this driver represents supports \f(CW\*(C`LIMIT\*(C'\fR clauses on \f(CW\*(C`DELETE\*(C'\fR statements. .PP By default, \f(CW\*(C`can_delete_with_limit\*(C'\fR returns false. .ie n .SS """$dbd\->can_prepare_cached_statements()""" .el .SS "\f(CW$dbd\->can_prepare_cached_statements()\fP" .IX Subsection "$dbd->can_prepare_cached_statements()" Returns true if the database this driver can cope with preparing a cached statement. .PP By default, \f(CW\*(C`can_delete_with_limit\*(C'\fR returns true. .ie n .SS """$dbd\->is_case_insensitive()""" .el .SS "\f(CW$dbd\->is_case_insensitive()\fP" .IX Subsection "$dbd->is_case_insensitive()" Returns true if the database this driver represents normally compares string fields case insensitively. .PP By default, \f(CW\*(C`is_case_insensitive\*(C'\fR returns false. .ie n .SS """$dbd\->can_replace()""" .el .SS "\f(CW$dbd\->can_replace()\fP" .IX Subsection "$dbd->can_replace()" Returns true if the database this driver represents supports \f(CW\*(C`REPLACE INTO\*(C'\fR statements. .PP By default, \f(CW\*(C`can_replace\*(C'\fR returns false. .ie n .SS """$dbd\->force_no_prepared_cache()""" .el .SS "\f(CW$dbd\->force_no_prepared_cache()\fP" .IX Subsection "$dbd->force_no_prepared_cache()" Returns false if the database this driver represents supports the \&\f(CW\*(C`prepare_cached\*(C'\fR method on its \s-1DBI\s0 database handles. .PP By default, \f(CW\*(C`force_no_prepared_cache\*(C'\fR returns false. .ie n .SS """$dbd\->sql_class()""" .el .SS "\f(CW$dbd\->sql_class()\fP" .IX Subsection "$dbd->sql_class()" Provides the package name of the class responsible for representing \s-1SQL\s0 queries. This method returns 'Data::ObjectDriver::SQL', but may be overridden to return a package that has a similar interface but produces \&\s-1SQL\s0 that is compatible with that \s-1DBD\s0 driver. The package provided must already be loaded and available for use. .SH "LICENSE" .IX Header "LICENSE" \&\fIData::ObjectDriver\fR is free software; you may redistribute it and/or modify it under the same terms as Perl itself. .SH "AUTHOR & COPYRIGHT" .IX Header "AUTHOR & COPYRIGHT" Except where otherwise noted, \fIData::ObjectDriver\fR is Copyright 2005\-2006 Six Apart, cpan@sixapart.com. All rights reserved.