Index: content_admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/content_admin.inc,v retrieving revision 1.129 diff -u -r1.129 content_admin.inc --- content_admin.inc 12 Dec 2007 22:37:26 -0000 1.129 +++ content_admin.inc 15 Dec 2007 22:30:58 -0000 @@ -1360,6 +1360,9 @@ // Migrate data from per-field storage, and drop per-field table. if ($previous_field['db_storage'] == CONTENT_DB_STORAGE_PER_FIELD && $new_field['db_storage'] == CONTENT_DB_STORAGE_PER_CONTENT_TYPE) { + // In ordet to be able to use drupal_write_record, we need to + // rebuild the schema now. // TODO : we're then missing debug $ret messages... + content_alter_db_cleanup($ret); if ($previous_field['multiple']) { $result = db_query('SELECT * FROM {'. $previous_table .'} WHERE delta = 0'); } @@ -1378,7 +1381,7 @@ } if (db_result(db_query('SELECT COUNT(*) FROM {'. $new_table . '} WHERE vid = %d AND nid = %d', $data['vid'], $data['nid']))) { - $keys = $field['multiple'] ? array('vid', 'delta') : array('vid'); + $keys = $new_field['multiple'] ? array('vid', 'delta') : array('vid'); drupal_write_record($new_table, $record, $keys); } else { @@ -1409,7 +1412,7 @@ } } - return content_alter_db_cleanup($ret); + return $ret; } /** Index: content_crud.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/content_crud.inc,v retrieving revision 1.52 diff -u -r1.52 content_crud.inc --- content_crud.inc 10 Dec 2007 23:19:59 -0000 1.52 +++ content_crud.inc 15 Dec 2007 22:31:47 -0000 @@ -463,7 +463,7 @@ // Invoke hook_content_fieldapi(). module_invoke_all('content_fieldapi', 'delete instance', $field); - content_alter_schema($field, array()); +// content_alter_schema($field, array()); db_query("DELETE FROM {". content_instance_tablename() . "} WHERE field_name = '%s' AND type_name = '%s'", $field['field_name'], $field['type_name']); @@ -484,7 +484,11 @@ // Multiple-valued fields are always stored per-field-type. $instance = $instances[0]; + $new_instance = $instance; $new_instance['db_storage'] = CONTENT_DB_STORAGE_PER_CONTENT_TYPE; + // TODO : or _field_write ? + db_query("UPDATE {". content_field_tablename() . + "} SET db_storage = %d WHERE field_name = '%s'", CONTENT_DB_STORAGE_PER_CONTENT_TYPE, $field['field_name']); content_alter_schema($instance, $new_instance); }