NAME

Rose::DB::MySQL - MySQL driver class for Rose::DB.

SYNOPSIS

use Rose::DB;

Rose::DB->register_db(
  domain   => 'development',
  type     => 'main',
  driver   => 'mysql',
  database => 'dev_db',
  host     => 'localhost',
  username => 'devuser',
  password => 'mysecret',
);


Rose::DB->default_domain('development');
Rose::DB->default_type('main');
...

# Set max length of varchar columns used to emulate the array data type
Rose::DB::MySQL->max_array_characters(128);

$db = Rose::DB->new; # $db is really a Rose::DB::MySQL-derived object
...

DESCRIPTION

Rose::DB blesses objects into a class derived from Rose::DB::MySQL when the driver is "mysql". This mapping of driver names to class names is configurable. See the documentation for Rose::DB's new() and driver_class() methods for more information.

This class cannot be used directly. You must use Rose::DB and let its new() method return an object blessed into the appropriate class for you, according to its driver_class() mappings.

Only the methods that are new or have different behaviors than those in Rose::DB are documented here. See the Rose::DB documentation for the full list of methods.

CLASS METHODS

coerce_autoincrement_to_serial [BOOL]

Get or set a boolean value that indicates whether or not "auto-increment" columns will be considered to have the column type "serial." If true, "integer" columns are coerced to the "serial" column type, and "bigint" columns use the "bigserial" column type. The default value is true.

This setting comes into play when Rose::DB::Object::Loader is used to auto-create column metadata based on an existing database schema.

max_array_characters [INT]

Get or set the maximum length of varchar columns used to emulate the array data type. The default value is 255.

MySQL does not have a native "ARRAY" data type, but this data type can be emulated using a "VARCHAR" column and a specially formatted string. The formatting and parsing of this string is handled by the format_array and parse_array object methods. The maximum length limit is honored by the format_array object method.

max_interval_characters [INT]

Get or set the maximum length of varchar columns used to emulate the interval data type. The default value is 255.

MySQL does not have a native "interval" data type, but this data type can be emulated using a "VARCHAR" column and a specially formatted string. The formatting and parsing of this string is handled by the format_interval and parse_interval object methods. The maximum length limit is honored by the format_interval object method.

OBJECT METHODS

mysql_auto_reconnect [BOOL]

Get or set the mysql_auto_reconnect database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_bind_type_guessing [BOOL]

Get or set the mysql_bind_type_guessing database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_client_found_rows [BOOL]

Get or set the mysql_client_found_rows database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_compression [BOOL]

Get or set the mysql_compression database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_connect_timeout [BOOL]

Get or set the mysql_connect_timeout database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_embedded_groups [STRING]

Get or set the mysql_embedded_groups database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_embedded_options [STRING]

Get or set the mysql_embedded_options database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_enable_utf8 [BOOL]

Get or set the mysql_enable_utf8 database handle attribute. This is set directly on the dbh, if one exists, by executing the SQL SET NAMES utf8. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_enable_utf8mb4 [BOOL]

Get or set the mysql_enable_utf8mb4 database handle attribute. This is set directly on the dbh, if one exists, by executing the SQL SET NAMES utf8mb4. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_local_infile [STRING]

Get or set the mysql_local_infile database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_multi_statements [BOOL]

Get or set the mysql_multi_statements database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_read_default_file [STRING]

Get or set the mysql_read_default_file database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_read_default_group [STRING]

Get or set the mysql_read_default_group database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_socket [STRING]

Get or set the mysql_socket database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_ssl [BOOL]

Get or set the mysql_ssl database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_ssl_ca_file [STRING]

Get or set the mysql_ssl_ca_file database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_ssl_ca_path [STRING]

Get or set the mysql_ssl_ca_path database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_ssl_cipher [STRING]

Get or set the mysql_ssl_cipher database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_ssl_client_cert [STRING]

Get or set the mysql_ssl_client_cert database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_ssl_client_key [STRING]

Get or set the mysql_ssl_client_key database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

mysql_use_result [BOOL]

