Rose-DB
view release on metacpan or search on metacpan
lib/Rose/DB/MySQL.pm view on Meta::CPAN
our $VERSION = '0.774';
our $Debug = 0;
use Rose::Class::MakeMethods::Generic
(
inheritable_scalar =>
[
'supports_schema',
'coerce_autoincrement_to_serial',
]
);
__PACKAGE__->supports_schema(1);
__PACKAGE__->coerce_autoincrement_to_serial(1);
#
# Object methods
#
sub registration_schema { shift->database }
sub build_dsn
{
my($self_or_class, %args) = @_;
my %info;
$info{'database'} = $args{'db'} || $args{'database'};
$info{'host'} = $args{'host'};
$info{'port'} = $args{'port'};
return
"dbi:mysql:" .
join(';', map { "$_=$info{$_}" } grep { defined $info{$_} }
qw(database host port));
}
sub dbi_driver { 'mysql' }
sub mysql_auto_reconnect { shift->dbh_attribute_boolean('mysql_auto_reconnect', @_) }
sub mysql_client_found_rows { shift->dbh_attribute_boolean('mysql_client_found_rows', @_) }
sub mysql_compression { shift->dbh_attribute_boolean('mysql_compression', @_) }
sub mysql_connect_timeout { shift->dbh_attribute_boolean('mysql_connect_timeout', @_) }
sub mysql_embedded_groups { shift->dbh_attribute('mysql_embedded_groups', @_) }
sub mysql_embedded_options { shift->dbh_attribute('mysql_embedded_options', @_) }
sub mysql_local_infile { shift->dbh_attribute('mysql_local_infile', @_) }
sub mysql_multi_statements { shift->dbh_attribute_boolean('mysql_multi_statements', @_) }
sub mysql_read_default_file { shift->dbh_attribute('mysql_read_default_file', @_) }
sub mysql_read_default_group { shift->dbh_attribute('mysql_read_default_group', @_) }
sub mysql_socket { shift->dbh_attribute('mysql_socket', @_) }
sub mysql_ssl { shift->dbh_attribute_boolean('mysql_ssl', @_) }
sub mysql_ssl_ca_file { shift->dbh_attribute('mysql_ssl_ca_file', @_) }
sub mysql_ssl_ca_path { shift->dbh_attribute('mysql_ssl_ca_path', @_) }
sub mysql_ssl_cipher { shift->dbh_attribute('mysql_ssl_cipher', @_) }
sub mysql_ssl_client_cert { shift->dbh_attribute('mysql_ssl_client_cert', @_) }
sub mysql_ssl_client_key { shift->dbh_attribute('mysql_ssl_client_key', @_) }
sub mysql_use_result { shift->dbh_attribute_boolean('mysql_use_result', @_) }
sub mysql_bind_type_guessing { shift->dbh_attribute_boolean('mysql_bind_type_guessing', @_) }
sub mysql_enable_utf8
{
my($self) = shift;
$self->dbh->do('SET NAMES utf8') if(@_ && $self->has_dbh);
$self->dbh_attribute_boolean('mysql_enable_utf8', @_)
}
sub mysql_enable_utf8mb4
{
my($self) = shift;
$self->dbh->do('SET NAMES utf8mb4') if(@_ && $self->has_dbh);
$self->dbh_attribute_boolean('mysql_enable_utf8mb4', @_)
}
sub database_version
{
my($self) = shift;
return $self->{'database_version'} if(defined $self->{'database_version'});
my $vers = $self->dbh->get_info(18); # SQL_DBMS_VER
# Convert to an integer, e.g., 5.1.13 -> 5001013
if($vers =~ /^(\d+)\.(\d+)(?:\.(\d+))?/)
{
$vers = sprintf('%d%03d%03d', $1, $2, $3 || 0);
}
return $self->{'database_version'} = $vers;
}
sub init_dbh
{
my($self) = shift;
$self->{'supports_on_duplicate_key_update'} = undef;
my $method = ref($self)->parent_class . '::init_dbh';
no strict 'refs';
return $self->$method(@_);
}
sub max_column_name_length { 64 }
sub max_column_alias_length { 255 }
sub quote_column_name
{
my $name = $_[1];
$name =~ s/`/``/g;
return qq(`$name`);
}
sub quote_table_name
{
my $name = $_[1];
$name =~ s/`/``/g;
return qq(`$name`);
}
sub list_tables
{
my($self, %args) = @_;
my $types = $args{'include_views'} ? "'TABLE','VIEW'" : 'TABLE';
my @tables;
my $schema = $self->schema;
$schema = $self->database unless(defined $schema);
my $error;
lib/Rose/DB/MySQL.pm view on Meta::CPAN
=head1 OBJECT METHODS
=over 4
=item B<mysql_auto_reconnect [BOOL]>
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 th...
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.
See the L<DBD::mysql|DBD::mysql/mysql_auto_reconnect> documentation to learn more about this attribute.
=item B<mysql_bind_type_guessing [BOOL]>
Get or set the L<mysql_bind_type_guessing|DBD::mysql/mysql_bind_type_guessing> 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 valu...
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.
See the L<DBD::mysql|DBD::mysql/mysql_bind_type_guessing> documentation to learn more about this attribute.
=item B<mysql_client_found_rows [BOOL]>
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 ...
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.
See the L<DBD::mysql|DBD::mysql/mysql_client_found_rows> documentation to learn more about this attribute.
=item B<mysql_compression [BOOL]>
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 att...
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.
See the L<DBD::mysql|DBD::mysql/mysql_compression> documentation to learn more about this attribute.
=item B<mysql_connect_timeout [BOOL]>
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 ...
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.
See the L<DBD::mysql|DBD::mysql/mysql_connect_timeout> documentation to learn more about this attribute.
=item B<mysql_embedded_groups [STRING]>
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 ...
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.
See the L<DBD::mysql|DBD::mysql/mysql_embedded_groups> documentation to learn more about this attribute.
=item B<mysql_embedded_options [STRING]>
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 fo...
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.
See the L<DBD::mysql|DBD::mysql/mysql_embedded_options> documentation to learn more about this attribute.
=item B<mysql_enable_utf8 [BOOL]>
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, by executing the SQL C<SET NAMES utf8>. Otherwise, it will be set when the L<dbh|Rose::DB/db...
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.
See the L<DBD::mysql|DBD::mysql/mysql_enable_utf8> documentation to learn more about this attribute.
=item B<mysql_enable_utf8mb4 [BOOL]>
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, by executing the SQL C<SET NAMES utf8mb4>. Otherwise, it will be set when the L<dbh|Ro...
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.
See the L<DBD::mysql|DBD::mysql/mysql_enable_utf8mb4> documentation to learn more about this attribute.
=item B<mysql_local_infile [STRING]>
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 a...
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.
See the L<DBD::mysql|DBD::mysql/mysql_local_infile> documentation to learn more about this attribute.
=item B<mysql_multi_statements [BOOL]>
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 fo...
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.
See the L<DBD::mysql|DBD::mysql/mysql_multi_statements> documentation to learn more about this attribute.
=item B<mysql_read_default_file [STRING]>
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 ...
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.
See the L<DBD::mysql|DBD::mysql/mysql_read_default_file> documentation to learn more about this attribute.
=item B<mysql_read_default_group [STRING]>
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 valu...
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.
See the L<DBD::mysql|DBD::mysql/mysql_read_default_group> documentation to learn more about this attribute.
=item B<mysql_socket [STRING]>
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 ...
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.
See the L<DBD::mysql|DBD::mysql/mysql_socket> documentation to learn more about this attribute.
=item B<mysql_ssl [BOOL]>
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 define...
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.
See the L<DBD::mysql|DBD::mysql/mysql_ssl> documentation to learn more about this attribute.
=item B<mysql_ssl_ca_file [STRING]>
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 att...
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.
See the L<DBD::mysql|DBD::mysql/mysql_ssl_ca_file> documentation to learn more about this attribute.
=item B<mysql_ssl_ca_path [STRING]>
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 att...
( run in 0.912 second using v1.01-cache-2.11-cpan-437f7b0c052 )