? delete.subselect.test.patch
? sites/default/files
? sites/default/private
? sites/default/settings.php
Index: modules/simpletest/tests/database_test.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/database_test.test,v
retrieving revision 1.72
diff -u -p -r1.72 database_test.test
--- modules/simpletest/tests/database_test.test	26 Oct 2009 04:46:38 -0000	1.72
+++ modules/simpletest/tests/database_test.test	12 Nov 2009 10:54:51 -0000
@@ -945,6 +945,26 @@ class DatabaseDeleteTruncateTestCase ext
   }
 
   /**
+   * Confirm that we can use a subselect in a delete successfully.
+   */
+  function testSubselectDelete() {
+    $num_records_before = db_query('SELECT COUNT(*) FROM {test_task}')->fetchField();
+    $test_task_to_delete = db_query("SELECT * FROM {test_task} WHERE task = 'sleep'")->fetchObject();
+
+    $subquery = db_select('test', 't')
+      ->fields('t', array('id'))
+      ->condition('t.id', array($test_task_to_delete->pid), 'IN');
+    $num_deleted = db_delete('test_task')
+      ->condition('task', 'sleep')
+      ->condition('pid', $subquery, 'IN')
+      ->execute();
+    $this->assertEqual($num_deleted, 1, t("Deleted 1 record."));
+
+    $num_records_after = db_query('SELECT COUNT(*) FROM {test_task}')->fetchField();
+    $this->assertEqual($num_records_before, $num_records_after + $num_deleted, t('Deletion adds up.'));
+  }
+
+  /**
    * Confirm that we can delete a single record successfully.
    */
   function testSimpleDelete() {
