--- copy_node.module 2008-07-25 12:01:16.000000000 +0200 +++ node.module 2008-07-25 11:58:57.000000000 +0200 @@ -959,11 +959,10 @@ */ function node_delete($nid) { + // do not cache the node to save memory on mass deletions $node = node_load($nid, NULL, TRUE); if (node_access('delete', $node)) { - db_query('DELETE FROM {node} WHERE nid = %d', $node->nid); - db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid); // Call the node-specific callback (if any): node_invoke($node, 'delete'); @@ -976,6 +975,11 @@ if (function_exists('search_wipe')) { search_wipe($node->nid, 'node'); } + + // Last step: Delete node and it's revisions from database + db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid); + db_query('DELETE FROM {node} WHERE nid = %d', $node->nid); + watchdog('content', '@type: deleted %title.', array('@type' => $node->type, '%title' => $node->title)); drupal_set_message(t('@type %title has been deleted.', array('@type' => node_get_types('name', $node), '%title' => $node->title))); }