Home » Database » MDB2_Driver_mssql » Bug #10233
Set length property when not null, rather than > 0
Details
| Request #10233 | Set length property when not null, rather than > 0 |
|---|---|
| Submitted | 2007-03-01 16:13 UTC |
| From | andrew dot hill at openads dot org |
| Assigned | quipo |
| Status | Closed |
| Package | MDB2_Driver_mssql |
| PHP Version | 4.3.11 |
| OS | Centos 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)) {