From a902f664d9209f81903619913d754065461523a7 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Mon, 23 Nov 2009 22:31:42 +0000 Subject: - Patch #564852 by justinrandell, mcarbone, Crell: fixed subselect in WHERE condition with multiple placeholders cause invalid/duplicate placeholders. --- modules/simpletest/tests/database_test.test | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'modules/simpletest/tests/database_test.test') diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test index 8970224c4..43f97d291 100644 --- a/modules/simpletest/tests/database_test.test +++ b/modules/simpletest/tests/database_test.test @@ -944,6 +944,27 @@ class DatabaseDeleteTruncateTestCase extends DatabaseTestCase { ); } + /** + * Confirm that we can use a subselect in a delete successfully. + */ + function testSubselectDelete() { + $num_records_before = db_query('SELECT COUNT(*) FROM {test_task}')->fetchField(); + $pid_to_delete = db_query("SELECT * FROM {test_task} WHERE task = 'sleep'")->fetchField(); + + $subquery = db_select('test', 't') + ->fields('t', array('id')) + ->condition('t.id', array($pid_to_delete), 'IN'); + $delete = db_delete('test_task') + ->condition('task', 'sleep') + ->condition('pid', $subquery, 'IN'); + + $num_deleted = $delete->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. */ -- cgit v1.2.3