From cc88a199937bcd3001c95b4ce2772ec5cf236355 Mon Sep 17 00:00:00 2001
From: Angie Byron <webchick@24967.no-reply.drupal.org>
Date: Sat, 24 Oct 2009 01:22:28 +0000
Subject: [PATCH] #612920 by catch: Added required table columns so that
 update.php doesn't spew fatal errors.

---
 includes/update.inc           |  6 +++++-
 modules/system/system.install | 11 +++++++++++
 update.php                    | 11 ++++++++++-
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/includes/update.inc b/includes/update.inc
index f66e734c4a8c..f8c731e6d0e5 100644
--- a/includes/update.inc
+++ b/includes/update.inc
@@ -126,7 +126,11 @@ function update_fix_d7_requirements() {
     // Add the cache_path table.
     $schema['cache_path'] = drupal_get_schema_unprocessed('system', 'cache');
     $schema['cache_path']['description'] = 'Cache table used for path alias lookups.';
-    db_create_table('cache_path', $schema['cache_path']);
+
+    // system_update_7042() renames columns, but these are needed to bootstrap.
+    // add empty columns for now.
+    db_add_field('url_alias', 'source', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''));
+    db_add_field('url_alias', 'alias', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''));
 
     // Add column for locale context.
     if (db_table_exists('locales_source')) {
diff --git a/modules/system/system.install b/modules/system/system.install
index 87dfb8d1f860..663d67b76180 100644
--- a/modules/system/system.install
+++ b/modules/system/system.install
@@ -2832,6 +2832,16 @@ function system_update_7041() {
  * Rename dst and src to source and alias.
  */
 function system_update_7042() {
+  // update_fix_d7_requirements() adds 'fake' source and alias columns to
+  // allow bootstrap to run without fatal errors. Remove those columns now
+  // so that we can rename properly.
+  db_drop_field('url_alias', 'source');
+  db_drop_field('url_alias', 'alias');
+
+  // Add the cache_path table.
+  $schema['cache_path'] = drupal_get_schema_unprocessed('system', 'cache');
+  $schema['cache_path']['description'] = 'Cache table used for path alias lookups.';
+  db_create_table('cache_path', $schema['cache_path']);
   // Drop indexes.
   db_drop_index('url_alias', 'src_language_pid');
   db_drop_unique_key('url_alias', 'dst_language_pid');
@@ -2841,6 +2851,7 @@ function system_update_7042() {
   // Add indexes back.
   db_add_index('url_alias', 'source_language_pid', array('source', 'language', 'pid'));
   db_add_unique_key('url_alias', 'alias_language_pid', array('alias', 'language', 'pid'));
+
 }
 
 /**
diff --git a/update.php b/update.php
index 18612a50a453..89dc829f0740 100644
--- a/update.php
+++ b/update.php
@@ -334,6 +334,16 @@ function update_check_requirements() {
   install_goto('update.php?op=info');
 }
 
+// update_fix_d7_requirements() needs to run before bootstrapping beyond path.
+// So bootstrap to DRUPAL_BOOTSTRAP_LANGUAGE then include unicode.inc.
+
+drupal_bootstrap(DRUPAL_BOOTSTRAP_LANGUAGE);
+include_once DRUPAL_ROOT . '/includes/unicode.inc';
+
+update_fix_d7_requirements();
+
+// Now proceed with a full bootstrap.
+
 drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 drupal_maintenance_theme();
 
@@ -348,7 +358,6 @@ function update_check_requirements() {
   include_once DRUPAL_ROOT . '/includes/batch.inc';
   drupal_load_updates();
 
-  update_fix_d7_requirements();
   update_fix_compatibility();
 
   $op = isset($_REQUEST['op']) ? $_REQUEST['op'] : '';
-- 
GitLab