From e2d58353bcf9cc438f61066fa8176df957904bd6 Mon Sep 17 00:00:00 2001 From: Angie Byron <webchick@24967.no-reply.drupal.org> Date: Thu, 10 Sep 2009 22:06:58 +0000 Subject: [PATCH] #569240 by quicksketch: Remove field ID from field table names. --- .../field_sql_storage/field_sql_storage.module | 18 +++++++++++++++--- 1 file 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 2a94bffc709c..55b75715f6b0 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); } /** -- GitLab