summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/database/select.inc4
-rw-r--r--modules/simpletest/tests/database_test.test10
2 files changed, 12 insertions, 2 deletions
diff --git a/includes/database/select.inc b/includes/database/select.inc
index 1777a20d4..535c29c85 100644
--- a/includes/database/select.inc
+++ b/includes/database/select.inc
@@ -1125,14 +1125,14 @@ class SelectQuery extends Query implements SelectQueryInterface {
}
// If that's already in use, try the table name and field name.
- if (!empty($this->tables[$alias])) {
+ if (!empty($this->fields[$alias])) {
$alias = $table_alias . '_' . $field;
}
// If that is already used, just add a counter until we find an unused alias.
$alias_candidate = $alias;
$count = 2;
- while (!empty($this->tables[$alias_candidate])) {
+ while (!empty($this->fields[$alias_candidate])) {
$alias_candidate = $alias . '_' . $count++;
}
$alias = $alias_candidate;
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index a03ba06b4..8f834659a 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -1543,6 +1543,16 @@ class DatabaseSelectTestCase extends DatabaseTestCase {
sort($sorted_ids_second_set);
$this->assertEqual($sorted_ids_second_set, $sorted_ids, t('After sorting the second random list, the result matches the sorted version of the first random list.'));
}
+
+ /**
+ * Test that aliases are renamed when duplicates.
+ */
+ function testSelectDuplicateAlias() {
+ $query = db_select('test', 't');
+ $alias1 = $query->addField('t', 'name', 'the_alias');
+ $alias2 = $query->addField('t', 'age', 'the_alias');
+ $this->assertNotIdentical($alias1, $alias2, 'Duplicate aliases are renamed.');
+ }
}
/**