### Eclipse Workspace Patch 1.0
#P drupal_test_6
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.756.2.14
diff -u -r1.756.2.14 common.inc
--- includes/common.inc	19 May 2008 08:04:33 -0000	1.756.2.14
+++ includes/common.inc	13 Jun 2008 23:37:26 -0000
@@ -3231,7 +3231,7 @@
   if (empty($schema)) {
     return FALSE;
   }
-  
+
   // Convert to an object if needed.
   if (is_array($object)) {
     $object = (object) $object;
@@ -3251,8 +3251,11 @@
       continue;
     }
 
-    // For inserts, populate defaults from Schema if not already provided
-    if (!isset($object->$field) && !count($update) && isset($info['default'])) {
+    // array_key_exists() is used to catch fields explicitly set to NULL.
+    // We try a faster isset() first to preserve performance.
+
+    // For inserts, populate defaults from Schema if not already provided.
+    if (!count($update) && isset($info['default']) && !isset($object->$field) && !array_key_exists($field, $object)) {
       $object->$field = $info['default'];
     }
 
@@ -3260,19 +3263,19 @@
     if ($info['type'] == 'serial') {
       $serials[] = $field;
       // Ignore values for serials when inserting data. Unsupported.
-      unset($object->$field);
+      continue;
     }
 
     // Build arrays for the fields, placeholders, and values in our query.
-    if (isset($object->$field)) {
+    if (isset($object->$field) || array_key_exists($field, $object)) {
       $fields[] = $field;
-      $placeholders[] = db_type_placeholder($info['type']);
-
-      if (empty($info['serialize'])) {
-        $values[] = $object->$field;
+      if (isset($object->$field)) {
+        $placeholders[] = db_type_placeholder($info['type']);
+        $values[] = empty($info['serialize']) ? $object->$field : serialize($object->$field);
       }
       else {
-        $values[] = serialize($object->$field);
+        $placeholders[] = '%s';
+        $values[] = 'NULL';
       }
     }
   }
