summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2008-10-22 04:01:03 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2008-10-22 04:01:03 +0000
commitf4315766fe31d57cd3a709d666d363bcf933febe (patch)
treeea07501721ec218f2220ffe19f620618b792f23f
parent1fa03d7c33f30a57eb9051e5d979f41178bbcefa (diff)
downloadbrdo-f4315766fe31d57cd3a709d666d363bcf933febe.tar.gz
brdo-f4315766fe31d57cd3a709d666d363bcf933febe.tar.bz2
#316868 by Crell: Make addField() alias to the field name, rather than the table and field name when there are no conflicts.
-rw-r--r--includes/database/select.inc7
-rw-r--r--modules/simpletest/tests/database_test.test4
2 files changed, 9 insertions, 2 deletions
diff --git a/includes/database/select.inc b/includes/database/select.inc
index 3adf2bd99..2be1e08d9 100644
--- a/includes/database/select.inc
+++ b/includes/database/select.inc
@@ -335,10 +335,17 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
* The unique alias that was assigned for this field.
*/
public function addField($table_alias, $field, $alias = NULL) {
+ // If no alias is specified, first try the field name itself.
if (empty($alias)) {
+ $alias = $field;
+ }
+
+ // If that's already in use, try the table name and field name.
+ if (!empty($this->tables[$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])) {
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index 7efb88256..adc94a39e 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -1014,7 +1014,7 @@ class DatabaseSelectTestCase extends DatabaseTestCase {
$result = $query->execute();
// Check that the aliases are being created the way we want.
- $this->assertEqual($name_field, 'test_name', t('Name field alias is correct.'));
+ $this->assertEqual($name_field, 'name', t('Name field alias is correct.'));
$this->assertEqual($age_field, 'age', t('Age field alias is correct.'));
// Ensure that we got the right record.
@@ -1034,7 +1034,7 @@ class DatabaseSelectTestCase extends DatabaseTestCase {
$result = $query->execute();
// Check that the aliases are being created the way we want.
- $this->assertEqual($name_field, 'test_name', t('Name field alias is correct.'));
+ $this->assertEqual($name_field, 'name', t('Name field alias is correct.'));
$this->assertEqual($age_field, 'double_age', t('Age field alias is correct.'));
// Ensure that we got the right record.