Merge pull request #17 from halkyon/int_fix2

Fixing use of "bigint" and "decimal" for pure integer types.
This commit is contained in:
Sean Harvey 2014-07-15 09:25:39 +12:00
commit 05faf24483

View File

@ -20,7 +20,7 @@ class MSSQLSchemaManager extends DBSchemaManager {
* @param string $tableName * @param string $tableName
* @param string $indexName * @param string $indexName
* @param string $prefix The optional prefix for the index. Defaults to "ix" for indexes. * @param string $prefix The optional prefix for the index. Defaults to "ix" for indexes.
* @return string The postgres name of the index * @return string The name of the index
*/ */
function buildMSSQLIndexName($tableName, $indexName, $prefix = 'ix') { function buildMSSQLIndexName($tableName, $indexName, $prefix = 'ix') {
@ -438,11 +438,12 @@ class MSSQLSchemaManager extends DBSchemaManager {
// Update the data_type field to be a complete column definition string for use by // Update the data_type field to be a complete column definition string for use by
// SS_Database::requireField() // SS_Database::requireField()
switch($field['data_type']){ switch($field['data_type']){
case 'int':
case 'bigint': case 'bigint':
case 'numeric': case 'numeric':
case 'float': case 'float':
case 'bit': case 'bit':
if($field['data_type'] != 'bigint' && $sizeSuffix = $field['numeric_precision']) { if($field['data_type'] != 'bigint' && $field['data_type'] != 'int' && $sizeSuffix = $field['numeric_precision']) {
$field['data_type'] .= "($sizeSuffix)"; $field['data_type'] .= "($sizeSuffix)";
} }
@ -729,8 +730,7 @@ class MSSQLSchemaManager extends DBSchemaManager {
* @return string * @return string
*/ */
public function int($values) { public function int($values) {
//We'll be using an 8 digit precision to keep it in line with the serial8 datatype for ID columns return 'int not null default ' . (int) $values['default'];
return 'numeric(8) not null default ' . (int) $values['default'];
} }
/** /**
@ -788,17 +788,15 @@ class MSSQLSchemaManager extends DBSchemaManager {
/** /**
* This returns the column which is the primary key for each table * This returns the column which is the primary key for each table
* In Postgres, it is a SERIAL8, which is the equivalent of an auto_increment
*
* @return string * @return string
*/ */
function IdColumn($asDbValue = false, $hasAutoIncPK = true){ function IdColumn($asDbValue = false, $hasAutoIncPK = true){
if($asDbValue) { if($asDbValue) {
return 'bigint not null'; return 'int not null';
} else if($hasAutoIncPK) { } else if($hasAutoIncPK) {
return 'bigint identity(1,1)'; return 'int identity(1,1)';
} else { } else {
return 'bigint not null'; return 'int not null';
} }
} }