diff options
Diffstat (limited to 'datadict/datadict-mysql.inc.php')
| -rw-r--r-- | datadict/datadict-mysql.inc.php | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/datadict/datadict-mysql.inc.php b/datadict/datadict-mysql.inc.php index a1ee950a..9efbba1f 100644 --- a/datadict/datadict-mysql.inc.php +++ b/datadict/datadict-mysql.inc.php @@ -33,7 +33,7 @@ class ADODB2_mysql extends ADODB_DataDict { public $blobAllowsNotNull = true; - function MetaType($t,$len=-1,$fieldobj=false) + function metaType($t,$len=-1,$fieldobj=false) { if (is_object($t)) { @@ -44,7 +44,14 @@ class ADODB2_mysql extends ADODB_DataDict { $is_serial = is_object($fieldobj) && $fieldobj->primary_key && $fieldobj->auto_increment; $len = -1; // mysql max_length is not accurate - switch (strtoupper($t)) { + + $t = strtoupper($t); + + if (array_key_exists($t,$this->connection->customActualTypes)) + return $this->connection->customActualTypes[$t]; + + switch ($t) { + case 'STRING': case 'CHAR': case 'VARCHAR': @@ -84,13 +91,27 @@ class ADODB2_mysql extends ADODB_DataDict { case 'SMALLINT': return $is_serial ? 'R' : 'I2'; case 'MEDIUMINT': return $is_serial ? 'R' : 'I4'; case 'BIGINT': return $is_serial ? 'R' : 'I8'; - default: return ADODB_DEFAULT_METATYPE; + default: + + return ADODB_DEFAULT_METATYPE; } } function ActualType($meta) { - switch(strtoupper($meta)) { + + $meta = strtoupper($meta); + + /* + * Add support for custom meta types. We do this + * first, that allows us to override existing types + */ + if (isset($this->connection->customMetaTypes[$meta])) + return $this->connection->customMetaTypes[$meta]['actual']; + + switch($meta) + { + case 'C': return 'VARCHAR'; case 'XL':return 'LONGTEXT'; case 'X': return 'TEXT'; @@ -114,7 +135,9 @@ class ADODB2_mysql extends ADODB_DataDict { case 'F': return 'DOUBLE'; case 'N': return 'NUMERIC'; + default: + return $meta; } } |
