Matthew Simon Cavalletto

NAME

DBIx::SQLEngine::Driver::Mysql - Support DBD::mysql

SYNOPSIS

DBI Wrapper: Adds methods to a DBI database handle.

  my $sqldb = DBIx::SQLEngine->new( 'dbi:mysql:test' );
  

Portability Subclasses: Uses driver's idioms or emulation.

  $hash_ary = $sqldb->fetch_select( 
    table => 'students' 
    limit => 5, offset => 10
  );

DESCRIPTION

This package provides a subclass of DBIx::SQLEngine which compensates for MySQL's idiosyncrasies.

About Driver Subclasses

You do not need to use this package directly; when you connect to a database, the SQLEngine object is automatically re-blessed in to the appropriate subclass.

For more information about the underlying driver class, see DBD::Mysql.

DRIVER AND DATABASE FLAVORS

About DBMS Flavors

This driver uses the DatabaseFlavors trait in order to accomodate variations between different versions of MySQL. For more information, see DBIx::SQLEngine::Driver::Trait::DatabaseFlavors.

Detecting DBMS Flavors

default_dbms_flavor()
  $sqldb->default_dbms_flavor() : "V3_0"

By default, it is assumed that we're talking to an early version of MySQL 3.0, without transactions, unions, or stored procedures.

detect_dbms_flavor()
  $sqldb->detect_dbms_flavor() : $flavor_name

Attempts to determine which version of MySQL we're connected to based on the results of are_transactions_supported() and detect_union_supported().

If you want to take advantage of any advanced features that may be available, first call select_detect_dbms_flavor().

Version Classes

The following subclasses provide support for particular versions of MySQL:

V3_0

This is the earliest version we have a subclass for. Default. No transactions, union selects, or stored procedures.

V3_23

This is the first version with support for transactions. No union selects, or stored procedures.

V4_0

This is the first version with support for unions in select statements. No stored procedures.

V5_0

The version is still in development. It will be the first version to support stored procedures.

FETCHING DATA (SQL DQL)

Methods Used By Complex Queries

sql_limit()

Adds support for SQL select limit clause.

EDITING DATA (SQL DML)

Insert to Add Data

do_insert_with_sequence()
  $sqldb->do_insert_with_sequence( $sequence_name, %sql_clauses ) : $row_count

Implemented using _seq_do_insert_postfetch and seq_fetch_current.

seq_fetch_current()
  $sqldb->seq_fetch_current( ) : $current_value

Implemented using MySQL's "select LAST_INSERT_ID()". Note that this doesn't fetch the current sequence value for a given table, since it doesn't respect the table and field arguments, but merely returns the last sequencial value created during this session.

DEFINING STRUCTURES (SQL DDL)

Detect Tables and Columns

sql_detect_table()
  $sqldb->sql_detect_table ( $tablename )  : %sql_select_clauses

Implemented using MySQL's "select * from $tablename limit 1".

Column Type Methods

dbms_create_column_types()
  $sqldb->dbms_create_column_types () : %column_type_codes

Implemented using MySQL's blob and auto_increment types.

dbms_create_column_text_long_type()
  $sqldb->dbms_create_column_text_long_type () : $col_type_str

Implemented using MySQL's blob type.

INTERNAL STATEMENT METHODS (DBI STH)

Statement Error Handling

recoverable_query_exceptions()
  $sqldb->recoverable_query_exceptions() : @common_error_messages

Provides a list of error messages which represent common communication failures or other incidental errors.

SEE ALSO

See DBIx::SQLEngine for the overall interface and developer documentation.

See DBIx::SQLEngine::Docs::ReadMe for general information about this distribution, including installation and license information.