summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/simpletest/tests/upgrade/drupal-6.filled.database.php5
-rw-r--r--modules/simpletest/tests/upgrade/upgrade.taxonomy.test7
-rw-r--r--modules/taxonomy/taxonomy.install7
3 files changed, 17 insertions, 2 deletions
diff --git a/modules/simpletest/tests/upgrade/drupal-6.filled.database.php b/modules/simpletest/tests/upgrade/drupal-6.filled.database.php
index 2bd4a54e9..9f33ee0a7 100644
--- a/modules/simpletest/tests/upgrade/drupal-6.filled.database.php
+++ b/modules/simpletest/tests/upgrade/drupal-6.filled.database.php
@@ -13268,6 +13268,11 @@ db_insert('term_node')->fields(array(
->values(array(
'nid' => '1',
'vid' => '1',
+ 'tid' => '0',
+))
+->values(array(
+ 'nid' => '1',
+ 'vid' => '1',
'tid' => '1',
))
->values(array(
diff --git a/modules/simpletest/tests/upgrade/upgrade.taxonomy.test b/modules/simpletest/tests/upgrade/upgrade.taxonomy.test
index 72be9ef8a..d4c47f8de 100644
--- a/modules/simpletest/tests/upgrade/upgrade.taxonomy.test
+++ b/modules/simpletest/tests/upgrade/upgrade.taxonomy.test
@@ -117,6 +117,13 @@ class UpgradePathTaxonomyTestCase extends UpgradePathTestCase {
}
}
+ // nid 1, revision 1 had a bogus record in {term_node} pointing to term
+ // ID 0. Make sure we ignored this instead of generating a bogus term.
+ if ($node->nid == 1) {
+ $link = l($term->name, 'taxonomy/term/0');
+ $this->assertNoRaw($link, t('Bogus term (tid 0) is not displayed on node 1 vid %old_vid.', $args));
+ }
+
// The first 12 nodes have two revisions. For nodes with
// revisions, check that the oldest revision is associated only
// to terms whose ID is equal to the node ID or 49 less the node ID.
diff --git a/modules/taxonomy/taxonomy.install b/modules/taxonomy/taxonomy.install
index bd8110961..95c68fdee 100644
--- a/modules/taxonomy/taxonomy.install
+++ b/modules/taxonomy/taxonomy.install
@@ -566,8 +566,11 @@ function taxonomy_update_7005(&$sandbox) {
$sandbox['last'] = 0;
$sandbox['count'] = 0;
- $query = db_select('taxonomy_term_node', 't');
- $sandbox['total'] = $query->countQuery()->execute()->fetchField();
+ // Run the same joins as the query that is used later to retrieve the
+ // term_node data, this ensures that bad records in that table - for
+ // tids which aren't in taxonomy_term_data or nids which aren't in {node}
+ // are not included in the count.
+ $sandbox['total'] = db_query('SELECT COUNT(*) FROM {taxonomy_term_data} td INNER JOIN {taxonomy_term_node} tn ON td.tid = tn.tid INNER JOIN {node} n ON tn.nid = n.nid LEFT JOIN {node} n2 ON tn.vid = n2.vid')->fetchField();
// Use an inline version of Drupal 6 taxonomy_get_vocabularies() here since
// we can no longer rely on $vocabulary->nodes from the API function.