From 8e5123a4aeef3b4cf0ab45565e6f63c5a37bafbc Mon Sep 17 00:00:00 2001 From: Chuck Hagenbuch Date: Mon, 31 May 2010 22:56:42 -0400 Subject: [PATCH] Better handling of NULL default values for columns --- framework/Db/lib/Horde/Db/Adapter/Sqlite/Column.php | 2 ++ framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/framework/Db/lib/Horde/Db/Adapter/Sqlite/Column.php b/framework/Db/lib/Horde/Db/Adapter/Sqlite/Column.php index 7de96052c..33adf21c6 100644 --- a/framework/Db/lib/Horde/Db/Adapter/Sqlite/Column.php +++ b/framework/Db/lib/Horde/Db/Adapter/Sqlite/Column.php @@ -61,6 +61,8 @@ class Horde_Db_Adapter_Sqlite_Column extends Horde_Db_Adapter_Base_Column { if ($value == '"t"' || $value == "'t'") { return true; + } elseif ($value == '""' || $value == "''") { + return null; } else { return parent::valueToBoolean($value); } diff --git a/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php b/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php index 89ea35b90..591e57e1d 100644 --- a/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php +++ b/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php @@ -260,11 +260,22 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema $defs = array('$definition["'.$columnName.'"]->setType("'.$type.'");'); if (isset($options['limit'])) { $defs[] = '$definition["'.$columnName.'"]->setLimit("'.$options['limit'].'");'; } - if (isset($options['default'])) { $defs[] = '$definition["'.$columnName.'"]->setDefault("'.$options['default'].'");'; } if (isset($options['null'])) { $defs[] = '$definition["'.$columnName.'"]->setNull("'.$options['null'].'");'; } if (isset($options['precision'])) { $defs[] = '$definition["'.$columnName.'"]->setPrecision("'.$options['precision'].'");'; } if (isset($options['scale'])) { $defs[] = '$definition["'.$columnName.'"]->setScale("'.$options['scale'].'");'; } + if (array_key_exists('default', $options)) { + if ($options['default'] === true) { + $default = 'true'; + } elseif ($options['default'] === false) { + $default = 'false'; + } elseif ($options['default'] === null) { + $default = 'null'; + } else { + $default = '"' . $options['default'] . '"'; + } + $defs[] = '$definition["'.$columnName.'"]->setDefault('.$default.');'; } + return $this->_alterTable($tableName, array(), create_function('$definition', implode("\n", $defs))); } @@ -278,8 +289,9 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema { $this->_clearTableCache($tableName); + $default = is_null($default) ? 'null' : '"' . $default . '"'; return $this->_alterTable($tableName, array(), - create_function('$definition', '$definition["'.$columnName.'"]->setDefault("'.$default.'");')); + create_function('$definition', '$definition["'.$columnName.'"]->setDefault('.$default.');')); } /** -- 2.11.0