Commit ad0f3898 authored by lsmith's avatar lsmith

- added ability to set scale at runtime

parent fd0c1107
...@@ -93,7 +93,8 @@ class Doctrine_DataDict_Firebird extends Doctrine_DataDict ...@@ -93,7 +93,8 @@ class Doctrine_DataDict_Firebird extends Doctrine_DataDict
return 'DOUBLE PRECISION'; return 'DOUBLE PRECISION';
case 'decimal': case 'decimal':
$length = !empty($field['length']) ? $field['length'] : 18; $length = !empty($field['length']) ? $field['length'] : 18;
return 'DECIMAL('.$length.','.$this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES).')'; $scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES);
return 'DECIMAL('.$length.','.$scale.')';
} }
throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.'); throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.');
......
...@@ -108,7 +108,8 @@ class Doctrine_DataDict_Mssql extends Doctrine_DataDict ...@@ -108,7 +108,8 @@ class Doctrine_DataDict_Mssql extends Doctrine_DataDict
return 'FLOAT'; return 'FLOAT';
case 'decimal': case 'decimal':
$length = !empty($field['length']) ? $field['length'] : 18; $length = !empty($field['length']) ? $field['length'] : 18;
return 'DECIMAL('.$length.','.$this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES).')'; $scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES);
return 'DECIMAL('.$length.','.$scale.')';
} }
throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.'); throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.');
......
...@@ -216,7 +216,8 @@ class Doctrine_DataDict_Mysql extends Doctrine_DataDict ...@@ -216,7 +216,8 @@ class Doctrine_DataDict_Mysql extends Doctrine_DataDict
return 'DOUBLE'; return 'DOUBLE';
case 'decimal': case 'decimal':
$length = !empty($field['length']) ? $field['length'] : 18; $length = !empty($field['length']) ? $field['length'] : 18;
return 'DECIMAL('.$length.','.$this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES).')'; $scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES);
return 'DECIMAL('.$length.','.$scale.')';
} }
throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.'); throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.');
} }
......
...@@ -92,7 +92,8 @@ class Doctrine_DataDict_Oracle extends Doctrine_DataDict ...@@ -92,7 +92,8 @@ class Doctrine_DataDict_Oracle extends Doctrine_DataDict
case 'double': case 'double':
return 'NUMBER'; return 'NUMBER';
case 'decimal': case 'decimal':
return 'NUMBER(*,'.$this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES).')'; $scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES);
return 'NUMBER(*,'.$scale.')';
default: default:
} }
throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.'); throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.');
......
...@@ -417,7 +417,8 @@ class Doctrine_DataDict_Pgsql extends Doctrine_DataDict ...@@ -417,7 +417,8 @@ class Doctrine_DataDict_Pgsql extends Doctrine_DataDict
return 'FLOAT8'; return 'FLOAT8';
case 'decimal': case 'decimal':
$length = !empty($field['length']) ? $field['length'] : 18; $length = !empty($field['length']) ? $field['length'] : 18;
return 'NUMERIC(' . $length . ',' . $this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES) . ')'; $scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES);
return 'NUMERIC('.$length.','.$scale.')';
} }
throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.'); throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.');
} }
...@@ -548,7 +549,7 @@ class Doctrine_DataDict_Pgsql extends Doctrine_DataDict ...@@ -548,7 +549,7 @@ class Doctrine_DataDict_Pgsql extends Doctrine_DataDict
return array('type' => $type, return array('type' => $type,
'length' => $length, 'length' => $length,
'unsigned' => $unsigned, 'unsigned' => $unsigned,
'fixed' => $fixed); 'fixed' => $fixed);
} }
/** /**
...@@ -606,7 +607,7 @@ class Doctrine_DataDict_Pgsql extends Doctrine_DataDict ...@@ -606,7 +607,7 @@ class Doctrine_DataDict_Pgsql extends Doctrine_DataDict
} }
/** /**
* parseBoolean * parseBoolean
* parses a literal boolean value and returns * parses a literal boolean value and returns
* proper sql equivalent * proper sql equivalent
* *
* @param string $value boolean value to be parsed * @param string $value boolean value to be parsed
......
...@@ -115,7 +115,8 @@ class Doctrine_DataDict_Sqlite extends Doctrine_DataDict ...@@ -115,7 +115,8 @@ class Doctrine_DataDict_Sqlite extends Doctrine_DataDict
//($this->conn->options['fixed_float']+2).','.$this->conn->options['fixed_float'].')' : ''); //($this->conn->options['fixed_float']+2).','.$this->conn->options['fixed_float'].')' : '');
case 'decimal': case 'decimal':
$length = !empty($field['length']) ? $field['length'] : 18; $length = !empty($field['length']) ? $field['length'] : 18;
return 'DECIMAL('.$length.','.$this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES).')'; $scale = !empty($field['scale']) ? $field['scale'] : $this->conn->getAttribute(Doctrine::ATTR_DECIMAL_PLACES);
return 'DECIMAL('.$length.','.$scale.')';
} }
throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.'); throw new Doctrine_DataDict_Exception('Unknown field type \'' . $field['type'] . '\'.');
} }
...@@ -237,7 +238,7 @@ class Doctrine_DataDict_Sqlite extends Doctrine_DataDict ...@@ -237,7 +238,7 @@ class Doctrine_DataDict_Sqlite extends Doctrine_DataDict
return array('type' => $type, return array('type' => $type,
'length' => $length, 'length' => $length,
'unsigned' => $unsigned, 'unsigned' => $unsigned,
'fixed' => $fixed); 'fixed' => $fixed);
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment