diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-09-10 22:06:58 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-09-10 22:06:58 +0000 |
commit | e2d58353bcf9cc438f61066fa8176df957904bd6 (patch) | |
tree | 9333f2ecd060e2d1ec5b56b96561051e890817de | |
parent | 7f88540b4bdd8f9a4d5050ae6c870fc794a29e8a (diff) | |
download | brdo-e2d58353bcf9cc438f61066fa8176df957904bd6.tar.gz brdo-e2d58353bcf9cc438f61066fa8176df957904bd6.tar.bz2 |
#569240 by quicksketch: Remove field ID from field table names.
-rw-r--r-- | modules/field/modules/field_sql_storage/field_sql_storage.module | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.module b/modules/field/modules/field_sql_storage/field_sql_storage.module index 2a94bffc7..55b75715f 100644 --- a/modules/field/modules/field_sql_storage/field_sql_storage.module +++ b/modules/field/modules/field_sql_storage/field_sql_storage.module @@ -26,7 +26,7 @@ function field_sql_storage_help($path, $arg) { * A string containing the generated name for the database table */ function _field_sql_storage_tablename($field) { - return "field_data_{$field['field_name']}_{$field['id']}"; + return "field_data_{$field['field_name']}" . ($field['deleted'] ? "_{$field['id']}" : ''); } /** @@ -38,7 +38,7 @@ function _field_sql_storage_tablename($field) { * A string containing the generated name for the database table */ function _field_sql_storage_revision_tablename($field) { - return "field_revision_{$field['field_name']}_{$field['id']}"; + return "field_revision_{$field['field_name']}" . ($field['deleted'] ? "_{$field['id']}" : ''); } /** @@ -207,12 +207,24 @@ function field_sql_storage_field_storage_create_field($field) { * Implement hook_field_storage_delete_field(). */ function field_sql_storage_field_storage_delete_field($field_name) { - // Mark all data associated with the field for deletion. $field = field_info_field($field_name); + + // Mark all data associated with the field for deletion. + $field['deleted'] = 0; $table = _field_sql_storage_tablename($field); + $revision_table = _field_sql_storage_revision_tablename($field); db_update($table) ->fields(array('deleted' => 1)) ->execute(); + + // Move the table to a unique name while the table contents are being deleted. + $ret = array(); + $field['deleted'] = 1; + $new_table = _field_sql_storage_tablename($field); + $revision_new_table = _field_sql_storage_revision_tablename($field); + db_rename_table($ret, $table, $new_table); + db_rename_table($ret, $revision_table, $revision_new_table); + drupal_get_schema(NULL, TRUE); } /** |