SYNOPSIS

  use DBIx::Compat;

  my $HaveTypes  = DBIx::Compat::GetItem ($drv, 'HaveTypes') ;

DESCRIPTION

DBIx::Compat contains a hash which gives information about \s-1DBD\s0 drivers, to allow to write driver independent programs.

Currently there are the following attributes defined:

\fBListFields\fP

A function which will return information about all fields of an table. Needs an database handle and a tablename as argument. Must at least return the fieldnames and the fieldtypes.

Example:

$ListFields = $DBIx::Compat::Compat{$Driver}{ListFields} ; $sth = &{$ListFields}($DBHandle, $Table) or die "Cannot list fields" ;

@{ $sth -> {NAME} } ; # array of fieldnames @{ $sth -> {TYPE} } ; # array of filedtypes

$sth -> finish ;

\fBListTables\fP

A function which will return an array of all tables of the datasource. Defaults to $dbh -> \*(C`tables\*(C'.

\fBNumericTypes\fP

Hash which contains one entry for all datatypes that are numeric.

\fBSupportJoin\fP

Set to true if the \s-1DBMS\s0 supports joins (select with multiple tables)

\fBSupportSQLJoin\fP

Set to 1 if the \s-1DBMS\s0 supports \s-1INNER/LEFT/RIGHT\s0 \s-1JOIN\s0 Syntax in \s-1SQL\s0 select. Set to 2 if \s-1DBMS\s0 needs a *= b syntax for inner join (MS-SQL, Sybase). Set to 3 if \s-1DBMS\s0 needs a = b (+) syntax for inner join (Oracle syntax).

\fBSQLJoinOnly2Tabs\fP

Set to true if \s-1DBMS\s0 can only support two tables in inner joins.

\fBHaveTypes\fP

Set to true if \s-1DBMS\s0 supports datatypes (most \s-1DBMS\s0 will do)

\fBNeedNullInCreate\fP

Set to 'NULL' if \s-1DBMS\s0 requires the \s-1NULL\s0 keyword when creating tables where fields should contains nulls.

\fBEmptyIsNull\fP

Set to true if an empty string ('') and \s-1NULL\s0 is the same for the \s-1DBMS\s0.

\fBLimitOffset\fP

An function which will be used to create a \s-1SQL\s0 text for limiting the number of fetched rows and selecting the starting row in selects.

\fBKeys that aren't needed anymore\fP

\fBPlaceholders\fP

Gives information if and how placeholders are supported:

0 = Not supported
1 = Supported, but not fully, unknown how much
2 = Supported, but perl type must be the same as type in db
3 = Supported, but can not give a string when a numeric type is in the db
10 = Supported under all circumstances

\fBQuoteTypes\fP

Gives information which datatypes must be quoted when passed literal (not via a placeholder). Contains a hash with all type number which need to be quoted.

$DBIx::Compat::Compat{$Driver}{QuoteTypes}{$Type}

will be true when the type in $Type for the driver $Driver must be quoted.

Supported Drivers

Currently there are entry for

DBD::mSQL
DBD::mysql
DBD::Pg
DBD::Solid
\s-1DBD::ODBC\s0
\s-1DBD::CSV\s0
DBD::Oracle
DBD::Sysbase
DBD::Informix

if you detect an error in the definition or add an definition for a new \s-1DBD\s0 driver, please mail it to the author.

AUTHOR

G.Richter <richter*dev.ecos.de>

RELATED TO DBIx::Compat…

perl\|(1), \s-1DBI\s0\|(3), DBIx::Recordset\|(3)