PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Database » MDB2_Driver_mssql » Bug #10233

Set length property when not null, rather than > 0

Details

Request #10233Set length property when not null, rather than > 0
Submitted2007-03-01 16:13 UTC
Fromandrew dot hill at openads dot org
Assignedquipo
StatusClosed
PackageMDB2_Driver_mssql
PHP Version4.3.11
OSCentos 4.3, Apache 1.3
Roadmaps(Not assigned)

Comments

[2007-03-01 16:13 UTC] andrew dot hill at openads dot org

Description:
------------
In MDB2_Driver_Reverse_mysql::getTableFieldDefinition(), the length property is only set when the returned length value from MDB2_Driver_Datatype_Common::mapNativeDatatype() is > 0.

However, it is the responsibility of MDB2_Driver_Datatype_Common::mapNativeDatatype() to ensure that it returns the correct length value, or null.

As a result, I would propose that the MDB2_Driver_Reverse_mysql::getTableFieldDefinition() method only check to see if $length is not null, and if so, set the property.

This also allows custom data types in MDB2 to sneakily store "alternative" data in the length property - for example, the set of allowed values for an "enum" native type can be returned as the length.

Test script:
---------------
--- MDB2/Driver/Reverse/mysql.php (revision 4767)
+++ MDB2/Driver/Reverse/mysql.php (working copy)
@@ -118,7 +118,7 @@
'notnull' => $notnull,
'nativetype' => preg_replace('/^([a-z]+)[^a-z].*/i', '\\1', $column['type'])
);
- if ($length > 0) {
+ if (!is_null($length)) {
$definition[0]['length'] = $length;
}
if (!is_null($unsigned)) {