Index: modules/field/field.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.api.php,v
retrieving revision 1.71
diff -a -u -u -p -r1.71 field.api.php
--- modules/field/field.api.php	6 Apr 2010 16:49:12 -0000	1.71
+++ modules/field/field.api.php	21 Apr 2010 06:34:15 -0000
@@ -1666,3 +1666,22 @@ function hook_field_read_instance($insta
  */
 function hook_field_access($op, $field, $entity_type, $entity, $account) {
 }
+
+/**
+ * Allows a module to object to a field definition update.
+ *
+ * The module should throw a FieldUpdateForbiddenObjection to indicate
+ * that the update should not proceed.
+ *
+ * @param $field
+ *   The updated field structure that a module is attempting to save.
+ * @param $prior_field
+ *   The currently-saved field structure.
+ * @param $has_data
+ *   TRUE if the field has data in storage currently.
+ */
+function hook_field_update_forbid($field, $prior_field, $has_data) {
+  if ($has_data && $field['columns'] != $prior_field['columns']) {
+    throw new FieldUpdateForbiddenException("field_sql_storage cannot change the schema for an existing field with data.");
+  }
+}
