summaryrefslogtreecommitdiff
path: root/datadict/datadict-mysql.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'datadict/datadict-mysql.inc.php')
-rw-r--r--datadict/datadict-mysql.inc.php31
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;
}
}