Index: modules/field/field.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.api.php,v
retrieving revision 1.91
diff -u -p -r1.91 field.api.php
--- modules/field/field.api.php	3 Oct 2010 01:15:33 -0000	1.91
+++ modules/field/field.api.php	18 Oct 2010 15:55:11 -0000
@@ -197,7 +197,7 @@ function hook_field_info() {
 function hook_field_info_alter(&$info) {
   // Add a setting to all field types.
   foreach ($info as $field_type => $field_type_info) {
-    $info[$field_type]['settings'] += array(
+    $info[$field_type]['data']['settings'] += array(
       'mymodule_additional_setting' => 'default value',
     );
   }
@@ -247,7 +247,7 @@ function hook_field_schema($field) {
     $columns = array(
       'value' => array(
         'type' => 'varchar',
-        'length' => $field['settings']['max_length'],
+        'length' => $field['data']['settings']['max_length'],
         'not null' => FALSE,
       ),
     );
@@ -309,7 +309,7 @@ function hook_field_load($entity_type, $
     foreach ($items[$id] as $delta => $item) {
       // Only process items with a cacheable format, the rest will be handled
       // by formatters if needed.
-      if (empty($instances[$id]['settings']['text_processing']) || filter_format_allowcache($item['format'])) {
+      if (empty($instances[$id]['data']['settings']['text_processing']) || filter_format_allowcache($item['format'])) {
         $items[$id][$delta]['safe_value'] = isset($item['value']) ? _text_sanitize($instances[$id], $langcode, $item, 'value') : '';
         if ($field['type'] == 'text_with_summary') {
           $items[$id][$delta]['safe_summary'] = isset($item['summary']) ? _text_sanitize($instances[$id], $langcode, $item, 'summary') : '';
@@ -352,8 +352,8 @@ function hook_field_prepare_view($entity
   // Sample code from image.module: if there are no images specified at all,
   // use the default image.
   foreach ($entities as $id => $entity) {
-    if (empty($items[$id]) && $field['settings']['default_image']) {
-      if ($file = file_load($field['settings']['default_image'])) {
+    if (empty($items[$id]) && $field['data']['settings']['default_image']) {
+      if ($file = file_load($field['data']['settings']['default_image'])) {
         $items[$id][0] = (array) $file + array(
           'is_default' => TRUE,
           'alt' => '',
@@ -394,10 +394,10 @@ function hook_field_prepare_view($entity
 function hook_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
   foreach ($items as $delta => $item) {
     if (!empty($item['value'])) {
-      if (!empty($field['settings']['max_length']) && drupal_strlen($item['value']) > $field['settings']['max_length']) {
+      if (!empty($field['data']['settings']['max_length']) && drupal_strlen($item['value']) > $field['data']['settings']['max_length']) {
         $errors[$field['field_name']][$delta][] = array(
           'error' => 'text_max_length',
-          'message' => t('%name: the value may not be longer than %max characters.', array('%name' => $instance['label'], '%max' => $field['settings']['max_length'])),
+          'message' => t('%name: the value may not be longer than %max characters.', array('%name' => $instance['label'], '%max' => $field['data']['settings']['max_length'])),
         );
       }
     }
@@ -429,7 +429,7 @@ function hook_field_presave($entity_type
     // backends.
     foreach ($items as $delta => $item) {
       if (isset($item['value'])) {
-        $items[$delta]['value'] = round($item['value'], $field['settings']['scale']);
+        $items[$delta]['value'] = round($item['value'], $field['data']['settings']['scale']);
       }
     }
   }
@@ -2241,9 +2241,9 @@ function hook_field_update_forbid($field
   // the new field will have fewer values, and any data exists for the
   // abandoned keys, the field will have no way to display them. So,
   // forbid such an update.
-  if ($has_data && count($field['settings']['allowed_values']) < count($prior_field['settings']['allowed_values'])) {
+  if ($has_data && count($field['data']['settings']['allowed_values']) < count($prior_field['data']['settings']['allowed_values'])) {
     // Identify the keys that will be lost.
-    $lost_keys = array_diff(array_keys($field['settings']['allowed_values']), array_keys($prior_field['settings']['allowed_values']));
+    $lost_keys = array_diff(array_keys($field['data']['settings']['allowed_values']), array_keys($prior_field['data']['settings']['allowed_values']));
     // If any data exist for those keys, forbid the update.
     $query = new EntityFieldQuery();
     $found = $query
Index: modules/field/field.crud.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.crud.inc,v
retrieving revision 1.71
diff -u -p -r1.71 field.crud.inc
--- modules/field/field.crud.inc	29 Sep 2010 01:37:02 -0000	1.71
+++ modules/field/field.crud.inc	18 Oct 2010 15:55:46 -0000
@@ -303,7 +303,7 @@ function field_create_field($field) {
   }
   // Create all per-field-type properties (needed here as long as we have
   // settings that impact column definitions).
-  $field['settings'] += field_info_field_settings($field['type']);
+  $field['data']['settings'] += field_info_field_settings($field['type']);
   $field['module'] = $field_type['module'];
   $field['active'] = 1;
 
@@ -419,7 +419,7 @@ function field_update_field($field) {
   // Use the prior field values for anything not specifically set by the new
   // field to be sure that all values are set.
   $field += $prior_field;
-  $field['settings'] += $prior_field['settings'];
+  $field['data']['settings'] += $prior_field['data']['settings'];
 
   // Some updates are always disallowed.
   if ($field['type'] != $prior_field['type']) {
@@ -459,23 +459,23 @@ function field_update_field($field) {
   $storage_type = field_info_storage_types($field['storage']['type']);
   module_invoke($storage_type['module'], 'field_storage_update_field', $field, $prior_field, $has_data);
 
-  // Save the new field definition. @todo: refactor with
-  // field_create_field.
-
-  // The serialized 'data' column contains everything from $field that does not
-  // have its own column and is not automatically populated when the field is
-  // read.
-  $data = $field;
-  unset($data['columns'], $data['field_name'], $data['type'], $data['locked'], $data['module'], $data['cardinality'], $data['active'], $data['deleted']);
-  // Additionally, do not save the 'bundles' property populated by
-  // field_info_field().
-  unset($data['bundles']);
-
-  $field['data'] = $data;
-
-  // Store the field and create the id.
-  $primary_key = array('id');
-  drupal_write_record('field_config', $field, $primary_key);
+  // Save the new field definition.
+  db_update('field_config')
+    ->fields(array(
+      'field_name' => $field['field_name'],
+      'type' => $field['type'],
+      'module' => $field['module'],
+      'active' => $field['active'],
+      'storage_type' => $field['storage']['type'],
+      'storage_module' => $field['storage']['module'],
+      'storage_active' => $field['storage']['active'],
+      'locked' => $field['locked'],
+      'cardinality' => $field['cardinality'],
+      'translatable' => $field['translatable'],
+      'data' => serialize($field['data']),
+    ))
+    ->condition('id', $field['id'])
+    ->execute();
 
   // Clear caches
   field_cache_clear(TRUE);
@@ -544,19 +544,13 @@ function field_read_fields($params = arr
   $fields = array();
   $results = $query->execute();
   foreach ($results as $record) {
-    $field = unserialize($record['data']);
-    $field['id'] = $record['id'];
-    $field['field_name'] = $record['field_name'];
-    $field['type'] = $record['type'];
-    $field['module'] = $record['module'];
-    $field['active'] = $record['active'];
+    $field = $record;
+    $field['data'] = unserialize($record['data']);
+
     $field['storage']['type'] = $record['storage_type'];
     $field['storage']['module'] = $record['storage_module'];
     $field['storage']['active'] = $record['storage_active'];
-    $field['locked'] = $record['locked'];
-    $field['cardinality'] = $record['cardinality'];
-    $field['translatable'] = $record['translatable'];
-    $field['deleted'] = $record['deleted'];
+    unset($field['storage_type'], $field['storage_module'], $field['storage_active']);
 
     module_invoke_all('field_read_field', $field);
 
Index: modules/field/field.info.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.info.inc,v
retrieving revision 1.53
diff -u -p -r1.53 field.info.inc
--- modules/field/field.info.inc	11 Sep 2010 00:03:42 -0000	1.53
+++ modules/field/field.info.inc	18 Oct 2010 15:58:18 -0000
@@ -255,7 +255,9 @@ function _field_info_collate_fields($res
  */
 function _field_info_prepare_field($field) {
   // Make sure all expected field settings are present.
-  $field['settings'] += field_info_field_settings($field['type']);
+  $field['data'] += array('settings' => array());
+  $field['data']['settings'] += field_info_field_settings($field['type']);
+  $field['storage'] += array('settings' => array());
   $field['storage']['settings'] += field_info_storage_settings($field['storage']['type']);
 
   // Add storage details.
Index: modules/field/modules/field_sql_storage/field_sql_storage.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/field_sql_storage/field_sql_storage.test,v
retrieving revision 1.22
diff -u -p -r1.22 field_sql_storage.test
--- modules/field/modules/field_sql_storage/field_sql_storage.test	29 Sep 2010 01:37:02 -0000	1.22
+++ modules/field/modules/field_sql_storage/field_sql_storage.test	18 Oct 2010 15:58:31 -0000
@@ -310,7 +310,7 @@ class FieldSqlStorageTestCase extends Dr
     field_attach_insert('test_entity', $entity);
 
     // Attempt to update the field in a way that would work without data.
-    $field['settings']['scale'] = 3;
+    $field['data']['settings']['scale'] = 3;
     try {
       field_update_field($field);
       $this->fail(t('Cannot update field schema with data.'));
Index: modules/field/modules/list/list.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/list/list.module,v
retrieving revision 1.35
diff -u -p -r1.35 list.module
--- modules/field/modules/list/list.module	11 Oct 2010 19:57:00 -0000	1.35
+++ modules/field/modules/list/list.module	18 Oct 2010 15:58:45 -0000
@@ -65,7 +65,7 @@ function list_field_info() {
  * list.module does not depend on form submission.
  */
 function list_field_settings_form($field, $instance, $has_data) {
-  $settings = $field['settings'];
+  $settings = $field['data']['settings'];
 
   $form['allowed_values'] = array(
     '#type' => 'textarea',
@@ -197,13 +197,13 @@ function list_allowed_values($field) {
   if (!isset($allowed_values[$field['id']])) {
     $values = array();
 
-    $function = $field['settings']['allowed_values_function'];
+    $function = $field['data']['settings']['allowed_values_function'];
     if (!empty($function) && function_exists($function)) {
       $values = $function($field);
     }
-    elseif (!empty($field['settings']['allowed_values'])) {
+    elseif (!empty($field['data']['settings']['allowed_values'])) {
       $position_keys = $field['type'] == 'list';
-      $values = list_extract_allowed_values($field['settings']['allowed_values'], $position_keys);
+      $values = list_extract_allowed_values($field['data']['settings']['allowed_values'], $position_keys);
     }
 
     $allowed_values[$field['id']] = $values;
Index: modules/field/modules/list/tests/list.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/list/tests/list.test,v
retrieving revision 1.8
diff -u -p -r1.8 list.test
--- modules/field/modules/list/tests/list.test	11 Oct 2010 19:57:00 -0000	1.8
+++ modules/field/modules/list/tests/list.test	18 Oct 2010 15:58:59 -0000
@@ -57,7 +57,7 @@ class ListFieldTestCase extends FieldTes
     $this->assertTrue(!empty($form[$this->field_name][$langcode][3]), t('Option 3 exists'));
 
     // Removed options do not appear.
-    $this->field['settings']['allowed_values'] = "2|Two";
+    $this->field['data']['settings']['allowed_values'] = "2|Two";
     field_update_field($this->field);
     $entity = field_test_create_stub_entity();
     $form = drupal_get_form('field_test_entity_form', $entity);
@@ -66,7 +66,7 @@ class ListFieldTestCase extends FieldTes
     $this->assertTrue(empty($form[$this->field_name][$langcode][3]), t('Option 3 does not exist'));
 
     // Completely new options appear.
-    $this->field['settings']['allowed_values'] = "10|Update\n20|Twenty";
+    $this->field['data']['settings']['allowed_values'] = "10|Update\n20|Twenty";
     field_update_field($this->field);
     $form = drupal_get_form('field_test_entity_form', $entity);
     $this->assertTrue(empty($form[$this->field_name][$langcode][1]), t('Option 1 does not exist'));
@@ -78,7 +78,7 @@ class ListFieldTestCase extends FieldTes
     // Options are reset when a new field with the same name is created.
     field_delete_field($this->field_name);
     unset($this->field['id']);
-    $this->field['settings']['allowed_values'] = "1|One\n2|Two\n3|Three\n";
+    $this->field['data']['settings']['allowed_values'] = "1|One\n2|Two\n3|Three\n";
     $this->field = field_create_field($this->field);
     $this->instance = array(
       'field_name' => $this->field_name,
@@ -171,9 +171,9 @@ class ListFieldUITestCase extends FieldT
     $this->assertFieldByName('on', $on, t("The 'On' value is stored correctly."));
     $this->assertFieldByName('off', $off, t("The 'Off' value is stored correctly."));
     $field = field_info_field($this->field['field_name']);
-    $this->assertEqual($field['settings']['allowed_values'], "0|$off\n1|$on", t('The allowed value is correct'));
-    $this->assertFalse(isset($field['settings']['on']), t('The on value is not saved into settings'));
-    $this->assertFalse(isset($field['settings']['off']), t('The off value is not saved into settings'));
+    $this->assertEqual($field['data']['settings']['allowed_values'], "0|$off\n1|$on", t('The allowed value is correct'));
+    $this->assertFalse(isset($field['data']['settings']['on']), t('The on value is not saved into settings'));
+    $this->assertFalse(isset($field['data']['settings']['off']), t('The off value is not saved into settings'));
   }
 
   /**
Index: modules/field/modules/number/number.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/number/number.install,v
retrieving revision 1.1
diff -u -p -r1.1 number.install
--- modules/field/modules/number/number.install	4 Sep 2010 15:40:51 -0000	1.1
+++ modules/field/modules/number/number.install	18 Oct 2010 15:59:05 -0000
@@ -33,8 +33,8 @@ function number_field_schema($field) {
       $columns = array(
         'value' => array(
           'type' => 'numeric',
-          'precision' => $field['settings']['precision'],
-          'scale' => $field['settings']['scale'],
+          'precision' => $field['data']['settings']['precision'],
+          'scale' => $field['data']['settings']['scale'],
           'not null' => FALSE
         ),
       );
Index: modules/field/modules/number/number.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/number/number.module,v
retrieving revision 1.43
diff -u -p -r1.43 number.module
--- modules/field/modules/number/number.module	7 Sep 2010 17:56:41 -0000	1.43
+++ modules/field/modules/number/number.module	18 Oct 2010 15:59:40 -0000
@@ -54,7 +54,7 @@ function number_field_info() {
  * Implements hook_field_settings_form().
  */
 function number_field_settings_form($field, $instance, $has_data) {
-  $settings = $field['settings'];
+  $settings = $field['data']['settings'];
   $form = array();
 
   if ($field['type'] == 'number_decimal') {
@@ -161,7 +161,7 @@ function number_field_presave($entity_ty
     // backends.
     foreach ($items as $delta => $item) {
       if (isset($item['value'])) {
-        $items[$delta]['value'] = round($item['value'], $field['settings']['scale']);
+        $items[$delta]['value'] = round($item['value'], $field['data']['settings']['scale']);
       }
     }
   }
@@ -322,7 +322,7 @@ function number_field_widget_form(&$form
   $value = isset($items[$delta]['value']) ? $items[$delta]['value'] : '';
   // Substitute the decimal separator.
   if ($field['type'] == 'number_decimal' || $field['type'] == 'number_float') {
-    $value = strtr($value, '.', $field['settings']['decimal_separator']);
+    $value = strtr($value, '.', $field['data']['settings']['decimal_separator']);
   }
 
   $element += array(
@@ -330,8 +330,8 @@ function number_field_widget_form(&$form
     '#default_value' => $value,
     // Allow a slightly larger size that the field length to allow for some
     // configurations where all characters won't fit in input field.
-    '#size' => $field['type'] == 'number_decimal' ? $field['settings']['precision'] + 2 : 12,
-    '#maxlength' => $field['type'] == 'number_decimal' ? $field['settings']['precision'] : 10,
+    '#size' => $field['type'] == 'number_decimal' ? $field['data']['settings']['precision'] + 2 : 12,
+    '#maxlength' => $field['type'] == 'number_decimal' ? $field['data']['settings']['precision'] : 10,
     // Extract the number type from the field type name for easier validation.
     '#number_type' => str_replace('number_', '', $field['type']),
   );
@@ -366,8 +366,8 @@ function number_field_widget_validate($e
     switch ($type) {
       case 'float':
       case 'decimal':
-        $regexp = '@[^-0-9\\' . $field['settings']['decimal_separator'] . ']@';
-        $message = t('Only numbers and the decimal separator (@separator) allowed in %field.', array('%field' => t($instance['label']), '@separator' => $field['settings']['decimal_separator']));
+        $regexp = '@[^-0-9\\' . $field['data']['settings']['decimal_separator'] . ']@';
+        $message = t('Only numbers and the decimal separator (@separator) allowed in %field.', array('%field' => t($instance['label']), '@separator' => $field['data']['settings']['decimal_separator']));
         break;
 
       case 'integer':
@@ -381,7 +381,7 @@ function number_field_widget_validate($e
     else {
       // Substitute the decimal separator,
       if ($type == 'decimal' || $type == 'float') {
-        $value = strtr($value, $field['settings']['decimal_separator'], '.');
+        $value = strtr($value, $field['data']['settings']['decimal_separator'], '.');
       }
       form_set_value($element, $value, $form_state);
     }
Index: modules/field/modules/options/options.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/options/options.api.php,v
retrieving revision 1.1
diff -u -p -r1.1 options.api.php
--- modules/field/modules/options/options.api.php	14 Dec 2009 20:18:55 -0000	1.1
+++ modules/field/modules/options/options.api.php	18 Oct 2010 15:59:50 -0000
@@ -52,7 +52,7 @@ function hook_options_list($field) {
   // In actual implementations, the array of options will most probably depend
   // on properties of the field. Example from taxonomy.module:
   $options = array();
-  foreach ($field['settings']['allowed_values'] as $tree) {
+  foreach ($field['data']['settings']['allowed_values'] as $tree) {
     $terms = taxonomy_get_tree($tree['vid'], $tree['parent']);
     if ($terms) {
       foreach ($terms as $term) {
Index: modules/field/modules/options/options.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/options/options.test,v
retrieving revision 1.17
diff -u -p -r1.17 options.test
--- modules/field/modules/options/options.test	24 Sep 2010 00:37:42 -0000	1.17
+++ modules/field/modules/options/options.test	18 Oct 2010 16:00:10 -0000
@@ -100,7 +100,7 @@ class OptionsWidgetsTestCase extends Fie
     $this->assertFieldValues($entity_init, 'card_1', $langcode, array());
 
     // Check that required radios with one option is auto-selected.
-    $this->card_1['settings']['allowed_values'] = '99|Only allowed value';
+    $this->card_1['data']['settings']['allowed_values'] = '99|Only allowed value';
     field_update_field($this->card_1);
     $instance['required'] = TRUE;
     field_update_instance($instance);
@@ -190,7 +190,7 @@ class OptionsWidgetsTestCase extends Fie
     $this->assertFieldValues($entity_init, 'card_2', $langcode, array());
 
     // Required checkbox with one option is auto-selected.
-    $this->card_2['settings']['allowed_values'] = '99|Only allowed value';
+    $this->card_2['data']['settings']['allowed_values'] = '99|Only allowed value';
     field_update_field($this->card_2);
     $instance['required'] = TRUE;
     field_update_instance($instance);
@@ -266,8 +266,8 @@ class OptionsWidgetsTestCase extends Fie
 
     // Test optgroups.
 
-    $this->card_1['settings']['allowed_values'] = NULL;
-    $this->card_1['settings']['allowed_values_function'] = 'list_test_allowed_values_callback';
+    $this->card_1['data']['settings']['allowed_values'] = NULL;
+    $this->card_1['data']['settings']['allowed_values_function'] = 'list_test_allowed_values_callback';
     field_update_field($this->card_1);
 
     // Display form: with no field data, nothing is selected
@@ -381,8 +381,8 @@ class OptionsWidgetsTestCase extends Fie
     // Test optgroups.
 
     // Use a callback function defining optgroups.
-    $this->card_2['settings']['allowed_values'] = NULL;
-    $this->card_2['settings']['allowed_values_function'] = 'list_test_allowed_values_callback';
+    $this->card_2['data']['settings']['allowed_values'] = NULL;
+    $this->card_2['data']['settings']['allowed_values_function'] = 'list_test_allowed_values_callback';
     field_update_field($this->card_2);
     $instance['required'] = FALSE;
     field_update_instance($instance);
Index: modules/field/modules/text/text.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.install,v
retrieving revision 1.2
diff -u -p -r1.2 text.install
--- modules/field/modules/text/text.install	29 Sep 2010 01:37:02 -0000	1.2
+++ modules/field/modules/text/text.install	18 Oct 2010 16:00:16 -0000
@@ -15,7 +15,7 @@ function text_field_schema($field) {
       $columns = array(
         'value' => array(
           'type' => 'varchar',
-          'length' => $field['settings']['max_length'],
+          'length' => $field['data']['settings']['max_length'],
           'not null' => FALSE,
         ),
       );
Index: modules/field/modules/text/text.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.module,v
retrieving revision 1.65
diff -u -p -r1.65 text.module
--- modules/field/modules/text/text.module	18 Sep 2010 02:18:35 -0000	1.65
+++ modules/field/modules/text/text.module	18 Oct 2010 16:00:53 -0000
@@ -61,7 +61,7 @@ function text_field_info() {
  * Implements hook_field_settings_form().
  */
 function text_field_settings_form($field, $instance, $has_data) {
-  $settings = $field['settings'];
+  $settings = $field['data']['settings'];
 
   $form = array();
 
@@ -122,14 +122,14 @@ function text_field_validate($entity_typ
     //   length can be exceeded very easily.
     foreach (array('value', 'summary') as $column) {
       if (!empty($item[$column])) {
-        if (!empty($field['settings']['max_length']) && drupal_strlen($item[$column]) > $field['settings']['max_length']) {
+        if (!empty($field['data']['settings']['max_length']) && drupal_strlen($item[$column]) > $field['data']['settings']['max_length']) {
           switch ($column) {
             case 'value':
-              $message = t('%name: the text may not be longer than %max characters.', array('%name' => $instance['label'], '%max' => $field['settings']['max_length']));
+              $message = t('%name: the text may not be longer than %max characters.', array('%name' => $instance['label'], '%max' => $field['data']['settings']['max_length']));
               break;
 
             case 'summary':
-              $message = t('%name: the summary may not be longer than %max characters.', array('%name' => $instance['label'], '%max' => $field['settings']['max_length']));
+              $message = t('%name: the summary may not be longer than %max characters.', array('%name' => $instance['label'], '%max' => $field['data']['settings']['max_length']));
               break;
           }
           $errors[$field['field_name']][$langcode][$delta][] = array(
@@ -510,7 +510,7 @@ function text_field_widget_form(&$form, 
         '#type' => 'textfield',
         '#default_value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : NULL,
         '#size' => $instance['widget']['settings']['size'],
-        '#maxlength' => $field['settings']['max_length'],
+        '#maxlength' => $field['data']['settings']['max_length'],
         '#attributes' => array('class' => array('text-full')),
       );
       break;
Index: modules/field/tests/field.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/tests/field.test,v
retrieving revision 1.42
diff -u -p -r1.42 field.test
--- modules/field/tests/field.test	28 Sep 2010 02:30:31 -0000	1.42
+++ modules/field/tests/field.test	18 Oct 2010 16:03:43 -0000
@@ -1043,7 +1043,7 @@ class FieldInfoTestCase extends FieldTes
     $this->assertEqual($fields[$field['field_name']]['module'], 'field_test', t('info fields contains field module'));
     $settings = array('test_field_setting' => 'dummy test string');
     foreach ($settings as $key => $val) {
-      $this->assertEqual($fields[$field['field_name']]['settings'][$key], $val, t("Field setting $key has correct default value $val"));
+      $this->assertEqual($fields[$field['field_name']]['data']['settings'][$key], $val, t("Field setting $key has correct default value $val"));
     }
     $this->assertEqual($fields[$field['field_name']]['cardinality'], 1, t('info fields contains cardinality 1'));
     $this->assertEqual($fields[$field['field_name']]['active'], 1, t('info fields contains active 1'));
@@ -1096,7 +1096,7 @@ class FieldInfoTestCase extends FieldTes
 
     // Check that all expected settings are in place.
     $field_type = field_info_field_types($field_definition['type']);
-    $this->assertIdentical($field['settings'], $field_type['settings'], t('All expected default field settings are present.'));
+    $this->assertIdentical($field['data']['settings'], $field_type['settings'], t('All expected default field settings are present.'));
   }
 
   /**
@@ -2123,7 +2123,7 @@ class FieldCrudTestCase extends FieldTes
   function testUpdateFieldForbid() {
     $field = array('field_name' => 'forbidden', 'type' => 'test_field', 'settings' => array('changeable' => 0, 'unchangeable' => 0));
     $field = field_create_field($field);
-    $field['settings']['changeable']++;
+    $field['data']['settings']['changeable']++;
     try {
       field_update_field($field);
       $this->pass(t("A changeable setting can be updated."));
@@ -2131,7 +2131,7 @@ class FieldCrudTestCase extends FieldTes
     catch (FieldException $e) {
       $this->fail(t("An unchangeable setting cannot be updated."));
     }
-    $field['settings']['unchangeable']++;
+    $field['data']['settings']['unchangeable']++;
     try {
       field_update_field($field);
       $this->fail(t("An unchangeable setting can be updated."));
Index: modules/field/tests/field_test.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/tests/field_test.field.inc,v
retrieving revision 1.13
diff -u -p -r1.13 field_test.field.inc
--- modules/field/tests/field_test.field.inc	28 Sep 2010 02:30:31 -0000	1.13
+++ modules/field/tests/field_test.field.inc	18 Oct 2010 16:04:05 -0000
@@ -50,7 +50,7 @@ function field_test_field_info() {
  * Implements hook_field_update_forbid().
  */
 function field_test_field_update_forbid($field, $prior_field, $has_data) {
-  if ($field['type'] == 'test_field' && $field['settings']['unchangeable'] != $prior_field['settings']['unchangeable']) {
+  if ($field['type'] == 'test_field' && $field['data']['settings']['unchangeable'] != $prior_field['data']['settings']['unchangeable']) {
     throw new FieldException("field_test 'unchangeable' setting cannot be changed'");
   }
 }
@@ -101,7 +101,7 @@ function field_test_field_is_empty($item
  * Implements hook_field_settings_form().
  */
 function field_test_field_settings_form($field, $instance, $has_data) {
-  $settings = $field['settings'];
+  $settings = $field['data']['settings'];
 
   $form['test_field_setting'] = array(
     '#type' => 'textfield',
