Permalink
Browse files

Fix issues with SQLServer + boolean columns.

SQLServer should not have lengths applied to BIT column types.
Remove any length that could have been provided.

Fixes #2439
  • Loading branch information...
1 parent ee7a224 commit 4e67698506ea489532dd6bd662f2c38c09f4f90a @markstory markstory committed Apr 2, 2012
@@ -656,12 +656,15 @@ public function insertMulti($table, $fields, $values) {
/**
* Generate a database-native column schema string
*
- * @param array $column An array structured like the following: array('name'=>'value', 'type'=>'value'[, options]),
+ * @param array $column An array structured like the
+ * following: array('name'=>'value', 'type'=>'value'[, options]),
* where options can be 'default', 'length', or 'key'.
* @return string
*/
public function buildColumn($column) {
- $result = preg_replace('/(int|integer)\([0-9]+\)/i', '$1', parent::buildColumn($column));
+ $result = parent::buildColumn($column);
+ $result = preg_replace('/(int|integer)\([0-9]+\)/i', '$1', $result);
+ $result = preg_replace('/(bit)\([0-9]+\)/i', '$1', $result);
if (strpos($result, 'DEFAULT NULL') !== false) {
if (isset($column['default']) && $column['default'] === '') {
$result = str_replace('DEFAULT NULL', "DEFAULT ''", $result);
@@ -543,6 +543,16 @@ public function testBuildColumn() {
$result = $this->db->buildColumn($column);
$expected = '[body] nvarchar(MAX)';
$this->assertEquals($expected, $result);
+
+ $column = array(
+ 'name' => 'checked',
+ 'type' => 'boolean',
+ 'length' => 10,
+ 'default' => '1'
+ );
+ $result = $this->db->buildColumn($column);
+ $expected = "[checked] bit DEFAULT '1'";
+ $this->assertEquals($expected, $result);
}
/**

0 comments on commit 4e67698

Please sign in to comment.