diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/simpletest/tests/upgrade/drupal-6.filled.database.php | 5 | ||||
-rw-r--r-- | modules/simpletest/tests/upgrade/upgrade.taxonomy.test | 7 | ||||
-rw-r--r-- | modules/taxonomy/taxonomy.install | 7 |
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. |