Get or set the mysql_use_result database handle attribute. This is set directly on the dbh, if one exists. Otherwise, it will be set when the dbh is created. If no value for this attribute is defined (the default) then it will not be set when the dbh is created, deferring instead to whatever default value DBD::mysql chooses.

Returns the value of this attribute in the dbh, if one exists, or the value that will be set when the dbh is next created.

See the DBD::mysql documentation to learn more about this attribute.

Value Parsing and Formatting

format_array ARRAYREF | LIST

Given a reference to an array or a list of values, return a specially formatted string. Undef is returned if ARRAYREF points to an empty array or if LIST is not passed. The array or list must not contain undefined values.

If the resulting string is longer than max_array_characters, a fatal error will occur.

format_interval DURATION

Given a DateTime::Duration object, return a string formatted according to the rules of PostgreSQL's "INTERVAL" column type. If DURATION is undefined, a DateTime::Duration object, a valid interval keyword (according to validate_interval_keyword), or if it looks like a function call (matches /^\w+\(.*\)$/) and keyword_function_calls is true, then it is returned unmodified.

If the resulting string is longer than max_interval_characters, a fatal error will occur.

format_set ARRAYREF | LIST

Given a reference to an array or a list of values, return a string formatted according to the rules of MySQL's "SET" data type. Undef is returned if ARRAYREF points to an empty array or if LIST is not passed. If the array or list contains undefined values, a fatal error will occur.

parse_array STRING | LIST | ARRAYREF

Parse STRING and return a reference to an array. STRING should be formatted according to the MySQL array data type emulation format returned by format_array(). Undef is returned if STRING is undefined.

If a LIST of more than one item is passed, a reference to an array containing the values in LIST is returned.

If a an ARRAYREF is passed, it is returned as-is.

parse_interval STRING

Parse STRING and return a DateTime::Duration object. STRING should be formatted according to the PostgreSQL native "interval" (years, months, days, hours, minutes, seconds) data type.

If STRING is a DateTime::Duration object, a valid interval keyword (according to validate_interval_keyword), or if it looks like a function call (matches /^\w+\(.*\)$/) and keyword_function_calls is true, then it is returned unmodified. Otherwise, undef is returned if STRING could not be parsed as a valid "interval" value.

parse_set STRING | LIST | ARRAYREF

Parse STRING and return a reference to an array. STRING should be formatted according to MySQL's "SET" data type. Undef is returned if STRING is undefined.

If a LIST of more than one item is passed, a reference to an array containing the values in LIST is returned.

If a an ARRAYREF is passed, it is returned as-is.

validate_date_keyword STRING

Returns true if STRING is a valid keyword for the MySQL "date" data type. Valid (case-insensitive) date keywords are:

curdate()
current_date
current_date()
now()
sysdate()
00000-00-00

Any string that looks like a function call (matches /^\w+\(.*\)$/) is also considered a valid date keyword if keyword_function_calls is true.

validate_datetime_keyword STRING

Returns true if STRING is a valid keyword for the MySQL "datetime" data type, false otherwise. Valid (case-insensitive) datetime keywords are:

curdate()
current_date
current_date()
current_time 
current_time()
current_timestamp
current_timestamp()
curtime()
now()
sysdate()
0000-00-00 00:00:00

Any string that looks like a function call (matches /^\w+\(.*\)$/) is also considered a valid datetime keyword if keyword_function_calls is true.

validate_timestamp_keyword STRING

Returns true if STRING is a valid keyword for the MySQL "timestamp" data type, false otherwise. Valid (case-insensitive) timestamp keywords are:

curdate()
current_date
current_date()
current_time 
current_time()
current_timestamp
current_timestamp()
curtime()
now()
sysdate()
0000-00-00 00:00:00
00000000000000

Any string that looks like a function call (matches /^\w+\(.*\)$/) is also considered a valid timestamp keyword if keyword_function_calls is true.

AUTHOR

John C. Siracusa (siracusa@gmail.com)

LICENSE

Copyright (c) 2010 by John C. Siracusa. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.